Make sure that simplify libcalls does not replace a call with one calling

convention with a new call with a different calling convention.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106134 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Rafael Espindola 2010-06-16 19:34:01 +00:00
parent 956352eb46
commit e96af56a5b
2 changed files with 21 additions and 0 deletions

View File

@ -66,6 +66,11 @@ public:
this->TD = TD;
if (CI->getCalledFunction())
Context = &CI->getCalledFunction()->getContext();
// We never change the calling convention.
if (CI->getCallingConv() != llvm::CallingConv::C)
return NULL;
return CallOptimizer(CI->getCalledFunction(), CI, B);
}
};

View File

@ -0,0 +1,16 @@
; RUN: opt < %s -default-data-layout="e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-n32" -simplify-libcalls -S | FileCheck %s
@.str1 = private constant [11 x i8] c"(){};[]&|:\00", align 4
; check that simplify libcalls will not replace a call with one calling
; convention with a new call with a different calling convention.
; CHECK: define arm_aapcscc i32 @foo(i32 %argc)
; CHECK: call arm_aapcscc i8* @strchr
define arm_aapcscc i32 @foo(i32 %argc) nounwind {
bb.nph:
call arm_aapcscc i8* @strchr(i8* getelementptr ([11 x i8]* @.str1, i32 0,
i32 0), i32 %argc) nounwind readonly
ret i32 0
}
declare arm_aapcscc i8* @strchr(i8*, i32) nounwind readonly