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