diff options
| author | Eli Friedman <eli.friedman@gmail.com> | 2012-08-29 21:21:11 +0000 |
|---|---|---|
| committer | Eli Friedman <eli.friedman@gmail.com> | 2012-08-29 21:21:11 +0000 |
| commit | 504f9a28720195940ac7da421948a3b4c8fb221e (patch) | |
| tree | f11436b8dfe26dd7a70f5a816a10e1c9b78a27c5 /clang/lib/CodeGen | |
| parent | cea3e77433311ee74f3258fd3cb9f70e68d1aebc (diff) | |
| download | bcm5719-llvm-504f9a28720195940ac7da421948a3b4c8fb221e.tar.gz bcm5719-llvm-504f9a28720195940ac7da421948a3b4c8fb221e.zip | |
Make alignment computation for pointer values for builtins handle
non-pointer types with a pointer representation correctly. PR13660.
llvm-svn: 162862
Diffstat (limited to 'clang/lib/CodeGen')
| -rw-r--r-- | clang/lib/CodeGen/CGBuiltin.cpp | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/clang/lib/CodeGen/CGBuiltin.cpp b/clang/lib/CodeGen/CGBuiltin.cpp index b55137094e7..1c95b57a7ad 100644 --- a/clang/lib/CodeGen/CGBuiltin.cpp +++ b/clang/lib/CodeGen/CGBuiltin.cpp @@ -1478,7 +1478,8 @@ CodeGenFunction::EmitPointerWithAlignment(const Expr *Addr) { assert(Addr->getType()->isPointerType()); Addr = Addr->IgnoreParens(); if (const ImplicitCastExpr *ICE = dyn_cast<ImplicitCastExpr>(Addr)) { - if (ICE->getCastKind() == CK_BitCast || ICE->getCastKind() == CK_NoOp) { + if ((ICE->getCastKind() == CK_BitCast || ICE->getCastKind() == CK_NoOp) && + ICE->getSubExpr()->getType()->isPointerType()) { std::pair<llvm::Value*, unsigned> Ptr = EmitPointerWithAlignment(ICE->getSubExpr()); Ptr.first = Builder.CreateBitCast(Ptr.first, |

