diff options
author | Richard Smith <richard-llvm@metafoo.co.uk> | 2011-11-16 07:18:12 +0000 |
---|---|---|
committer | Richard Smith <richard-llvm@metafoo.co.uk> | 2011-11-16 07:18:12 +0000 |
commit | cf74da76db9ba69aac1033e23f775bc8974c48e3 (patch) | |
tree | 7b6a79591d3f6f9094d044fc9236f1986e84dbbe /clang/lib/AST/ExprConstant.cpp | |
parent | 643e63c40c6d1c29d4a6721f514bebe6d71c3a70 (diff) | |
download | bcm5719-llvm-cf74da76db9ba69aac1033e23f775bc8974c48e3.tar.gz bcm5719-llvm-cf74da76db9ba69aac1033e23f775bc8974c48e3.zip |
Fix PR11385: A pointer constant expression which has been cast via an integer is
not safely derived. Don't allow lvalue-to-rvalue conversions on the result of
dereferencing such a pointer.
llvm-svn: 144783
Diffstat (limited to 'clang/lib/AST/ExprConstant.cpp')
-rw-r--r-- | clang/lib/AST/ExprConstant.cpp | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/clang/lib/AST/ExprConstant.cpp b/clang/lib/AST/ExprConstant.cpp index 1451fd11195..699d81715e3 100644 --- a/clang/lib/AST/ExprConstant.cpp +++ b/clang/lib/AST/ExprConstant.cpp @@ -3197,6 +3197,7 @@ bool IntExprEvaluator::VisitCastExpr(const CastExpr *E) { if (Info.Ctx.getTypeSize(DestType) != Info.Ctx.getTypeSize(SrcType)) return false; + LV.Designator.setInvalid(); LV.moveInto(Result); return true; } |