[Bug target/84521] [8 Regression] aarch64: Frame-pointer corruption with __builtin_setjmp/__builtin_longjmp and -fomit-frame-pointer

2018-03-08 Thread ebotcazou at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84521 --- Comment #23 from Eric Botcazou --- > Where exactly is this documented? I can't find no references to > __builtin_setjmp or __builtin_longjmp in > https://gcc.gnu.org/onlinedocs/gcc-7.3.0/gcc.pdf or >

[Bug target/84521] [8 Regression] aarch64: Frame-pointer corruption with __builtin_setjmp/__builtin_longjmp and -fomit-frame-pointer

2018-03-08 Thread wilco at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84521 --- Comment #22 from Wilco --- (In reply to Eric Botcazou from comment #21) > > You can use __builtin_setjmp and __builtin_longjmp in the same function, > > only if they use a different buffer. Otherwise it is invalid. > > Yes, that's invalid.

[Bug target/84521] [8 Regression] aarch64: Frame-pointer corruption with __builtin_setjmp/__builtin_longjmp and -fomit-frame-pointer

2018-03-08 Thread ebotcazou at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84521 --- Comment #21 from Eric Botcazou --- > You can use __builtin_setjmp and __builtin_longjmp in the same function, > only if they use a different buffer. Otherwise it is invalid. Yes, that's invalid. > CCing Eric for the other __builtin_setjmp

[Bug target/84521] [8 Regression] aarch64: Frame-pointer corruption with __builtin_setjmp/__builtin_longjmp and -fomit-frame-pointer

2018-03-08 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84521 Jakub Jelinek changed: What|Removed |Added CC||ebotcazou at gcc dot gnu.org ---

[Bug target/84521] [8 Regression] aarch64: Frame-pointer corruption with __builtin_setjmp/__builtin_longjmp and -fomit-frame-pointer

2018-03-08 Thread wilco at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84521 --- Comment #19 from Wilco --- (In reply to sudi from comment #17) > I looked up what other targets were doing and one thing found to be > interesting was that a lot of them are defining the target hook > TARGET_BUILTIN_SETJMP_FRAME_VALUE. In

[Bug target/84521] [8 Regression] aarch64: Frame-pointer corruption with __builtin_setjmp/__builtin_longjmp and -fomit-frame-pointer

2018-03-08 Thread ramana.radhakrishnan at foss dot arm.com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84521 --- Comment #18 from ramana.radhakrishnan at foss dot arm.com --- On 07/03/2018 18:59, sudi at gcc dot gnu.org wrote: > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84521 > > --- Comment #17 from sudi at gcc dot gnu.org --- > I looked up what

[Bug target/84521] [8 Regression] aarch64: Frame-pointer corruption with __builtin_setjmp/__builtin_longjmp and -fomit-frame-pointer

2018-03-07 Thread sudi at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84521 --- Comment #17 from sudi at gcc dot gnu.org --- I looked up what other targets were doing and one thing found to be interesting was that a lot of them are defining the target hook TARGET_BUILTIN_SETJMP_FRAME_VALUE. In AArch64 case I am

[Bug target/84521] [8 Regression] aarch64: Frame-pointer corruption with __builtin_setjmp/__builtin_longjmp and -fomit-frame-pointer

2018-03-06 Thread sudi at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84521 --- Comment #16 from sudi at gcc dot gnu.org --- So I think I would go with Jakub's suggestion of defining calls_builtin_setjmp and use that in aarch64_layout_frame for cfun->machine->frame.emit_frame_chain. I am still investigating Wilco's

[Bug target/84521] [8 Regression] aarch64: Frame-pointer corruption with __builtin_setjmp/__builtin_longjmp and -fomit-frame-pointer

2018-03-06 Thread sudi at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84521 sudi at gcc dot gnu.org changed: What|Removed |Added Status|NEW |ASSIGNED

[Bug target/84521] [8 Regression] aarch64: Frame-pointer corruption with __builtin_setjmp/__builtin_longjmp and -fomit-frame-pointer

2018-02-26 Thread ramana at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84521 --- Comment #15 from Ramana Radhakrishnan --- Author: ramana Date: Mon Feb 26 09:25:21 2018 New Revision: 257984 URL: https://gcc.gnu.org/viewcvs?rev=257984=gcc=rev Log: [Patch AArch64] Turn on frame pointer / partial fix for PR84521 This

[Bug target/84521] [8 Regression] aarch64: Frame-pointer corruption with __builtin_setjmp/__builtin_longjmp and -fomit-frame-pointer

