> * Various cases of front-end folding are to get better warnings, e.g. to > detect that in a signed-to-unsigned conversion the converted value is in > fact never negative. I don't see this issue mentioned in the document.
Tree front-end folding, or more precisely folding of expressions generated for types, is required when types with variable size are first-class citizens like in Ada. In practice, something even more powerful is required, i.e. outlining (called from stor-layout.c:variable_size) and back-inlining of the expressions (tree-inline.c:maybe_inline_call_in_expr), if you want to be able to compile big codebases with a reasonable amount of resources. -- Eric Botcazou