https://github.com/tbaederr created 
https://github.com/llvm/llvm-project/pull/180537

We need to pop the pointer in that case.

>From 3cba51d9572934aca3321fc92adc654028221d97 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Timm=20B=C3=A4der?= <[email protected]>
Date: Mon, 9 Feb 2026 16:10:41 +0100
Subject: [PATCH] [clang][bytecode] Fix discarded Mulc/DivC opcodes

We need to pop the pointer in that case.
---
 clang/lib/AST/ByteCode/Compiler.cpp | 12 ++++++++++--
 clang/test/AST/ByteCode/complex.cpp |  7 +++++++
 2 files changed, 17 insertions(+), 2 deletions(-)

diff --git a/clang/lib/AST/ByteCode/Compiler.cpp 
b/clang/lib/AST/ByteCode/Compiler.cpp
index a0138c402e143..121ff00e462fc 100644
--- a/clang/lib/AST/ByteCode/Compiler.cpp
+++ b/clang/lib/AST/ByteCode/Compiler.cpp
@@ -1217,7 +1217,11 @@ bool Compiler<Emitter>::VisitComplexBinOp(const 
BinaryOperator *E) {
       return false;
     if (!this->visit(RHS))
       return false;
-    return this->emitMulc(ElemT, E);
+    if (!this->emitMulc(ElemT, E))
+      return false;
+    if (DiscardResult)
+      return this->emitPopPtr(E);
+    return true;
   }
 
   if (Op == BO_Div && RHSIsComplex) {
@@ -1254,7 +1258,11 @@ bool Compiler<Emitter>::VisitComplexBinOp(const 
BinaryOperator *E) {
 
     if (!this->visit(RHS))
       return false;
-    return this->emitDivc(ElemT, E);
+    if (!this->emitDivc(ElemT, E))
+      return false;
+    if (DiscardResult)
+      return this->emitPopPtr(E);
+    return true;
   }
 
   // Evaluate LHS and save value to LHSOffset.
diff --git a/clang/test/AST/ByteCode/complex.cpp 
b/clang/test/AST/ByteCode/complex.cpp
index 68a8e78d5b25b..9212c4fc47209 100644
--- a/clang/test/AST/ByteCode/complex.cpp
+++ b/clang/test/AST/ByteCode/complex.cpp
@@ -457,4 +457,11 @@ namespace Discard {
     return k;
   }
   static_assert(test_side_effect() == 1);
+
+  constexpr int discardedMulDiv() {
+    (void)(3 * 2i);
+    (void)(3 / 2i);
+    return 0;
+  }
+  static_assert(discardedMulDiv() == 0, "");
 }

_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to