summaryrefslogtreecommitdiffstats
path: root/clang/lib
diff options
context:
space:
mode:
authorDaniel Dunbar <daniel@zuster.org>2008-08-28 18:42:20 +0000
committerDaniel Dunbar <daniel@zuster.org>2008-08-28 18:42:20 +0000
commit8c8616377dbddb73a9b3c20df075b18035259f6e (patch)
tree0a5451ccd40387c7af67e0a6570b18db25855783 /clang/lib
parent2eb49f295d9e952f3726de2ee5ba6516ba8ccc1c (diff)
downloadbcm5719-llvm-8c8616377dbddb73a9b3c20df075b18035259f6e.tar.gz
bcm5719-llvm-8c8616377dbddb73a9b3c20df075b18035259f6e.zip
Fix isIntegerConstantExpr eval of __builtin_offsetof to return result
with correct width. - PR2728. Also, fix PR2727 test case. llvm-svn: 55493
Diffstat (limited to 'clang/lib')
-rw-r--r--clang/lib/AST/Expr.cpp1
1 files changed, 1 insertions, 0 deletions
diff --git a/clang/lib/AST/Expr.cpp b/clang/lib/AST/Expr.cpp
index 49c76a89d86..1410f7e05ca 100644
--- a/clang/lib/AST/Expr.cpp
+++ b/clang/lib/AST/Expr.cpp
@@ -814,6 +814,7 @@ bool Expr::isIntegerConstantExpr(llvm::APSInt &Result, ASTContext &Ctx,
Result = ~Result;
break;
case UnaryOperator::OffsetOf:
+ Result.zextOrTrunc(static_cast<uint32_t>(Ctx.getTypeSize(getType())));
Result = Exp->evaluateOffsetOf(Ctx);
}
break;
OpenPOWER on IntegriCloud