$OpenBSD: patch-gcc_opts_c,v 1.1.1.1 2013/04/08 08:20:26 pascal Exp $
--- gcc/opts.c.orig	Tue Mar  5 07:01:13 2013
+++ gcc/opts.c	Fri Mar 22 22:19:20 2013
@@ -49,6 +49,9 @@ const char *const debug_type_names[] =
   ((strncmp (prefix, string, sizeof prefix - 1) == 0) \
    ? ((string += sizeof prefix - 1), 1) : 0)
 
+int warn_stack_larger_than;
+HOST_WIDE_INT stack_larger_than_size;
+
 void
 set_struct_debug_option (struct gcc_options *opts, location_t loc,
 			 const char *spec)
@@ -468,8 +471,6 @@ static const struct default_options default_options_ta
     { OPT_LEVELS_2_PLUS, OPT_fschedule_insns2, NULL, 1 },
 #endif
     { OPT_LEVELS_2_PLUS, OPT_fregmove, NULL, 1 },
-    { OPT_LEVELS_2_PLUS, OPT_fstrict_aliasing, NULL, 1 },
-    { OPT_LEVELS_2_PLUS, OPT_fstrict_overflow, NULL, 1 },
     { OPT_LEVELS_2_PLUS, OPT_freorder_blocks, NULL, 1 },
     { OPT_LEVELS_2_PLUS, OPT_freorder_functions, NULL, 1 },
     { OPT_LEVELS_2_PLUS, OPT_ftree_vrp, NULL, 1 },
@@ -488,6 +489,7 @@ static const struct default_options default_options_ta
     { OPT_LEVELS_2_PLUS, OPT_fhoist_adjacent_loads, NULL, 1 },
 
     /* -O3 optimizations.  */
+    { OPT_LEVELS_3_PLUS, OPT_fstrict_aliasing, NULL, 1 },
     { OPT_LEVELS_3_PLUS, OPT_ftree_loop_distribute_patterns, NULL, 1 },
     { OPT_LEVELS_3_PLUS, OPT_fpredictive_commoning, NULL, 1 },
     /* Inlining of functions reducing size is a good idea with -Os
@@ -701,6 +703,8 @@ finish_options (struct gcc_options *opts, struct gcc_o
 
   if (!opts->x_flag_opts_finished)
     {
+      if (opts->x_flag_pic || opts->x_profile_flag)
+        opts->x_flag_pie = 0;
       if (opts->x_flag_pie)
 	opts->x_flag_pic = opts->x_flag_pie;
       if (opts->x_flag_pic && !opts->x_flag_pie)
@@ -1435,6 +1439,11 @@ common_handle_option (struct gcc_options *opts,
     case OPT_Wframe_larger_than_:
       opts->x_frame_larger_than_size = value;
       opts->x_warn_frame_larger_than = value != -1;
+      break;
+
+    case OPT_Wstack_larger_than_:
+      stack_larger_than_size = value;
+      warn_stack_larger_than = stack_larger_than_size != -1;
       break;
 
     case OPT_Wstack_usage_:
