================
@@ -16213,6 +16213,10 @@ SDValue DAGCombiner::visitAssertExt(SDNode *N) {
       AssertVT == cast<VTSDNode>(N0.getOperand(1))->getVT())
     return N0;
 
+  // fold (assert?ext c, vt) -> c
+  if (isa<ConstantSDNode>(N0))
+    return N0;
----------------
el-ev wrote:

It turns out to be not enough. In the failing case 
`llvm.amdgcn.wavefrontsize()` is legalized to a constant after creation, 
thereby escaping `getNode`.

```
Legalizing: t15: i32 = llvm.amdgcn.wavefrontsize TargetConstant:i64<3656>       
                                                                                
             
 ... replacing: t15: i32 = llvm.amdgcn.wavefrontsize TargetConstant:i64<3656>
     with:      t24: i32 = Constant<32> 
...
Combining: t17: i32 = AssertZext Constant:i32<32>, ValueType:ch:i7
 ... into: t18: i32 = Constant<32>
```

https://github.com/llvm/llvm-project/pull/196785
_______________________________________________
llvm-branch-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits

Reply via email to