[adding gcc@ for the compiler-testsuite-related discussion, please drop either gcc@ or gcc-help@ from Cc: as appropriate in replies] 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. This behavior is new in gcc-7 due to new IPA-VRP functionality. So -fno-ipa-vrp gets the old behavior. I think from the testsuite perspective the situation got a bit worse due to this, as now in existing testcases stuff can get propagated where the testcase used noinline+noclone to suppress propagation. This means that some testcases may get weaker and no longer test what they were supposed to. And writing new testcases gets less convenient too. However, this actually demonstrates how the noinline+noclone was not future-proof, and in a way backfired now. Should there be, ideally, a single 'noipa' attribute encompassing noinline, noclone, -fno-ipa-vrp, -fno-ipa-ra and all future transforms using inter-procedural knowledge? Alexander