aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.4.3/gcc/config/i386/i386.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc-4.4.3/gcc/config/i386/i386.c')
-rw-r--r--gcc-4.4.3/gcc/config/i386/i386.c21
1 files changed, 20 insertions, 1 deletions
diff --git a/gcc-4.4.3/gcc/config/i386/i386.c b/gcc-4.4.3/gcc/config/i386/i386.c
index b237ed869..2ca822040 100644
--- a/gcc-4.4.3/gcc/config/i386/i386.c
+++ b/gcc-4.4.3/gcc/config/i386/i386.c
@@ -1810,6 +1810,9 @@ extern int ix86_force_align_arg_pointer;
static const char ix86_force_align_arg_pointer_string[]
= "force_align_arg_pointer";
+/* Stack protector option. */
+enum stack_protector_guard ix86_stack_protector_guard;
+
static rtx (*ix86_gen_leave) (void);
static rtx (*ix86_gen_pop1) (rtx);
static rtx (*ix86_gen_add3) (rtx, rtx, rtx);
@@ -3435,6 +3438,22 @@ override_options (bool main_args_p)
flag_stack_check = 0;
target_flags |= MASK_STACK_PROBE;
}
+
+ /* Handle stack protector */
+ if (ix86_stack_protector_guard_string != 0)
+ {
+ if (!strcmp (ix86_stack_protector_guard_string, "tls"))
+ ix86_stack_protector_guard = SSP_TLS;
+ else if (!strcmp (ix86_stack_protector_guard_string, "global"))
+ ix86_stack_protector_guard = SSP_GLOBAL;
+ else
+ error ("bad value (%s) for %sstack-protector-guard=%s %s",
+ ix86_stack_protector_guard, prefix, suffix, sw);
+ }
+ else
+ {
+ ix86_stack_protector_guard = TARGET_HAS_BIONIC? SSP_GLOBAL : SSP_TLS;
+ }
}
/* Update register usage after having seen the compiler flags. */
@@ -29392,7 +29411,7 @@ static bool
ix86_scalar_mode_supported_p (enum machine_mode mode)
{
if (DECIMAL_FLOAT_MODE_P (mode))
- return true;
+ return default_decimal_float_supported_p ();
else if (mode == TFmode)
return true;
else