[PATCH] D73189: [AST] Fix certain consteval assignment and comma operator issues with fixed-point types.
Bevin Hansson via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Wed Jan 22 06:33:37 PST 2020
ebevhan created this revision.
ebevhan added reviewers: rjmccall, leonardchan, bjope.
Herald added a project: clang.
Herald added a subscriber: cfe-commits.
Assignment and comma operators for fixed-point types were being constevaled as other
binary operators, but they need special treatment.
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D73189
Files:
clang/lib/AST/ExprConstant.cpp
clang/test/Frontend/fixed_point_crash.c
Index: clang/test/Frontend/fixed_point_crash.c
===================================================================
--- /dev/null
+++ clang/test/Frontend/fixed_point_crash.c
@@ -0,0 +1,20 @@
+// RUN: %clang_cc1 -verify -ffixed-point %s
+
+union a {
+ _Accum x;
+ int i;
+};
+
+int fn1() {
+ union a m;
+ m.x = 5.6k;
+ return m.i;
+}
+
+int fn2() {
+ union a m;
+ m.x = 7, 5.6k; // expected-warning {{expression result unused}}
+ return m.x, m.i; // expected-warning {{expression result unused}}
+}
+
+_Accum acc = (0.5r, 6.9k); // expected-warning {{expression result unused}}
Index: clang/lib/AST/ExprConstant.cpp
===================================================================
--- clang/lib/AST/ExprConstant.cpp
+++ clang/lib/AST/ExprConstant.cpp
@@ -12452,6 +12452,9 @@
}
bool FixedPointExprEvaluator::VisitBinaryOperator(const BinaryOperator *E) {
+ if (E->isPtrMemOp() || E->isAssignmentOp() || E->getOpcode() == BO_Comma)
+ return ExprEvaluatorBaseTy::VisitBinaryOperator(E);
+
const Expr *LHS = E->getLHS();
const Expr *RHS = E->getRHS();
FixedPointSemantics ResultFXSema =
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D73189.239569.patch
Type: text/x-patch
Size: 1109 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20200122/01802eca/attachment.bin>
More information about the cfe-commits
mailing list