http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57391

            Bug ID: 57391
           Summary: [4.9 Regression] ICE compiling AIX math.h caused by PR
                    c++/56930
           Product: gcc
           Version: 4.9.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: dje at gcc dot gnu.org

The patch for PR c++/56930 breaks bootstrap on AIX when building libstdc++.  I
now receive the following error message:

/tmp/20130524/gcc/include-fixed/math.h: In function 'long double
fmal(long double, long double, long double)':
/tmp/20130524/gcc/include-fixed/math.h:879:135: internal compiler
error: unexpected expression '#'fma_expr' not supported by
dump_expr#<expression error>' of kind fma_expr
 inline long double fmal(long double __x, long double __y, long double
__z) { return fma((double) (__x), (double) (__y), (double) (__z)); }

When not using long double 128, AIX math.h provides a number of
definitions, including

inline long double fmal(long double __x, long double __y, long double __z)
{ return fma((double) (__x), (double) (__y), (double) (__z)); }

Reverting

--- a/gcc/cp/call.c
+++ b/gcc/cp/call.c
@@ -6199,10 +6199,10 @@ convert_like_real (conversion *convs, tree expr, tree
fn, int argnum,
   if (convs->check_narrowing)
     check_narrowing (totype, expr);

-  if (issue_conversion_warnings && (complain & tf_warning))
-    expr = convert_and_check (totype, expr);
+  if (issue_conversion_warnings)
+    expr = cp_convert_and_check (totype, expr, complain);
   else
-    expr = convert (totype, expr);
+    expr = cp_convert (totype, expr, complain);

   return expr;
 }

removes the ICE.

Reply via email to