AaronBallman wrote:

> I'm somewhat concerned about the default for `-E` being to explode `#embed` 
> into the comma-separated raw integers. Even with moderately-sized embeds, I 
> think it'll generate unusably-bloated output. The human-readability of a big 
> list of integers is not better than embedded base64 -- and actually, seems 
> more of a pain to decode.
> 
> I think the most user-friendly behavior would be:
> 
>     * `-E`: convert `#embed "file"` into `#embed_base64 
> "base64-file-contents"`. This preserves the property of the output not 
> depending on other files, but doesn't make it hugely-bloated.
> 
>     * `-E -dE`: preserve any `#embed` directive as-is, referring to the 
> external file.
> 
>     * Potentially another `-d?` mode to explode `#embed` into the raw 
> integers (like you had proposed for the default behavior) -- though I'm not 
> sure that's really going to be useful.

I agree with you that the exploded list of integers will potentially add a lot 
of content to the preprocessed output. However, the behavior of `-E` has always 
been to produce a fully preprocessed representation of the original source; 
your design breaks that. A significant use case for `-E` is as a way to debug 
surprising preprocessor behavior. So it depends on *why* you're using `-E` as 
to whether the contents are salient or not. Perhaps your approach is still 
reasonable, but I would personally find it to be a surprising change from the 
usual expectations.

In some situations, I suspect the preprocessed data may not be crucial to 
explode out. e.g., as a braced initializer for an array. But there are other 
situations where the base64 data is not useful. e.g., as an initializer for a 
structure, as a list of arguments to a function, etc. I anticipate use to 
predominately be in an initializer lists for an array but we have no actual 
usage experience with the feature either. That's why I lean towards "do the 
most expected thing by default" which would be to emit the actual list of 
integers even if it's large.

https://github.com/llvm/llvm-project/pull/68620
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to