https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105046
Elliott M <ehem+gccbugs at m5p dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- Component|middle-end |c --- Comment #4 from Elliott M <ehem+gccbugs at m5p dot com> --- I had guessed this was exposing internals, I had hopes those were the internals from a score of years ago and could readily be resolved now. This is valuable for interfacing with things which have calling conventions distinct enough not to work with pure-C, but similar enough to only need 1-2 assembly instructions. Notably avoiding lvalues is valuable for things which could otherwise fit into macros. Jakub Jelinek, your example fails, `dummy` is an lvalue. Notably if this is part of a `#define SOME_MACRO(foo)`, then `SOME_MACRO(dummy)` won't work.