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

Reply via email to