diff options
| author | Anders Carlsson <andersca@mac.com> | 2009-09-26 03:56:53 +0000 | 
|---|---|---|
| committer | Anders Carlsson <andersca@mac.com> | 2009-09-26 03:56:53 +0000 | 
| commit | 0374742326c51a1ad543bebcd77a6d3dc6bd05fd (patch) | |
| tree | 355088ef8dc0a00b211f62d5dac5241c9a44c14d | |
| parent | fae1d715924f0bd463986260b5a5d5f52986146a (diff) | |
| download | bcm5719-llvm-0374742326c51a1ad543bebcd77a6d3dc6bd05fd.tar.gz bcm5719-llvm-0374742326c51a1ad543bebcd77a6d3dc6bd05fd.zip | |
Use ABIArgInfo::getDirect() for all types that have a pointer representation.
llvm-svn: 82845
| -rw-r--r-- | clang/lib/CodeGen/TargetABIInfo.cpp | 2 | ||||
| -rw-r--r-- | clang/test/CodeGenObjC/variadic-sends.m | 6 | 
2 files changed, 4 insertions, 4 deletions
| diff --git a/clang/lib/CodeGen/TargetABIInfo.cpp b/clang/lib/CodeGen/TargetABIInfo.cpp index da30060ecde..010a4218213 100644 --- a/clang/lib/CodeGen/TargetABIInfo.cpp +++ b/clang/lib/CodeGen/TargetABIInfo.cpp @@ -836,7 +836,7 @@ ABIArgInfo X86_64ABIInfo::getCoerceResult(QualType Ty,    if (CoerceTo == llvm::Type::getInt64Ty(CoerceTo->getContext())) {      // Integer and pointer types will end up in a general purpose      // register. -    if (Ty->isIntegralType() || Ty->isPointerType()) +    if (Ty->isIntegralType() || Ty->hasPointerRepresentation())        return (Ty->isPromotableIntegerType() ?                ABIArgInfo::getExtend() : ABIArgInfo::getDirect());    } else if (CoerceTo == llvm::Type::getDoubleTy(CoerceTo->getContext())) { diff --git a/clang/test/CodeGenObjC/variadic-sends.m b/clang/test/CodeGenObjC/variadic-sends.m index 17fe6618a3f..8697feec5d6 100644 --- a/clang/test/CodeGenObjC/variadic-sends.m +++ b/clang/test/CodeGenObjC/variadic-sends.m @@ -9,19 +9,19 @@  void f0(A *a) {    // CHECK-X86-32: call void bitcast (i8* (i8*, %struct.objc_selector*, ...)* @objc_msgSend to void (i8*, %struct.objc_selector*)*) -  // CHECK-X86-64: call void bitcast (i8* (i8*, %struct.objc_selector*, ...)* @objc_msgSend to void (i64, %struct.objc_selector*)*) +  // CHECK-X86-64: call void bitcast (i8* (i8*, %struct.objc_selector*, ...)* @objc_msgSend to void (i8*, %struct.objc_selector*)*)    [a im0];  }  void f1(A *a) {    // CHECK-X86-32: call void bitcast (i8* (i8*, %struct.objc_selector*, ...)* @objc_msgSend to void (i8*, %struct.objc_selector*, i32)*) -  // CHECK-X86-64: call void bitcast (i8* (i8*, %struct.objc_selector*, ...)* @objc_msgSend to void (i64, %struct.objc_selector*, i32)*) +  // CHECK-X86-64: call void bitcast (i8* (i8*, %struct.objc_selector*, ...)* @objc_msgSend to void (i8*, %struct.objc_selector*, i32)*)    [a im1: 1];  }  void f2(A *a) {    // CHECK-X86-32: call void (i8*, %struct.objc_selector*, i32, i32, ...)* bitcast (i8* (i8*, %struct.objc_selector*, ...)* @objc_msgSend to void (i8*, %struct.objc_selector*, i32, i32, ...)*) -  // CHECK-X86-64: call void (i64, %struct.objc_selector*, i32, i32, ...)* bitcast (i8* (i8*, %struct.objc_selector*, ...)* @objc_msgSend to void (i64, %struct.objc_selector*, i32, i32, ...)*) +  // CHECK-X86-64: call void (i8*, %struct.objc_selector*, i32, i32, ...)* bitcast (i8* (i8*, %struct.objc_selector*, ...)* @objc_msgSend to void (i8*, %struct.objc_selector*, i32, i32, ...)*)    [a im2: 1, 2];  } | 

