Hi Andreas,
/usr/local/gcc/gcc-20110728/Build/ia64-suse-linux/libstdc++-v3/include/cmath: In function 'constexpr float std::fma(float, float, float)': /usr/local/gcc/gcc-20110728/Build/ia64-suse-linux/libstdc++-v3/include/cmath:1288:43: sorry, unimplemented: unexpected ast of kind fma_expr /usr/local/gcc/gcc-20110728/Build/ia64-suse-linux/libstdc++-v3/include/cmath:1288:43: internal compiler error: in potential_constant_expression_1, at cp/semantics.c:8094
in the past we encountered already a few small problems of this kind, with cases missing from the potential_constant_expression_1 switch. I believe something quite close to what I'm attaching below should be enough, can you give it a try?

In any case, we definitely want Jason to have a look as soon as possible. If you want to restore the ia64 bootstrap in the meanwhile, feel free to comment out any troublesome constexpr specifier in that file (or replacing it with inline).

Thanks!
Paolo.

//////////////////////


Index: semantics.c
===================================================================
--- semantics.c (revision 176846)
+++ semantics.c (working copy)
@@ -8057,6 +8057,13 @@ potential_constant_expression_1 (tree t, bool want
          return false;
       return true;
 
+    case FMA_EXPR:
+      for (i = 0; i < 3; ++i)
+       if (!potential_constant_expression_1 (TREE_OPERAND (t, i),
+                                             true, flags))
+         return false;
+      return true;
+
     case COND_EXPR:
     case VEC_COND_EXPR:
       /* If the condition is a known constant, we know which of the legs we

Reply via email to