[llvm-commits] [llvm] r106134 - in /llvm/trunk: lib/Transforms/Scalar/SimplifyLibCalls.cpp test/Transforms/SimplifyLibCalls/PR7357.ll
Rafael Espindola
rafael.espindola at gmail.com
Wed Jun 16 12:34:01 PDT 2010
Author: rafael
Date: Wed Jun 16 14:34:01 2010
New Revision: 106134
URL: http://llvm.org/viewvc/llvm-project?rev=106134&view=rev
Log:
Make sure that simplify libcalls does not replace a call with one calling
convention with a new call with a different calling convention.
Added:
llvm/trunk/test/Transforms/SimplifyLibCalls/PR7357.ll
Modified:
llvm/trunk/lib/Transforms/Scalar/SimplifyLibCalls.cpp
Modified: llvm/trunk/lib/Transforms/Scalar/SimplifyLibCalls.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/SimplifyLibCalls.cpp?rev=106134&r1=106133&r2=106134&view=diff
==============================================================================
--- llvm/trunk/lib/Transforms/Scalar/SimplifyLibCalls.cpp (original)
+++ llvm/trunk/lib/Transforms/Scalar/SimplifyLibCalls.cpp Wed Jun 16 14:34:01 2010
@@ -66,6 +66,11 @@
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);
}
};
Added: llvm/trunk/test/Transforms/SimplifyLibCalls/PR7357.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/SimplifyLibCalls/PR7357.ll?rev=106134&view=auto
==============================================================================
--- llvm/trunk/test/Transforms/SimplifyLibCalls/PR7357.ll (added)
+++ llvm/trunk/test/Transforms/SimplifyLibCalls/PR7357.ll Wed Jun 16 14:34:01 2010
@@ -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
+ at .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
More information about the llvm-commits
mailing list