Backported from gcc-4.3.  These should only effect the Ada front-end.

Index: gcc.llvm.master/gcc/tree.c
===================================================================
--- gcc.llvm.master.orig/gcc/tree.c     2007-01-17 21:40:30.000000000 +0100
+++ gcc.llvm.master/gcc/tree.c  2007-01-17 21:47:45.000000000 +0100
@@ -2601,7 +2601,7 @@
       break;
 
     default:
-      if (TREE_CODE_CLASS (code) == tcc_unary
+      if ((TREE_CODE_CLASS (code) == tcc_unary || code == VIEW_CONVERT_EXPR)
          && node && !TYPE_P (node)
          && TREE_CONSTANT (node))
        TREE_CONSTANT (t) = 1;
Index: gcc.llvm.master/gcc/varasm.c
===================================================================
--- gcc.llvm.master.orig/gcc/varasm.c   2007-01-17 21:40:31.000000000 +0100
+++ gcc.llvm.master/gcc/varasm.c        2007-01-17 21:47:45.000000000 +0100
@@ -3707,6 +3707,10 @@
          && ((decl_function_context (value) && !DECL_NO_STATIC_CHAIN (value))
              || DECL_NON_ADDR_CONST_P (value)))
        return NULL_TREE;
+      /* "&{...}" requires a temporary to hold the constructed
+         object.  */
+      if (value && TREE_CODE (value) == CONSTRUCTOR)
+        return NULL_TREE;
       return value;
 
     case VIEW_CONVERT_EXPR:
_______________________________________________
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits

Reply via email to