--- Reverse-merging r126672 into '.':
U gcc/llvm-convert.cpp
This was breaking this testcase (<rdar://problem/9098656>):
$ cat testcase.i
typedef struct {
union {
struct { } __attribute((packed));
};
} foo;
const foo boo = {{{ 0, 0, 0, 0 }}};
llvm-svn: 127274
diff --git a/llvm-gcc-4.2/gcc/llvm-convert.cpp b/llvm-gcc-4.2/gcc/llvm-convert.cpp
index 2180287..2d0f9d7 100644
--- a/llvm-gcc-4.2/gcc/llvm-convert.cpp
+++ b/llvm-gcc-4.2/gcc/llvm-convert.cpp
@@ -8582,10 +8582,10 @@
// Convert the constant itself.
Constant *Val = Convert(VEC_index(constructor_elt, elt, 0)->value);
- // Unions are initialized using the first non-anonymous member field. Find it.
+ // Unions are initialized using the first member field. Find it.
tree Field = TYPE_FIELDS(TREE_TYPE(exp));
assert(Field && "cannot initialize union with no fields");
- while (TREE_CODE(Field) != FIELD_DECL || DECL_NAME(Field) == NULL_TREE) {
+ while (TREE_CODE(Field) != FIELD_DECL) {
Field = TREE_CHAIN(Field);
assert(Field && "cannot initialize union with no fields");
}