On Fri, Dec 06, 2019 at 06:43:35PM -0800, Andrew Pinski wrote: > Hi all, > Right now the trunk does not compile with GCC 4.4.7 (the GCC that > comes with CentOS 6; yes I know old) after revision 277200 (October > 19).
AFAIK we haven't switched to requiring C++11 at which point we'd need to bump minimal system GCC requirement to 4.8-ish or so, so currently we should support building with even GCC 4.1-ish. > The error message is: > ../../gcc/gcc/cp/cvt.c:1043: error: operands to ?: have different > types ‘escaped_string’ and ‘const char [1]’ > ../../gcc/gcc/cp/cvt.c:1060: error: operands to ?: have different > types ‘escaped_string’ and ‘const char [1]’ Indeed. I think it is r151113 or r151114 that fixed that. > Is it acceptable to put in a workaround for this? Yes. I'd suggest to also fix the formatting around (? and : at the end of lines), so something like this? I've tested the workaround back to GCC r80000. Note, not accepting the code as is clearly has been a regression in GCC 3.4 to 4.4, as GCC 3.2 or 3.3 happily accept that. Ok for trunk if it passes bootstrap/regtest? 2019-12-07 Jakub Jelinek <ja...@redhat.com> * cvt.c (maybe_warn_nodiscard): Add workaround for GCC 3.4-4.4 - cast msg to (const char *) in conditional expressions. Formatting fixes. --- gcc/cp/cvt.c.jj 2019-12-04 10:26:36.000000000 +0100 +++ gcc/cp/cvt.c 2019-12-07 09:39:58.145990796 +0100 @@ -1044,12 +1044,13 @@ maybe_warn_nodiscard (tree expr, impl_co tree args = TREE_VALUE (attr); if (args) msg.escape (TREE_STRING_POINTER (TREE_VALUE (args))); - const char* format = (msg ? - G_("ignoring return value of %qD, " - "declared with attribute %<nodiscard%>: %<%s%>") : - G_("ignoring return value of %qD, " - "declared with attribute %<nodiscard%>%s")); - const char* raw_msg = msg ? msg : ""; + const char *format + = (msg + ? G_("ignoring return value of %qD, " + "declared with attribute %<nodiscard%>: %<%s%>") + : G_("ignoring return value of %qD, " + "declared with attribute %<nodiscard%>%s")); + const char *raw_msg = msg ? (const char *) msg : ""; auto_diagnostic_group d; if (warning_at (loc, OPT_Wunused_result, format, fn, raw_msg)) inform (DECL_SOURCE_LOCATION (fn), "declared here"); @@ -1061,12 +1062,13 @@ maybe_warn_nodiscard (tree expr, impl_co tree args = TREE_VALUE (attr); if (args) msg.escape (TREE_STRING_POINTER (TREE_VALUE (args))); - const char* format = msg ? - G_("ignoring returned value of type %qT, " - "declared with attribute %<nodiscard%>: %<%s%>") : - G_("ignoring returned value of type %qT, " - "declared with attribute %<nodiscard%>%s"); - const char* raw_msg = msg ? msg : ""; + const char *format + = (msg + ? G_("ignoring returned value of type %qT, " + "declared with attribute %<nodiscard%>: %<%s%>") + : G_("ignoring returned value of type %qT, " + "declared with attribute %<nodiscard%>%s")); + const char *raw_msg = msg ? (const char *) msg : ""; auto_diagnostic_group d; if (warning_at (loc, OPT_Wunused_result, format, rettype, raw_msg)) { Jakub