diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 4059bb161ba..c4932442824 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2007-06-06 Eric Christopher + + * config/i386/i386.c (override_options): Move handling + of TARGET_SUBTARGET* earlier. + 2007-06-06 Paolo Bonzini * 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 * 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 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 * 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 7046ae50c31..c23b5b796e8 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