From 81c566c2fa32ad31b8b22f7ada161778150e51d1 Mon Sep 17 00:00:00 2001
From: Sriraman Tallam <tmsriram@google.com>
Date: Mon, 7 Jun 2010 05:24:37 +0000
Subject: [PATCH] re PR target/44319 (-fzee is mishandled)

2010-06-06  Sriraman Tallam  <tmsriram@google.com>

	PR target/44319
	* config/i386/i386.c (override_options): Turn zee pass on for level 2
	and above and defer till target is known.
	(optimization_options): Turn on zee pass if TARGET_64BIT is set and
	turn off otherwise.

From-SVN: r160357
---
 gcc/ChangeLog          |  8 ++++++++
 gcc/config/i386/i386.c | 13 +++++++++----
 2 files changed, 17 insertions(+), 4 deletions(-)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 4403b7245ee4..e8b617926572 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,11 @@
+2010-06-06  Sriraman Tallam  <tmsriram@google.com>
+
+	PR target/44319
+	* config/i386/i386.c (override_options): Turn zee pass on for level 2
+	and above and defer till target is known.
+	(optimization_options): Turn on zee pass if TARGET_64BIT is set and
+	turn off otherwise.
+	
 2010-05-25  Jan Hubicka  <jh@suse.cz>
 
 	* df-core.c (df_set_blocks): Use bitmap_head instead of bitmap.
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index 2a46f89cb248..8ae0c24a5b56 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -2891,6 +2891,8 @@ override_options (bool main_args_p)
      in case they weren't overwritten by command line options.  */
   if (TARGET_64BIT)
     {
+      if (flag_zee == 2)
+        flag_zee = 1;
       /* Mach-O doesn't support omitting the frame pointer for now.  */
       if (flag_omit_frame_pointer == 2)
 	flag_omit_frame_pointer = (TARGET_MACHO ? 0 : 1);
@@ -2901,6 +2903,8 @@ override_options (bool main_args_p)
     }
   else
     {
+      if (flag_zee == 2)
+        flag_zee = 0;
       if (flag_omit_frame_pointer == 2)
 	flag_omit_frame_pointer = 0;
       if (flag_asynchronous_unwind_tables == 2)
@@ -4390,10 +4394,6 @@ optimization_options (int level, int size ATTRIBUTE_UNUSED)
     flag_schedule_insns = 0;
 #endif
 
-  /* For -O2 and beyond, turn on -fzee for x86_64 target. */
-  if (level > 1 && TARGET_64BIT)
-    flag_zee = 1;
-
   if (TARGET_MACHO)
     /* The Darwin libraries never set errno, so we might as well
        avoid calling them when that's the only reason we would.  */
@@ -4405,6 +4405,11 @@ optimization_options (int level, int size ATTRIBUTE_UNUSED)
      specifying them, we will set the defaults in override_options.  */
   if (optimize >= 1)
     flag_omit_frame_pointer = 2;
+
+  /* For -O2 and beyond, turn on -fzee for x86_64 target. */
+  if (level > 1)
+    flag_zee = 2;
+
   flag_pcc_struct_return = 2;
   flag_asynchronous_unwind_tables = 2;
   flag_vect_cost_model = 1;
-- 
GitLab