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. 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" } } */