diff options
author | Daniel Dunbar <daniel@zuster.org> | 2009-02-16 21:52:05 +0000 |
---|---|---|
committer | Daniel Dunbar <daniel@zuster.org> | 2009-02-16 21:52:05 +0000 |
commit | 62c29c667f5bcb854e99ccb3aec1280c84115951 (patch) | |
tree | 4bf85aa60f9a9cd56a1e844bf05f0fbe8b7ee801 | |
parent | ecb81f28cb279b7d8e84296445a4131fa80b69a9 (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.cpp | 3 | ||||
-rw-r--r-- | test/CodeGen/builtin-memfns.c | 6 |
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; |