https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66086
--- Comment #2 from Andrea Griffini <agriff at tin dot it> --- (In reply to Andrea Griffini from comment #1) > Not sure if this helps but I found that when compiling -m32 -O -fno-tree-dce > the output of the program becomes correct but the generated code is not. > > More specifically the non-inlined version of `doit` contains no > initialization of the allocated memory, but the inlined call in `main` does > the allocation and does NOT initialize the memory but loads the expected > result 3.14 directly in the stack before calling printf. > > Without -fno-tree-dce the inilined version simply reads the memory instead > (that has not been initialized) and produces the wrong output. Sorry... this happens at -O2, not at -O