return where the struct has a base but no fields. This
was because the x86-64 abi logic was checking the wrong
predicate in one place.
This was introduced in r91874, which was a fix for PR5831,
which lacked a CHECK line, so I verified and added it.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109759
91177308-0d34-0410-b5e6-
96231b3b80d8
break;
}
- // If this record has no fields but isn't empty, classify as INTEGER.
- if (RD->field_empty() && Size)
+ // If this record has no fields, no bases, no vtable, but isn't empty,
+ // classify as INTEGER.
+ if (CXXRD->isEmpty() && Size)
Current = Integer;
}
void f2(f2_s1 a0) { }
// PR5831
+// CHECK: define void @_Z2f34s3_1(i8 %x.coerce0, i64 %x.coerce1)
struct s3_0 {};
struct s3_1 { struct s3_0 a; long b; };
void f3(struct s3_1 x) {}
// CHECK: call void @_ZN6PR752310AddKeywordENS_9StringRefEi(i8* {{.*}}, i32 4)
AddKeyword(StringRef(), 4);
}
+}
+
+
+
+namespace PR7742 { // Also rdar://8250764
+ struct s2 {
+ float a[2];
+ };
+
+ struct c2 : public s2 {};
+
+ // CHECK: define double @_ZN6PR77423fooEPNS_2c2E(%"struct.PR7742::c2"* %P)
+ c2 foo(c2 *P) {
+ }
+
}
\ No newline at end of file