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 | e28b3598817572f6c1c9e97d30c013a85b8952bb (patch) | |
tree | bc79780d3dbd5dfe534c8d820ce8c6e6b2f27590 | |
parent | 58b0589d738f13909328540a3451e65e2cf8e99b (diff) | |
download | bcm5719-llvm-e28b3598817572f6c1c9e97d30c013a85b8952bb.tar.gz bcm5719-llvm-e28b3598817572f6c1c9e97d30c013a85b8952bb.zip |
Fix IRgen of __builtin_memset.
- Fix test case to not only have negative tests.
llvm-svn: 64674
-rw-r--r-- | clang/lib/CodeGen/CGBuiltin.cpp | 3 | ||||
-rw-r--r-- | clang/test/CodeGen/builtin-memfns.c | 6 |
2 files changed, 7 insertions, 2 deletions
diff --git a/clang/lib/CodeGen/CGBuiltin.cpp b/clang/lib/CodeGen/CGBuiltin.cpp index e14c9f01c61..b990c199953 100644 --- a/clang/lib/CodeGen/CGBuiltin.cpp +++ b/clang/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/clang/test/CodeGen/builtin-memfns.c b/clang/test/CodeGen/builtin-memfns.c index d28a48c5374..52b3a1d174a 100644 --- a/clang/test/CodeGen/builtin-memfns.c +++ b/clang/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; |