llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT--> @llvm/pr-subscribers-clang Author: Timm Baeder (tbaederr) <details> <summary>Changes</summary> They don't have side-effects, so this should be fine. Fixes https://github.com/llvm/llvm-project/issues/170064 --- Full diff: https://github.com/llvm/llvm-project/pull/170089.diff 2 Files Affected: - (modified) clang/lib/AST/ByteCode/Compiler.cpp (+3) - (modified) clang/test/AST/ByteCode/c.c (+9) ``````````diff diff --git a/clang/lib/AST/ByteCode/Compiler.cpp b/clang/lib/AST/ByteCode/Compiler.cpp index dd0b8e790d444..58e84ef70abb7 100644 --- a/clang/lib/AST/ByteCode/Compiler.cpp +++ b/clang/lib/AST/ByteCode/Compiler.cpp @@ -1705,6 +1705,9 @@ bool Compiler<Emitter>::VisitFixedPointUnaryOperator(const UnaryOperator *E) { template <class Emitter> bool Compiler<Emitter>::VisitImplicitValueInitExpr( const ImplicitValueInitExpr *E) { + if (DiscardResult) + return true; + QualType QT = E->getType(); if (OptPrimType T = classify(QT)) diff --git a/clang/test/AST/ByteCode/c.c b/clang/test/AST/ByteCode/c.c index bffd557ff77a6..794181499cde9 100644 --- a/clang/test/AST/ByteCode/c.c +++ b/clang/test/AST/ByteCode/c.c @@ -392,3 +392,12 @@ void plainComplex(void) { _Complex cd; // all-warning {{_Complex double}} cd = *(_Complex *)&(struct { double r, i; }){0.0, 0.0}; // all-warning {{_Complex double}} } + +/// This test results in an ImplicitValueInitExpr with DiscardResult set. +struct M{}; +typedef struct S64 { + struct M m; + char a[64]; +} I64; + +_Static_assert((((I64){}, 1)), ""); // all-warning {{left operand of comma operator has no effect}} `````````` </details> https://github.com/llvm/llvm-project/pull/170089 _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
