On 17 April 2006 23:47, David Nicol wrote: > Thank you. Nobody is aware of such a problem.
There is no problem. What you described - at least, in the terms you used to describe it in your first post - is exactly what the compiler does and exactly what it should do: "GCC appears to be treating my long macro as some kind of block and throwing out variables that are not used within it instead of simply pasting the code in at the macro invocation point." What exactly do you think gcc does with the code after "simply pasting [it] in"? Yes, it treats the entire function as a block and optimises it. That's part of the process of compilation. Even at -O0 there are some basic processes of data life and flow analysis occurring. The variables will probably have had stack slots assigned to them (that simply don't get used) at O0. How you can infer that gcc has "thrown them out" when by your own admission the code doesn't use them is a mystery to me. If you have mysterious segfaults that are fixed by placing a printf call, that almost certainly reflects a bug in your code; most likely an aliasing problem that is leading the register allocator to think something's in one place when it's actually somewhere else, but without any reproducible testcase nobody can help you with that. Hence the requests to visit the bug report page at the gcc site and refashion your query along the lines suggested there. cheers, DaveK -- Can't think of a witty .sigline today....