On December 7, 2016 6:27:56 PM GMT+01:00, Florian Weimer <f...@deneb.enyo.de> wrote: >* Alexander Monakov: > >> On Wed, 7 Dec 2016, Segher Boessenkool wrote: >>> > For example, this might have impact on writing test for GCC: >>> > >>> > When I am writing a test with noinline + noclone then my >>> > expectation is that no such propagation happens, because >>> > otherwise a test might turn trivial... >>> >>> The usual ways to prevent that are to add some volatile, or an >>> asm("" : "+g"(some_var)); etc. >> >> No, that doesn't sound right. As far as I can tell from looking >> that the GCC testsuite, the prevailing way is actually the >> noinline+noclone combo, not the per-argument asms or volatiles. > >Agreed, that's what I've been using in the past for glibc test cases. > >If that doesn't work, we'll need something else. Separate compilation >of test cases just to thwart compiler optimizations is a significant >burden, and will stop working once we have LTO anyway. > >What about making the function definitions weak? Would that be more >reliable?
Adding attribute((used)) should do the trick. It introduces unknown callers and thus without cloning disables IPA. Richard.