summaryrefslogtreecommitdiff
path: root/gcc/opts.c
diff options
context:
space:
mode:
authorjanis <janis@138bc75d-0d04-0410-961f-82ee72b054a4>2008-09-05 17:13:52 +0000
committerjanis <janis@138bc75d-0d04-0410-961f-82ee72b054a4>2008-09-05 17:13:52 +0000
commit91bfa5c631a7e3927825bbb0fa0b7a0d3683a589 (patch)
tree2f14761ac8f7045e029191d17abb04401fb2d3ee /gcc/opts.c
parent3a4d362a80dfcd16e50ac425037c05e814c2d1f1 (diff)
downloadgcc-91bfa5c631a7e3927825bbb0fa0b7a0d3683a589.tar.gz
PR target/37283
* opts.c (decode_options): Handle more relationships among unit-at-a-time, toplevel-reorder, and section-anchors. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@140040 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/opts.c')
-rw-r--r--gcc/opts.c30
1 files changed, 22 insertions, 8 deletions
diff --git a/gcc/opts.c b/gcc/opts.c
index 9bae6ea8349..080f8afbb18 100644
--- a/gcc/opts.c
+++ b/gcc/opts.c
@@ -1008,21 +1008,35 @@ decode_options (unsigned int argc, const char **argv)
handle_options (argc, argv, lang_mask);
- /* -fno-unit-at-a-time and -fno-toplevel-reorder handling. */
+ /* Handle related options for unit-at-a-time, toplevel-reorder, and
+ section-anchors. */
if (!flag_unit_at_a_time)
{
+ if (flag_section_anchors == 1)
+ error ("Section anchors must be disabled when unit-at-a-time "
+ "is disabled.");
flag_section_anchors = 0;
+ if (flag_toplevel_reorder == 1)
+ error ("Toplevel reorder must be disabled when unit-at-a-time "
+ "is disabled.");
flag_toplevel_reorder = 0;
}
- else if (!optimize && flag_toplevel_reorder == 2)
- /* We disable toplevel reordering at -O0 to disable transformations that
- might be surprising to end users and to get -fno-toplevel-reorder
- tested, but we keep section anchors. */
- flag_toplevel_reorder = 0;
- else if (!flag_toplevel_reorder)
+ if (!optimize)
+ {
+ /* Unless the user has asked for section anchors, we disable toplevel
+ reordering at -O0 to disable transformations that might be surprising
+ to end users and to get -fno-toplevel-reorder tested. */
+ if (flag_toplevel_reorder == 2 && flag_section_anchors != 1)
+ {
+ flag_toplevel_reorder = 0;
+ flag_section_anchors = 0;
+ }
+ }
+ if (!flag_toplevel_reorder)
{
if (flag_section_anchors == 1)
- error ("section anchors must be disabled when toplevel reorder is disabled");
+ error ("section anchors must be disabled when toplevel reorder"
+ " is disabled");
flag_section_anchors = 0;
}