summaryrefslogtreecommitdiff
path: root/gcc/toplev.c
diff options
context:
space:
mode:
authorrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>2005-10-05 18:19:26 +0000
committerrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>2005-10-05 18:19:26 +0000
commit77ff57c87569b311a41b41072b38af21004dc7b2 (patch)
treed99bcd5da2f6437d8312957a5442aca23f22ce74 /gcc/toplev.c
parentcd2784c7ed40f8d22d1904e94f2c84e631948a2d (diff)
downloadgcc-77ff57c87569b311a41b41072b38af21004dc7b2.tar.gz
PR target/23602
* toplev.c (process_options): Warn about unsupported combinations of unwind tables and omit-frame-pointer. * config/i386/i386.c (override_options): Similarly. Enable accumulate-outgoing-args if not explicitly disabled. testsuite/ * g++.dg/eh/omit-frame-pointer.C: Remove i?86 specific options. * g++.dg/eh/omit-frame-pointer2.C: Likewise. libjava/ * configure.host (i?86-*): Set -fomit-frame-pointer in libgcj_flags, but not BACKTRACESPEC. (x86_64-*): Similarly. Don't set -ffloat-store in 64-bit mode. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@105009 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/toplev.c')
-rw-r--r--gcc/toplev.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/gcc/toplev.c b/gcc/toplev.c
index b9631709975..796c7bf87e5 100644
--- a/gcc/toplev.c
+++ b/gcc/toplev.c
@@ -1778,6 +1778,18 @@ process_options (void)
}
if (!flag_stack_protect)
warn_stack_protect = 0;
+
+ /* ??? Unwind info is not correct around the CFG unless either a frame
+ pointer is present or A_O_A is set. Fixing this requires rewriting
+ unwind info generation to be aware of the CFG and propagating states
+ around edges. */
+ if (flag_unwind_tables && !ACCUMULATE_OUTGOING_ARGS
+ && flag_omit_frame_pointer)
+ {
+ warning (0, "unwind tables currently requires a frame pointer "
+ "for correctness");
+ flag_omit_frame_pointer = 0;
+ }
}
/* Initialize the compiler back end. */