2018-02-23 Thread wilco at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84521 --- Comment #14 from Wilco --- (In reply to Jakub Jelinek from comment #13) > Even when you find another PR for __builtin_longjmp (clearly RA related), > that doesn't mean that __builtin_{setjmp,longjmp} are totally broken and > should not be

[Bug target/84521] [8 Regression] aarch64: Frame-pointer corruption with __builtin_setjmp/__builtin_longjmp and -fomit-frame-pointer

2018-02-23 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84521 --- Comment #13 from Jakub Jelinek --- Even when you find another PR for __builtin_longjmp (clearly RA related), that doesn't mean that __builtin_{setjmp,longjmp} are totally broken and should not be fixed on aarch64. As ruby (which for some

[Bug target/84521] [8 Regression] aarch64: Frame-pointer corruption with __builtin_setjmp/__builtin_longjmp and -fomit-frame-pointer

2018-02-22 Thread wilco at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84521 --- Comment #12 from Wilco --- Note PR64242 is related (also frame pointer corruption by __builtin_longjmp).

[Bug target/84521] [8 Regression] aarch64: Frame-pointer corruption with __builtin_setjmp/__builtin_longjmp and -fomit-frame-pointer

2018-02-22 Thread wilco at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84521 --- Comment #11 from Wilco --- (In reply to Ramana Radhakrishnan from comment #10) > (In reply to Jakub Jelinek from comment #4) > > Is the requirement just for functions that contain setjmp? If so, the > > backend could just force frame

[Bug target/84521] [8 Regression] aarch64: Frame-pointer corruption with __builtin_setjmp/__builtin_longjmp and -fomit-frame-pointer

2018-02-22 Thread ramana at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84521 --- Comment #10 from Ramana Radhakrishnan --- (In reply to Jakub Jelinek from comment #4) > Is the requirement just for functions that contain setjmp? If so, the > backend could just force frame pointers in cfun->calls_setjmp functions. I

[Bug target/84521] [8 Regression] aarch64: Frame-pointer corruption with __builtin_setjmp/__builtin_longjmp and -fomit-frame-pointer

2018-02-22 Thread wilco at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84521 --- Comment #9 from Wilco --- (In reply to Jakub Jelinek from comment #7) > cfun->has_nonlocal_label instead of cfun->calls_setjmp would cover > __builtin_setjmp. Do non-local labels do the same odd thing? It seems to me if the mid-end

[Bug target/84521] [8 Regression] aarch64: Frame-pointer corruption with __builtin_setjmp/__builtin_longjmp and -fomit-frame-pointer

2018-02-22 Thread wilco at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84521 --- Comment #8 from Wilco --- (In reply to Jakub Jelinek from comment #7) > cfun->has_nonlocal_label instead of cfun->calls_setjmp would cover > __builtin_setjmp. > > aarch64_frame_pointer_required would force frame_pointer_needed and thus be >

[Bug target/84521] [8 Regression] aarch64: Frame-pointer corruption with __builtin_setjmp/__builtin_longjmp and -fomit-frame-pointer

2018-02-22 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84521 --- Comment #7 from Jakub Jelinek --- cfun->has_nonlocal_label instead of cfun->calls_setjmp would cover __builtin_setjmp. aarch64_frame_pointer_required would force frame_pointer_needed and thus be true in that case too. But sure, if it

[Bug target/84521] [8 Regression] aarch64: Frame-pointer corruption with __builtin_setjmp/__builtin_longjmp and -fomit-frame-pointer

2018-02-22 Thread wilco at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84521 --- Comment #6 from Wilco --- (In reply to Jakub Jelinek from comment #5) > (completely untested) would require frame pointers for all setjmp calls, not > just __builtin_setjmp. That's the correct approach indeed, however

[Bug target/84521] [8 Regression] aarch64: Frame-pointer corruption with __builtin_setjmp/__builtin_longjmp and -fomit-frame-pointer

2018-02-22 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84521 Jakub Jelinek changed: What|Removed |Added CC||jakub at gcc dot gnu.org Target

[Bug target/84521] [8 Regression] aarch64: Frame-pointer corruption with __builtin_setjmp/__builtin_longjmp and -fomit-frame-pointer

2018-02-22 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84521 --- Comment #4 from Jakub Jelinek --- Is the requirement just for functions that contain setjmp? If so, the backend could just force frame pointers in cfun->calls_setjmp functions. If not, even if the default is tweaked again to be