On 10/31/19 7:00 PM, Pedro Alves wrote: > On 10/31/19 4:53 PM, Simon Marchi wrote: >> On 2019-10-31 12:42 p.m., Pedro Alves wrote: >>> On 10/30/19 9:56 PM, Bernd Edlinger wrote: >>>> +if { [prepare_for_testing "failed to prepare" "skip2" \ >>>> + {skip2.c skip1.c } \ >>>> + {debug nowarnings optimize=-O2}] } { >>> >>> Instead of -O2, could you make this use -O0 (the default), >>> and then use attribute((always_inline)) to force inlining? >>> We do that in some tests. E.g., gdb.opt/inline-locals.c. >> >> I think that's a good suggestion, but just be aware that there used to be >> some problems with always_inline, e.g.: > > I don't think always_inline changes anything in the debug info special, > it just tells the compiler to inline the function even at -O0, which is > what we're after. > >> >> https://sourceware.org/bugzilla/show_bug.cgi?id=13263 > > This one seems to be about attribute((artificial)), and the desire > to not step into such functions automatically: > > "Given that I marked the function always_inline and artificial, I > was expecting not to step into its body." > >> https://sourceware.org/bugzilla/show_bug.cgi?id=12429 >> > > This one seems like a generic inlining issue. > >> I'm not sure if those are still valid. If they are, it might be more difficult >> that expected to use always_inline. > I don't think always_inline is anything special compared to inlining > because of -O2. > > Thanks, > Pedro Alves > Ah, thanks for that hint! always_inline works quite well. The debug session started (using gcc 4.8.4) with -O2 -g on the line with "{" in main, and with -O0 -g at the first real statement, so I had to remove one step. I did not worry about it initially, but now I agree that would have caused trouble. I attached both parts of the patch, the fist part unchanged from previous. The test case now makes sure to not repeat the names. Thanks Bernd.