llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT--> @llvm/pr-subscribers-clang Author: Timm Baeder (tbaederr) <details> <summary>Changes</summary> If this opcode is being jumped-over, we have to ignore it. Fixes #<!-- -->172191 --- Full diff: https://github.com/llvm/llvm-project/pull/174183.diff 2 Files Affected: - (modified) clang/lib/AST/ByteCode/EvalEmitter.cpp (+2) - (modified) clang/test/AST/ByteCode/builtin-constant-p.cpp (+12) ``````````diff diff --git a/clang/lib/AST/ByteCode/EvalEmitter.cpp b/clang/lib/AST/ByteCode/EvalEmitter.cpp index 2ed5147a15491..cf3cc1b17133c 100644 --- a/clang/lib/AST/ByteCode/EvalEmitter.cpp +++ b/clang/lib/AST/ByteCode/EvalEmitter.cpp @@ -155,6 +155,8 @@ bool EvalEmitter::fallthrough(const LabelTy &Label) { } bool EvalEmitter::speculate(const CallExpr *E, const LabelTy &EndLabel) { + if (!isActive()) + return true; size_t StackSizeBefore = S.Stk.size(); const Expr *Arg = E->getArg(0); if (!this->visit(Arg)) { diff --git a/clang/test/AST/ByteCode/builtin-constant-p.cpp b/clang/test/AST/ByteCode/builtin-constant-p.cpp index 315a907949c34..c6b074e403bed 100644 --- a/clang/test/AST/ByteCode/builtin-constant-p.cpp +++ b/clang/test/AST/ByteCode/builtin-constant-p.cpp @@ -148,3 +148,15 @@ static void foo(int i) __attribute__((__diagnose_if__(!__builtin_constant_p(i), static void bar(int i) { foo(15); // expected-error {{not constant}} } + +namespace Inactive { + int foo() { + if ((__extension__( + 0 ? __extension__({ (1 ? 0 : (__builtin_constant_p("plane"))); }) + : 0)) == 0) { + } + + return 0; + } + +} `````````` </details> https://github.com/llvm/llvm-project/pull/174183 _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
