[llvm] [SelectOptimize] Reject Not as BinOp SelectLike aux (fix #226417) (PR #226539)

via llvm-commits llvm-commits at lists.llvm.org
Sun Sep 27 15:48:51 PDT 2026


github-actions[bot] wrote:

<!--PREMERGE ADVISOR COMMENT: Linux-->
# :penguin: Linux x64 Test Results

* 154128 tests passed
* 3428 tests skipped
* 1 test failed

## Failed Tests
(click on a test name to see its output)

### LLVM
<details>
<summary>LLVM.CodeGen/AArch64/selectopt-issue226417.ll</summary>

```
Exit Code: 1

Command Output (stdout):
--
# RUN: at line 1
/home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/opt -passes='require<profile-summary>,function(select-optimize)' -mtriple=aarch64-linux-gnu -mcpu=generic -S < /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/AArch64/selectopt-issue226417.ll | /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/AArch64/selectopt-issue226417.ll
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/opt '-passes=require<profile-summary>,function(select-optimize)' -mtriple=aarch64-linux-gnu -mcpu=generic -S
# note: command had no output on stdout or stderr
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/AArch64/selectopt-issue226417.ll
# .---command stderr------------
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/AArch64/selectopt-issue226417.ll:12:15: error: CHECK-NEXT: expected string not found in input
# | ; CHECK-NEXT: [[SH:%.*]] = lshr i1 [[V:%.*]], 0
# |               ^
# | <stdin>:21:23: note: scanning from here
# |  %nc = xor i1 %c, true
# |                       ^
# | <stdin>:21:23: note: pattern attempts to capture variables: "SH", "V"
# |  %nc = xor i1 %c, true
# |                       ^
# | <stdin>:22:2: note: possible intended match here
# |  %sh = lshr i1 %v, false
# |  ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/AArch64/selectopt-issue226417.ll:50:15: error: CHECK-NEXT: expected string not found in input
# | ; CHECK-NEXT: [[SH:%.*]] = lshr i1 [[V:%.*]], 0
# |               ^
# | <stdin>:49:23: note: scanning from here
# |  %nc = xor i1 %c, true
# |                       ^
# | <stdin>:49:23: note: pattern attempts to capture variables: "SH", "V"
# |  %nc = xor i1 %c, true
# |                       ^
# | <stdin>:50:2: note: possible intended match here
# |  %sh = lshr i1 %v, false
# |  ^
# | 
# | Input file: <stdin>
# | Check file: /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/AArch64/selectopt-issue226417.ll
# | 
# | -dump-input=help explains the following input dump.
# | 
# | Input was:
# | <<<<<<
# |            .
# |            .
# |            .
# |           16:  %j.next = add i32 %j, 1 
# |           17:  %ic = icmp slt i32 %j.next, %n 
# |           18:  br i1 %ic, label %inner, label %latch 
# |           19:  
# |           20: latch: ; preds = %inner 
# |           21:  %nc = xor i1 %c, true 
# | next:12'0                          {   search range start (exclusive)
# | next:12'1                              error: no match found in search range
# | next:12'2                              pattern attempts to capture variables: "SH", "V"
# |           22:  %sh = lshr i1 %v, false 
# | next:12'3      ?                         possible intended match
# |           23:  %s0 = select i1 %c, i32 %a, i32 %b 
# |           24:  %add = add i1 %nc, %sh 
# |           25:  %s2 = select i1 %c, i32 %a, i32 %b 
# |           26:  %i.next = add i32 %i, 1 
# |           27:  %oc = icmp slt i32 %i.next, %n 
# |           28:  br i1 %oc, label %outer, label %exit 
# |           29:  
# |           30: exit: ; preds = %latch 
# |           31:  ret void 
# |           32: } 
# |           33:  
# |           34: define void @not_xor_sub_not_selectlike(i32 %n, i1 %c, i1 %v, i32 %a, i32 %b) #0 { 
# | next:12'4                                             }                                            search range end (exclusive)
# |           35: entry: 
# |           36:  br label %outer 
# |           37:  
# |           38: outer: ; preds = %latch, %entry 
# |           39:  %i = phi i32 [ 0, %entry ], [ %i.next, %latch ] 
# |            .
# |            .
# |            .
# |           44:  %j.next = add i32 %j, 1 
# |           45:  %ic = icmp slt i32 %j.next, %n 
# |           46:  br i1 %ic, label %inner, label %latch 
# |           47:  
# |           48: latch: ; preds = %inner 
# |           49:  %nc = xor i1 %c, true 
# | next:50'0                          {   search range start (exclusive)
# | next:50'1                              error: no match found in search range
# | next:50'2                              pattern attempts to capture variables: "SH", "V"
# |           50:  %sh = lshr i1 %v, false 
# | next:50'3      ?                         possible intended match
# |           51:  %sub = sub i1 %sh, %nc 
# |           52:  %s0 = select i1 %c, i32 %a, i32 %b 
# |           53:  %s2 = select i1 %c, i32 %a, i32 %b 
# |           54:  %i.next = add i32 %i, 1 
# |           55:  %oc = icmp slt i32 %i.next, %n 
# |           56:  br i1 %oc, label %outer, label %exit 
# |           57:  
# |           58: exit: ; preds = %latch 
# |           59:  ret void 
# |           60: } 
# |           61:  
# |           62: attributes #0 = { "target-cpu"="generic" } 
# | next:50'4                                                } search range end (exclusive)
# | >>>>>>
# `-----------------------------
# error: command failed with exit status: 1

--

```
</details>

If these failures are unrelated to your changes (for example tests are broken or flaky at HEAD), please open an issue at https://github.com/llvm/llvm-project/issues and add the `infrastructure` label.

https://github.com/llvm/llvm-project/pull/226539


More information about the llvm-commits mailing list