aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Dunbar <daniel@zuster.org>2009-02-16 21:52:05 +0000
committerDaniel Dunbar <daniel@zuster.org>2009-02-16 21:52:05 +0000
commit62c29c667f5bcb854e99ccb3aec1280c84115951 (patch)
tree4bf85aa60f9a9cd56a1e844bf05f0fbe8b7ee801
parentecb81f28cb279b7d8e84296445a4131fa80b69a9 (diff)
Fix IRgen of __builtin_memset.
- Fix test case to not only have negative tests. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64674 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/CodeGen/CGBuiltin.cpp3
-rw-r--r--test/CodeGen/builtin-memfns.c6
2 files changed, 7 insertions, 2 deletions
diff --git a/lib/CodeGen/CGBuiltin.cpp b/lib/CodeGen/CGBuiltin.cpp
index e14c9f01c6..b990c19995 100644
--- a/lib/CodeGen/CGBuiltin.cpp
+++ b/lib/CodeGen/CGBuiltin.cpp
@@ -280,7 +280,8 @@ RValue CodeGenFunction::EmitBuiltinExpr(unsigned BuiltinID, const CallExpr *E) {
case Builtin::BI__builtin_memset: {
Value *Address = EmitScalarExpr(E->getArg(0));
Builder.CreateCall4(CGM.getMemSetFn(), Address,
- EmitScalarExpr(E->getArg(1)),
+ Builder.CreateTrunc(EmitScalarExpr(E->getArg(1)),
+ llvm::Type::Int8Ty),
EmitScalarExpr(E->getArg(2)),
llvm::ConstantInt::get(llvm::Type::Int32Ty, 1));
return RValue::get(Address);
diff --git a/test/CodeGen/builtin-memfns.c b/test/CodeGen/builtin-memfns.c
index d28a48c537..52b3a1d174 100644
--- a/test/CodeGen/builtin-memfns.c
+++ b/test/CodeGen/builtin-memfns.c
@@ -1,4 +1,8 @@
-// RUN: clang -emit-llvm -o - %s | not grep __builtin
+// RUN: clang -arch i386 -emit-llvm -o %t %s &&
+// RUN: grep '@llvm.memset.i32' %t &&
+// RUN: grep '@llvm.memcpy.i32' %t &&
+// RUN: grep '@llvm.memmove.i32' %t &&
+// RUN: grep __builtin %t | count 0
int main(int argc, char **argv) {
unsigned char a = 0x11223344;