This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
PATCH: [4.8 regression] bootstrap failure: "MASK_LONG_DOUBLE_128" redefined
- From: "H.J. Lu" <hongjiu dot lu at intel dot com>
- To: gcc-patches at gcc dot gnu dot org
- Date: Fri, 20 Apr 2012 13:27:59 -0700
- Subject: PATCH: [4.8 regression] bootstrap failure: "MASK_LONG_DOUBLE_128" redefined
- Reply-to: "H.J. Lu" <hjl dot tools at gmail dot com>
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 ""