On Mon, Feb 1, 2016 at 1:51 PM, Bernd Schmidt <bschm...@redhat.com> wrote: > On 02/01/2016 01:49 PM, Richard Biener wrote: > >> What prevents motion of those across a stack adjustment (thus a place >> they are _not_ valid?) > > > If the address is SP-based, dependencies on the address register. If you're > thinking prologue stack adjustments, ports where this could be an issue emit > suitable barrier insns.
Ok. Just I remember we can't mark non-trapping memory references in general as they might be non-trapping only conditional, aka if (p != NULL) *p = 1; I suppose stack accesses are special enough where issues like that can't pop up? I can think of foo (int i) { char *p = alloca(10); if (i < 10) p[i] = 1; } or stuff like that. But I guess your proposal is to handle the simple non-variable-indexed cases and leave the rest as always conservatively trapping. Richard. > > Bernd >