This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

PATCH: [4.8 regression] bootstrap failure: "MASK_LONG_DOUBLE_128" redefined


Hi,

sparc has

Mask(LONG_DOUBLE_128)

Target Report RejectNegative Mask(LONG_DOUBLE_128)

Mask(LONG_DOUBLE_128) is defined as extra_masks, which leads to
MASK_LONG_DOUBLE_128 be defined twice.  This patch checks if
MASK_ and TARGET_ macros are defined for extra_masks.  Tested
on Linux/x86 and sparc64-linux.  OK to install?

Thanks.


H.J.
2012-04-20  H.J. Lu  <hongjiu.lu@intel.com>

	PR bootstrap/52878
	* opth-gen.awk: Check if MASK_ and TARGET_ macros are defined for
	extra_masks.

diff --git a/gcc/opth-gen.awk b/gcc/opth-gen.awk
index 9a7b6c3..a600b30 100644
--- a/gcc/opth-gen.awk
+++ b/gcc/opth-gen.awk
@@ -314,12 +314,14 @@ for (i = 0; i < n_opts; i++) {
 			mask = "OPTION_MASK_"
 			if (host_wide_int[vname] == "yes")
 				mask_1 = "HOST_WIDE_INT_1"
-		}
+		} else
+			extra_mask_bits[name] = 1
 		print "#define " mask name " (" mask_1 " << " masknum[vname]++ ")"
 	}
 }
 for (i = 0; i < n_extra_masks; i++) {
-	print "#define MASK_" extra_masks[i] " (1 << " masknum[""]++ ")"
+	if (extra_mask_bits[extra_masks[i]] == 0)
+		print "#define MASK_" extra_masks[i] " (1 << " masknum[""]++ ")"
 }
 
 for (var in masknum) {
@@ -355,14 +357,16 @@ for (i = 0; i < n_opts; i++) {
 			vname = "target_flags"
 			macro = "TARGET_"
 			mask = "MASK_"
+			extra_mask_macros[name] = 1
 		}
 		print "#define " macro name \
 		      " ((" vname " & " mask name ") != 0)"
 	}
 }
 for (i = 0; i < n_extra_masks; i++) {
-	print "#define TARGET_" extra_masks[i] \
-	      " ((target_flags & MASK_" extra_masks[i] ") != 0)"
+	if (extra_mask_macros[extra_masks[i]] == 0)
+		print "#define TARGET_" extra_masks[i] \
+		      " ((target_flags & MASK_" extra_masks[i] ") != 0)"
 }
 print ""
 


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]