On Mon, Aug 7, 2017 at 6:32 AM, Michael Matz <m...@suse.de> wrote: > Hi, > > On Mon, 7 Aug 2017, H.J. Lu wrote: > >> >> This will break unwinders relying on frame pointers to exist on all >> >> functions, for which projects conciously forced a frame pointer with this >> >> option. I don't think we can simply override user specified explicit >> >> wishes in this way, presumably they had a reason to use it. >> > >> > Hm... yes, you are right. >> > >> > HJ, please revert the patch. >> > >> >> Is there a testcae? I'd like to add it. > > Trivial change of your first example, see below. > >> [hjl@gnu-tools-1 pr81736]$ clang -S -O2 -fno-omit-frame-pointer x.i >> [hjl@gnu-tools-1 pr81736]$ cat x.s > [... no frame ...] >> [hjl@gnu-tools-1 pr81736]$ >> >> Does it mean clang is broken? > > In my book, yes.
Does GCC do this for all targets or just x86? > > Ciao, > Michael. > > Index: gcc/testsuite/gcc.target/i386/force-frame.c > =================================================================== > --- gcc/testsuite/gcc.target/i386/force-frame.c (revision 0) > +++ gcc/testsuite/gcc.target/i386/force-frame.c (working copy) > @@ -0,0 +1,14 @@ > +/* { dg-do compile } */ > +/* { dg-options "-O2 -fno-omit-frame-pointer" } */ > + > +int > +#ifndef __x86_64__ > +__attribute__((regparm(3))) > +#endif > +foo (int i) > +{ > + return i; > +} > + > +/* The user wants a frame pointer. */ > +/* { dg-final { scan-assembler "%\[re\]bp" } } */ I am looking for a run-time test which breaks unwinder. -- H.J.