forked from OSchip/llvm-project
1 x ulonglong needs to be classified as INTEGER, just like 1 x longlong,
this fixes a miscompilation on the included testcase, rdar://8359248 llvm-svn: 112201
This commit is contained in:
parent
7b888fbd91
commit
46830f2fd6
|
@ -893,7 +893,8 @@ void X86_64ABIInfo::classify(QualType Ty, uint64_t OffsetBase,
|
|||
return;
|
||||
|
||||
// gcc passes <1 x long long> as INTEGER.
|
||||
if (VT->getElementType()->isSpecificBuiltinType(BuiltinType::LongLong))
|
||||
if (VT->getElementType()->isSpecificBuiltinType(BuiltinType::LongLong) ||
|
||||
VT->getElementType()->isSpecificBuiltinType(BuiltinType::ULongLong))
|
||||
Current = Integer;
|
||||
else
|
||||
Current = SSE;
|
||||
|
|
|
@ -233,4 +233,9 @@ void f33(va_list X) {
|
|||
va_arg(X, struct f33s);
|
||||
}
|
||||
|
||||
typedef unsigned long long v1i64 __attribute__((__vector_size__(8)));
|
||||
|
||||
// rdar://8359248
|
||||
// CHECK: define i64 @f34(i64 %arg.coerce)
|
||||
v1i64 f34(v1i64 arg) { return arg; }
|
||||
|
||||
|
|
Loading…
Reference in New Issue