aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/AST/ExprConstant.cpp
diff options
context:
space:
mode:
authorNick Desaulniers <ndesaulniers@google.com>2023-06-08 11:30:00 -0700
committerNick Desaulniers <ndesaulniers@google.com>2023-06-08 13:20:24 -0700
commit9daab7fb02d2a7340dbc78d15d248ef9aaf1214c (patch)
tree3881344e6b7e6c918b09b81720e893512745228b /clang/lib/AST/ExprConstant.cpp
parent4524a3159e8407d2b453293eff694f3a1534462d (diff)
downloadllvm-9daab7fb02d2a7340dbc78d15d248ef9aaf1214c.zip
llvm-9daab7fb02d2a7340dbc78d15d248ef9aaf1214c.tar.gz
llvm-9daab7fb02d2a7340dbc78d15d248ef9aaf1214c.tar.bz2
[ExprConstant] fix ICE from Evaluate on _Atomic structs
Fixes two crashes reported by @efriedma and @ahatanak, as per @ahatanak's analysis. Link: https://reviews.llvm.org/D151587#4397446 Link: https://reviews.llvm.org/D151587#4399684 Reviewed By: ahatanak, aaron.ballman Differential Revision: https://reviews.llvm.org/D152303
Diffstat (limited to 'clang/lib/AST/ExprConstant.cpp')
-rw-r--r--clang/lib/AST/ExprConstant.cpp1
1 files changed, 1 insertions, 0 deletions
diff --git a/clang/lib/AST/ExprConstant.cpp b/clang/lib/AST/ExprConstant.cpp
index 115460f..b88b84a 100644
--- a/clang/lib/AST/ExprConstant.cpp
+++ b/clang/lib/AST/ExprConstant.cpp
@@ -15064,6 +15064,7 @@ static bool Evaluate(APValue &Result, EvalInfo &Info, const Expr *E) {
E, Unqual, ScopeKind::FullExpression, LV);
if (!EvaluateAtomic(E, &LV, Value, Info))
return false;
+ Result = Value;
} else {
if (!EvaluateAtomic(E, nullptr, Result, Info))
return false;