diff options
author | Eric Christopher <echristo@gcc.gnu.org> | 2007-06-06 18:39:25 +0000 |
---|---|---|
committer | Eric Christopher <echristo@gcc.gnu.org> | 2007-06-06 18:39:25 +0000 |
commit | d6b0b376ea57964c73786fa1730b15cafeb7ea07 (patch) | |
tree | 099e0e3e9febcb39755dfe14557dbe9b97407f60 | |
parent | 1fd994f19119dfca57de3af7d2c6a3bc431e56e4 (diff) | |
download | gcc-d6b0b376ea57964c73786fa1730b15cafeb7ea07.zip gcc-d6b0b376ea57964c73786fa1730b15cafeb7ea07.tar.gz gcc-d6b0b376ea57964c73786fa1730b15cafeb7ea07.tar.bz2 |
i386.c (override_options): Move handling of TARGET_SUBTARGET* earlier.
2007-06-06 Eric Christopher <echristo@apple.com>
* config/i386/i386.c (override_options): Move handling
of TARGET_SUBTARGET* earlier.
From-SVN: r125497
-rw-r--r-- | gcc/ChangeLog | 13 | ||||
-rw-r--r-- | gcc/config/i386/i386.c | 54 |
2 files changed, 36 insertions, 31 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 4059bb1..c493244 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2007-06-06 Eric Christopher <echristo@apple.com> + + * config/i386/i386.c (override_options): Move handling + of TARGET_SUBTARGET* earlier. + 2007-06-06 Paolo Bonzini <bonzini@gnu.org> * genmodes.c (tagged_printf, emit_insn_modes_h): Don't @@ -14,7 +19,7 @@ non-removed insns. (rtl_delete_block, rtl_merge_blocks): Pass true to delete_insn_chain. (delete_insn_chain_and_edges, try_redirect_by_replacing_jump, - rtl_tidy_fallthru_edge, cfg_layout_merge_blocks): Pass false + rtl_tidy_fallthru_edge, cfg_layout_merge_blocks): Pass false to delete_insn_chain. (rtl_verify_flow_info_1): Verify that the insns in header and footer do not have bb field set. @@ -127,7 +132,7 @@ Sebastian Pop <sebpop@gmail.com> * lambda.h (build_linear_expr): New. - * lambda-code.c (lbv_to_gcc_expression, lle_to_gcc_expression): + * lambda-code.c (lbv_to_gcc_expression, lle_to_gcc_expression): Use build_linear_expr, call fold and force_gimple_operand. (lambda_loopnest_to_gcc_loopnest): Check that there is something to insert. @@ -138,7 +143,7 @@ PR preprocessor/23479 * doc/extend.texi: Document the 0b-prefixed binary integer constant extension. - + 2007-06-05 Uros Bizjak <ubizjak@gmail.com> PR tree-optimization/32215 @@ -437,7 +442,7 @@ * config/mips/mips.c (mips_output_mi_thunk): Only load gp if not LOADGP_ABSOLUTE and not binds_local_p. - + 2007-06-01 Geoffrey Keating <geoffk@apple.com> * config/darwin.h (LINK_SPEC): Pass -fpie through to the linker. diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index 7046ae5..c23b5b7 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -2219,6 +2219,33 @@ override_options (void) error ("pc%d is not valid precision setting (32, 64 or 80)", i); } + if (TARGET_64BIT) + { + target_flags |= TARGET_SUBTARGET64_DEFAULT & ~target_flags_explicit; + + /* Enable by default the SSE and MMX builtins. Do allow the user to + explicitly disable any of these. In particular, disabling SSE and + MMX for kernel code is extremely useful. */ + ix86_isa_flags + |= ((OPTION_MASK_ISA_SSE2 | OPTION_MASK_ISA_SSE | OPTION_MASK_ISA_MMX + | TARGET_SUBTARGET64_ISA_DEFAULT) & ~ix86_isa_flags_explicit); + + if (TARGET_RTD) + warning (0, "-mrtd is ignored in 64bit mode"); + } + else + { + target_flags |= TARGET_SUBTARGET32_DEFAULT & ~target_flags_explicit; + + ix86_isa_flags + |= TARGET_SUBTARGET32_ISA_DEFAULT & ~ix86_isa_flags_explicit; + + /* i386 ABI does not specify red zone. It still makes sense to use it + when programmer takes care to stack from being destroyed. */ + if (!(target_flags_explicit & MASK_NO_RED_ZONE)) + target_flags |= MASK_NO_RED_ZONE; + } + /* Keep nonleaf frame pointers. */ if (flag_omit_frame_pointer) target_flags &= ~MASK_OMIT_LEAF_FRAME_POINTER; @@ -2282,33 +2309,6 @@ override_options (void) if (TARGET_ABM) x86_popcnt = true; - if (TARGET_64BIT) - { - target_flags |= TARGET_SUBTARGET64_DEFAULT & ~target_flags_explicit; - - /* Enable by default the SSE and MMX builtins. Do allow the user to - explicitly disable any of these. In particular, disabling SSE and - MMX for kernel code is extremely useful. */ - ix86_isa_flags - |= ((OPTION_MASK_ISA_SSE2 | OPTION_MASK_ISA_SSE | OPTION_MASK_ISA_MMX - | TARGET_SUBTARGET64_ISA_DEFAULT) & ~ix86_isa_flags_explicit); - - if (TARGET_RTD) - warning (0, "-mrtd is ignored in 64bit mode"); - } - else - { - target_flags |= TARGET_SUBTARGET32_DEFAULT & ~target_flags_explicit; - - ix86_isa_flags - |= TARGET_SUBTARGET32_ISA_DEFAULT & ~ix86_isa_flags_explicit; - - /* i386 ABI does not specify red zone. It still makes sense to use it - when programmer takes care to stack from being destroyed. */ - if (!(target_flags_explicit & MASK_NO_RED_ZONE)) - target_flags |= MASK_NO_RED_ZONE; - } - /* Validate -mpreferred-stack-boundary= value, or provide default. The default of 128 bits is for Pentium III's SSE __m128. We can't change it because of optimize_size. Otherwise, we can't mix object |