[llvm] [InstCombine] Canonicalize GEP source element types (PR #180745)

via llvm-commits llvm-commits at lists.llvm.org
Tue Feb 10 06:55:49 PST 2026


github-actions[bot] wrote:

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

* 169484 tests passed
* 3046 tests skipped
* 7 tests failed

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

### Clang
<details>
<summary>Clang.CodeGen/allow-ubsan-check.c</summary>

```
Exit Code: 1

Command Output (stdout):
--
# RUN: at line 5
/home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/clang -cc1 -internal-isystem /home/gha/actions-runner/_work/llvm-project/llvm-project/build/lib/clang/23/include -nostdsysteminc -triple x86_64-pc-linux-gnu -emit-llvm -O1 -o - /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/test/CodeGen/allow-ubsan-check.c -fsanitize=signed-integer-overflow,integer-divide-by-zero,null,local-bounds -mllvm -ubsan-guard-checks | /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/test/CodeGen/allow-ubsan-check.c
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/clang -cc1 -internal-isystem /home/gha/actions-runner/_work/llvm-project/llvm-project/build/lib/clang/23/include -nostdsysteminc -triple x86_64-pc-linux-gnu -emit-llvm -O1 -o - /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/test/CodeGen/allow-ubsan-check.c -fsanitize=signed-integer-overflow,integer-divide-by-zero,null,local-bounds -mllvm -ubsan-guard-checks
# 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/clang/test/CodeGen/allow-ubsan-check.c
# .---command stderr------------
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/test/CodeGen/allow-ubsan-check.c:207:16: error: CHECK-NEXT: expected string not found in input
# | // CHECK-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds double, ptr [[VLA]], i64 [[IDXPROM]]
# |                ^
# | <stdin>:103:3: note: scanning from here
# | 4: ; preds = %entry
# |   ^
# | <stdin>:103:3: note: with "VLA" equal to "%vla"
# | 4: ; preds = %entry
# |   ^
# | <stdin>:103:3: note: with "IDXPROM" equal to "%idxprom"
# | 4: ; preds = %entry
# |   ^
# | <stdin>:104:8: note: possible intended match here
# |  %arrayidx = getelementptr inbounds [8 x i8], ptr %vla, i64 %idxprom
# |        ^
# | 
# | Input file: <stdin>
# | Check file: /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/test/CodeGen/allow-ubsan-check.c
# | 
# | -dump-input=help explains the following input dump.
# | 
# | Input was:
# | <<<<<<
# |             .
# |             .
# |             .
# |            98:  %1 = icmp ule i64 %0, %idxprom 
# |            99:  %2 = call i1 @llvm.allow.ubsan.check(i8 71), !nosanitize !6 
# |           100:  %3 = and i1 %1, %2, !nosanitize !6 
# |           101:  br i1 %3, label %trap, label %4 
# |           102:  
# |           103: 4: ; preds = %entry 
# | next:207'0       X~~~~~~~~~~~~~~~~~ error: no match found
# | next:207'1                          with "VLA" equal to "%vla"
# | next:207'2                          with "IDXPROM" equal to "%idxprom"
# |           104:  %arrayidx = getelementptr inbounds [8 x i8], ptr %vla, i64 %idxprom 
# | next:207'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | next:207'3            ?                                                              possible intended match
# |           105:  %5 = load double, ptr %arrayidx, align 8, !tbaa !9 
# | next:207'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           106:  ret double %5 
# | next:207'0     ~~~~~~~~~~~~~~~
# |           107:  
# | next:207'0     ~
# |           108: trap: ; preds = %entry 
# | next:207'0     ~~~~~~~~~~~~~~~~~~~~~~~
# |           109:  call void @__ubsan_handle_local_out_of_bounds_abort() #6, !nosanitize !6 
# | next:207'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |             .
# |             .
# |             .
# | >>>>>>
# `-----------------------------
# error: command failed with exit status: 1

--

```
</details>
<details>
<summary>Clang.CodeGen/attr-counted-by-for-pointers.c</summary>

```
Exit Code: 1

Command Output (stdout):
--
# RUN: at line 2
/home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/clang -cc1 -internal-isystem /home/gha/actions-runner/_work/llvm-project/llvm-project/build/lib/clang/23/include -nostdsysteminc -triple x86_64-unknown-linux-gnu -O2 -DWITH_ATTRS -Wall -fsanitize=array-bounds,object-size,local-bounds -fstrict-flex-arrays=3 -fexperimental-late-parse-attributes -emit-llvm -o - /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/test/CodeGen/attr-counted-by-for-pointers.c | /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck --check-prefix=SANITIZE-WITH-ATTR /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/test/CodeGen/attr-counted-by-for-pointers.c
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/clang -cc1 -internal-isystem /home/gha/actions-runner/_work/llvm-project/llvm-project/build/lib/clang/23/include -nostdsysteminc -triple x86_64-unknown-linux-gnu -O2 -DWITH_ATTRS -Wall -fsanitize=array-bounds,object-size,local-bounds -fstrict-flex-arrays=3 -fexperimental-late-parse-attributes -emit-llvm -o - /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/test/CodeGen/attr-counted-by-for-pointers.c
# note: command had no output on stdout or stderr
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck --check-prefix=SANITIZE-WITH-ATTR /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/test/CodeGen/attr-counted-by-for-pointers.c
# .---command stderr------------
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/test/CodeGen/attr-counted-by-for-pointers.c:47:29: error: SANITIZE-WITH-ATTR-NEXT: expected string not found in input
# | // SANITIZE-WITH-ATTR-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds ptr, ptr [[TMP4]], i64 [[IDXPROM]]
# |                             ^
# | <stdin>:38:35: note: scanning from here
# |  %idxprom = sext i32 %index to i64
# |                                   ^
# | <stdin>:38:35: note: with "TMP4" equal to "%4"
# |  %idxprom = sext i32 %index to i64
# |                                   ^
# | <stdin>:38:35: note: with "IDXPROM" equal to "%idxprom"
# |  %idxprom = sext i32 %index to i64
# |                                   ^
# | <stdin>:39:5: note: possible intended match here
# |  %arrayidx = getelementptr inbounds [8 x i8], ptr %4, i64 %idxprom
# |     ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/test/CodeGen/attr-counted-by-for-pointers.c:102:29: error: SANITIZE-WITH-ATTR-NEXT: expected string not found in input
# | // SANITIZE-WITH-ATTR-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds ptr, ptr [[TMP4]], i64 [[IDXPROM]]
# |                             ^
# | <stdin>:65:35: note: scanning from here
# |  %idxprom = sext i32 %index to i64
# |                                   ^
# | <stdin>:65:35: note: with "TMP4" equal to "%4"
# |  %idxprom = sext i32 %index to i64
# |                                   ^
# | <stdin>:65:35: note: with "IDXPROM" equal to "%idxprom"
# |  %idxprom = sext i32 %index to i64
# |                                   ^
# | <stdin>:66:5: note: possible intended match here
# |  %arrayidx = getelementptr inbounds [8 x i8], ptr %4, i64 %idxprom
# |     ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/test/CodeGen/attr-counted-by-for-pointers.c:157:29: error: SANITIZE-WITH-ATTR-NEXT: expected string not found in input
# | // SANITIZE-WITH-ATTR-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds ptr, ptr [[TMP4]], i64 [[IDXPROM]]
# |                             ^
# | <stdin>:89:35: note: scanning from here
# |  %idxprom = sext i32 %index to i64
# |                                   ^
# | <stdin>:89:35: note: with "TMP4" equal to "%4"
# |  %idxprom = sext i32 %index to i64
# |                                   ^
# | <stdin>:89:35: note: with "IDXPROM" equal to "%idxprom"
# |  %idxprom = sext i32 %index to i64
# |                                   ^
# | <stdin>:90:5: note: possible intended match here
# |  %arrayidx = getelementptr inbounds [8 x i8], ptr %4, i64 %idxprom
# |     ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/test/CodeGen/attr-counted-by-for-pointers.c:574:26: error: undefined variable: _ZTS3FOOPTR_TBAA14
# | // SANITIZE-WITH-ATTR: [[_ZTS3FOOPTR_TBAA14]] = !{[[META15:![0-9]+]], [[META15]], i64 0}
# |                          ^
# | <stdin>:270:3: note: possible intended match here
# | !14 = !{!15, !15, i64 0}
# |   ^
# | 
# | Input file: <stdin>
# | Check file: /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/test/CodeGen/attr-counted-by-for-pointers.c
# | 
# | -dump-input=help explains the following input dump.
# | 
# | Input was:
# | <<<<<<
# |              .
# |              .
# |              .
# |             33:  unreachable, !nosanitize !6 
# |             34:  
# |             35: cont10: ; preds = %entry 
# |             36:  %buf = getelementptr inbounds nuw i8, ptr %p, i64 8 
# |             37:  %4 = load ptr, ptr %buf, align 8, !tbaa !8 
# |             38:  %idxprom = sext i32 %index to i64 
# | next:47'0                                         X error: no match found
# | next:47'1                                           with "TMP4" equal to "%4"
# | next:47'2                                           with "IDXPROM" equal to "%idxprom"
# |             39:  %arrayidx = getelementptr inbounds [8 x i8], ptr %4, i64 %idxprom 
# | next:47'0       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | next:47'3           ?                                                               possible intended match
# |             40:  store ptr %value, ptr %arrayidx, align 8, !tbaa !14 
# | next:47'0       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |             41:  ret void 
# | next:47'0       ~~~~~~~~~~
# |             42: } 
# | next:47'0       ~~
# |             43:  
# | next:47'0       ~
# |             44: ; Function Attrs: noreturn nounwind uwtable 
# | next:47'0       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |              .
# |              .
# |              .
# |             60:  unreachable, !nosanitize !6 
# |             61:  
# |             62: cont10: ; preds = %entry 
# |             63:  %buf = getelementptr inbounds nuw i8, ptr %p, i64 8 
# |             64:  %4 = load ptr, ptr %buf, align 8, !tbaa !8 
# |             65:  %idxprom = sext i32 %index to i64 
# | next:102'0                                        X error: no match found
# | next:102'1                                          with "TMP4" equal to "%4"
# | next:102'2                                          with "IDXPROM" equal to "%idxprom"
# |             66:  %arrayidx = getelementptr inbounds [8 x i8], ptr %4, i64 %idxprom 
# | next:102'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | next:102'3          ?                                                               possible intended match
# |             67:  store ptr %value, ptr %arrayidx, align 8, !tbaa !14 
# | next:102'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |             68:  ret void 
# | next:102'0      ~~~~~~~~~~
# |             69: } 
# | next:102'0      ~~
# |             70:  
# | next:102'0      ~
# |             71: ; Function Attrs: nounwind 
# | next:102'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |              .
# |              .
# |              .
# |             84:  unreachable, !nosanitize !6 
# |             85:  
# |             86: cont10: ; preds = %entry 
# |             87:  %buf = getelementptr inbounds nuw i8, ptr %p, i64 8 
# |             88:  %4 = load ptr, ptr %buf, align 8, !tbaa !8 
# |             89:  %idxprom = sext i32 %index to i64 
# | next:157'0                                        X error: no match found
# | next:157'1                                          with "TMP4" equal to "%4"
# | next:157'2                                          with "IDXPROM" equal to "%idxprom"
# |             90:  %arrayidx = getelementptr inbounds [8 x i8], ptr %4, i64 %idxprom 
# | next:157'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | next:157'3          ?                                                               possible intended match
# |             91:  store ptr %value, ptr %arrayidx, align 8, !tbaa !14 
# | next:157'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |             92:  ret void 
# | next:157'0      ~~~~~~~~~~
# |             93: } 
# | next:157'0      ~~
# |             94:  
# | next:157'0      ~
# |             95: ; Function Attrs: nounwind 
# | next:157'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |              .
# |              .
# |              .
# |            264: !8 = !{!9, !11, i64 8} 
# |            265: !9 = !{!"annotated_ptr", !10, i64 0, !11, i64 8, !3, i64 16} 
# |            266: !10 = !{!"long", !4, i64 0} 
# |            267: !11 = !{!"p2 _ZTS3foo", !12, i64 0} 
# |            268: !12 = !{!"any p2 pointer", !13, i64 0} 
# |            269: !13 = !{!"any pointer", !4, i64 0} 
# | check:574'0                                       X error: match failed for invalid pattern
# | check:574'1                                         undefined variable: _ZTS3FOOPTR_TBAA14
# |            270: !14 = !{!15, !15, i64 0} 
# | check:574'0     ~~~~~~~~~~~~~~~~~~~~~~~~~
# | check:574'2       ?                       possible intended match
# |            271: !15 = !{!"p1 _ZTS3foo", !13, i64 0} 
# | check:574'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | >>>>>>
# `-----------------------------
# error: command failed with exit status: 1

--

```
</details>
<details>
<summary>Clang.CodeGen/attr-counted-by.c</summary>

```
Exit Code: 1

Command Output (stdout):
--
# RUN: at line 2
/home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/clang -cc1 -internal-isystem /home/gha/actions-runner/_work/llvm-project/llvm-project/build/lib/clang/23/include -nostdsysteminc -triple x86_64-unknown-linux-gnu -DCOUNTED_BY -O2 -Wall -fsanitize=array-bounds,object-size,local-bounds -fstrict-flex-arrays=3 -emit-llvm -o - /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/test/CodeGen/attr-counted-by.c | /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck --check-prefix=SANITIZE-WITH-ATTR /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/test/CodeGen/attr-counted-by.c
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/clang -cc1 -internal-isystem /home/gha/actions-runner/_work/llvm-project/llvm-project/build/lib/clang/23/include -nostdsysteminc -triple x86_64-unknown-linux-gnu -DCOUNTED_BY -O2 -Wall -fsanitize=array-bounds,object-size,local-bounds -fstrict-flex-arrays=3 -emit-llvm -o - /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/test/CodeGen/attr-counted-by.c
# .---command stderr------------
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/test/CodeGen/attr-counted-by.c:2506:41: warning: left operand of comma operator has no effect [-Wunused-value]
# |  2506 |   return __builtin_dynamic_object_size((1, 2, (4, 5, (7, 8, 9, (10, ptr->array)))), 1);
# |       |                                         ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/test/CodeGen/attr-counted-by.c:2506:48: warning: left operand of comma operator has no effect [-Wunused-value]
# |  2506 |   return __builtin_dynamic_object_size((1, 2, (4, 5, (7, 8, 9, (10, ptr->array)))), 1);
# |       |                                                ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/test/CodeGen/attr-counted-by.c:2506:55: warning: left operand of comma operator has no effect [-Wunused-value]
# |  2506 |   return __builtin_dynamic_object_size((1, 2, (4, 5, (7, 8, 9, (10, ptr->array)))), 1);
# |       |                                                       ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/test/CodeGen/attr-counted-by.c:2506:58: warning: left operand of comma operator has no effect [-Wunused-value]
# |  2506 |   return __builtin_dynamic_object_size((1, 2, (4, 5, (7, 8, 9, (10, ptr->array)))), 1);
# |       |                                                          ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/test/CodeGen/attr-counted-by.c:2506:65: warning: left operand of comma operator has no effect [-Wunused-value]
# |  2506 |   return __builtin_dynamic_object_size((1, 2, (4, 5, (7, 8, 9, (10, ptr->array)))), 1);
# |       |                                                                 ^~
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/test/CodeGen/attr-counted-by.c:2506:61: warning: left operand of comma operator has no effect [-Wunused-value]
# |  2506 |   return __builtin_dynamic_object_size((1, 2, (4, 5, (7, 8, 9, (10, ptr->array)))), 1);
# |       |                                                             ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/test/CodeGen/attr-counted-by.c:2506:51: warning: left operand of comma operator has no effect [-Wunused-value]
# |  2506 |   return __builtin_dynamic_object_size((1, 2, (4, 5, (7, 8, 9, (10, ptr->array)))), 1);
# |       |                                                   ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/test/CodeGen/attr-counted-by.c:2506:44: warning: left operand of comma operator has no effect [-Wunused-value]
# |  2506 |   return __builtin_dynamic_object_size((1, 2, (4, 5, (7, 8, 9, (10, ptr->array)))), 1);
# |       |                                            ^
# | 8 warnings generated.
# `-----------------------------
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck --check-prefix=SANITIZE-WITH-ATTR /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/test/CodeGen/attr-counted-by.c
# .---command stderr------------
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/test/CodeGen/attr-counted-by.c:77:29: error: SANITIZE-WITH-ATTR-NEXT: expected string not found in input
# | // SANITIZE-WITH-ATTR-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds i32, ptr [[ARRAY]], i64 [[IDXPROM]]
# |                             ^
# | <stdin>:100:35: note: scanning from here
# |  %idxprom = sext i32 %index to i64
# |                                   ^
# | <stdin>:100:35: note: with "ARRAY" equal to "%array"
# |  %idxprom = sext i32 %index to i64
# |                                   ^
# | <stdin>:100:35: note: with "IDXPROM" equal to "%idxprom"
# |  %idxprom = sext i32 %index to i64
# |                                   ^
# | <stdin>:101:5: note: possible intended match here
# |  %arrayidx = getelementptr inbounds [4 x i8], ptr %array, i64 %idxprom
# |     ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/test/CodeGen/attr-counted-by.c:127:29: error: SANITIZE-WITH-ATTR-NEXT: expected string not found in input
# | // SANITIZE-WITH-ATTR-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds nuw i32, ptr [[ARRAY]], i64 [[INDEX]]
# |                             ^
# | <stdin>:128:56: note: scanning from here
# |  %array = getelementptr inbounds nuw i8, ptr %p, i64 12
# |                                                        ^
# | <stdin>:128:56: note: with "ARRAY" equal to "%array"
# |  %array = getelementptr inbounds nuw i8, ptr %p, i64 12
# |                                                        ^
# | <stdin>:128:56: note: with "INDEX" equal to "%index"
# |  %array = getelementptr inbounds nuw i8, ptr %p, i64 12
# |                                                        ^
# | <stdin>:129:5: note: possible intended match here
# |  %arrayidx = getelementptr inbounds nuw [4 x i8], ptr %array, i64 %index
# |     ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/test/CodeGen/attr-counted-by.c:251:29: error: SANITIZE-WITH-ATTR-NEXT: expected string not found in input
# | // SANITIZE-WITH-ATTR-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds nuw i32, ptr [[ARRAY]], i64 [[INDEX]]
# |                             ^
# | <stdin>:175:56: note: scanning from here
# |  %array = getelementptr inbounds nuw i8, ptr %p, i64 12
# |                                                        ^
# | <stdin>:175:56: note: with "ARRAY" equal to "%array"
# |  %array = getelementptr inbounds nuw i8, ptr %p, i64 12
# |                                                        ^
# | <stdin>:175:56: note: with "INDEX" equal to "%index"
# |  %array = getelementptr inbounds nuw i8, ptr %p, i64 12
# |                                                        ^
# | <stdin>:176:5: note: possible intended match here
# |  %arrayidx = getelementptr inbounds nuw [4 x i8], ptr %array, i64 %index
# |     ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/test/CodeGen/attr-counted-by.c:355:29: error: SANITIZE-WITH-ATTR-NEXT: expected string not found in input
# | // SANITIZE-WITH-ATTR-NEXT: [[ARRAYIDX10:%.*]] = getelementptr inbounds nuw i32, ptr [[ARRAY]], i64 [[IDXPROM]]
# |                             ^
# | <stdin>:218:27: note: scanning from here
# |  %2 = and i32 %result, 252
# |                           ^
# | <stdin>:218:27: note: with "ARRAY" equal to "%array"
# |  %2 = and i32 %result, 252
# |                           ^
# | <stdin>:218:27: note: with "IDXPROM" equal to "%idxprom"
# |  %2 = and i32 %result, 252
# |                           ^
# | <stdin>:219:7: note: possible intended match here
# |  %arrayidx10 = getelementptr inbounds nuw [4 x i8], ptr %array, i64 %idxprom
# |       ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/test/CodeGen/attr-counted-by.c:619:29: error: SANITIZE-WITH-ATTR-NEXT: expected string not found in input
# | // SANITIZE-WITH-ATTR-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds i32, ptr [[TMP1]], i64 [[IDXPROM]]
# |                             ^
# | <stdin>:340:52: note: scanning from here
# |  %1 = getelementptr inbounds nuw i8, ptr %p, i64 16
# |                                                    ^
# | <stdin>:340:52: note: with "TMP1" equal to "%1"
# |  %1 = getelementptr inbounds nuw i8, ptr %p, i64 16
# |                                                    ^
# | <stdin>:340:52: note: with "IDXPROM" equal to "%idxprom"
# |  %1 = getelementptr inbounds nuw i8, ptr %p, i64 16
# |                                                    ^
# | <stdin>:341:12: note: possible intended match here
# |  %arrayidx = getelementptr inbounds [4 x i8], ptr %1, i64 %idxprom
# |            ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/test/CodeGen/attr-counted-by.c:691:29: error: SANITIZE-WITH-ATTR-NEXT: expected string not found in input
# | // SANITIZE-WITH-ATTR-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds i32, ptr [[TMP1]], i64 [[IDXPROM]]
# |                             ^
# | <stdin>:366:52: note: scanning from here
# |  %1 = getelementptr inbounds nuw i8, ptr %p, i64 16
# |                                                    ^
# | <stdin>:366:52: note: with "TMP1" equal to "%1"
# |  %1 = getelementptr inbounds nuw i8, ptr %p, i64 16
# |                                                    ^
# | <stdin>:366:52: note: with "IDXPROM" equal to "%idxprom"
# |  %1 = getelementptr inbounds nuw i8, ptr %p, i64 16
# |                                                    ^
# | <stdin>:367:12: note: possible intended match here
# |  %arrayidx = getelementptr inbounds [4 x i8], ptr %1, i64 %idxprom
# |            ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/test/CodeGen/attr-counted-by.c:1101:29: error: SANITIZE-WITH-ATTR-NEXT: expected string not found in input
# | // SANITIZE-WITH-ATTR-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds i32, ptr [[ARRAY]], i64 [[IDXPROM]]
# |                             ^
# | <stdin>:524:35: note: scanning from here
# |  %idxprom = sext i32 %index to i64
# |                                   ^
# | <stdin>:524:35: note: with "ARRAY" equal to "%array"
# |  %idxprom = sext i32 %index to i64
# |                                   ^
# | <stdin>:524:35: note: with "IDXPROM" equal to "%idxprom"
# |  %idxprom = sext i32 %index to i64
# |                                   ^
# | <stdin>:525:5: note: possible intended match here
# |  %arrayidx = getelementptr inbounds [4 x i8], ptr %array, i64 %idxprom
# |     ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/test/CodeGen/attr-counted-by.c:1210:29: error: SANITIZE-WITH-ATTR-NEXT: expected string not found in input
# | // SANITIZE-WITH-ATTR-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds nuw i32, ptr [[BAZ]], i64 [[TMP0]]
# |                             ^
# | <stdin>:559:6: note: scanning from here
# | cont: ; preds = %entry
# |      ^
# | <stdin>:559:6: note: with "BAZ" equal to "%baz"
# | cont: ; preds = %entry
# |      ^
# | <stdin>:559:6: note: with "TMP0" equal to "%0"
# | cont: ; preds = %entry
# |      ^
# | <stdin>:572:83: note: possible intended match here
# |  tail call void @__ubsan_handle_type_mismatch_v1_abort(ptr nonnull @25, i64 ptrtoint (ptr getelementptr inbounds nuw (i8, ptr @test12_foo, i64 4) to i64)) #8, !nosanitize !6
# |                                                                                   ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/test/CodeGen/attr-counted-by.c:1316:29: error: SANITIZE-WITH-ATTR-NEXT: expected string not found in input
# | // SANITIZE-WITH-ATTR-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds nuw ptr, ptr [[REVMAP]], i64 [[INDEX]]
# |                             ^
# | <stdin>:599:57: note: scanning from here
# |  %revmap = getelementptr inbounds nuw i8, ptr %0, i64 16
# |                                                         ^
# | <stdin>:599:57: note: with "REVMAP" equal to "%revmap"
# |  %revmap = getelementptr inbounds nuw i8, ptr %0, i64 16
# |                                                         ^
# | <stdin>:599:57: note: with "INDEX" equal to "%index"
# |  %revmap = getelementptr inbounds nuw i8, ptr %0, i64 16
# |                                                         ^
# | <stdin>:600:5: note: possible intended match here
# |  %arrayidx = getelementptr inbounds nuw [8 x i8], ptr %revmap, i64 %index
# |     ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/test/CodeGen/attr-counted-by.c:1372:87: error: undefined variable: INT_TBAA2
# | // SANITIZE-WITH-ATTR-NEXT: store i32 1, ptr [[DOTCOMPOUNDLITERAL]], align 4, !tbaa [[INT_TBAA2]]
# |                                                                                       ^
# | <stdin>:608:56: note: with "DOTCOMPOUNDLITERAL" equal to "%.compoundliteral"
# |  %.compoundliteral = alloca %struct.test14_foo, align 4
# |                                                        ^
# | <stdin>:611:2: note: possible intended match here
# |  store i32 2, ptr %y, align 4, !tbaa !2
# |  ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/test/CodeGen/attr-counted-by.c:1647:90: error: undefined variable: INT_TBAA2
# | // SANITIZE-WITH-ATTR-NEXT: [[TMP1:%.*]] = load i32, ptr [[ARRAYIDX2]], align 4, !tbaa [[INT_TBAA2]]
# |                                                                                          ^
# | <stdin>:701:62: note: with "ARRAYIDX2" equal to "%arrayidx2"
# |  %arrayidx2 = getelementptr inbounds nuw i8, ptr %var, i64 84
# |                                                              ^
# | <stdin>:702:2: note: possible intended match here
# |  %1 = load i32, ptr %arrayidx2, align 4, !tbaa !2
# |  ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/test/CodeGen/attr-counted-by.c:1688:89: error: undefined variable: INT_TBAA2
# | // SANITIZE-WITH-ATTR-NEXT: [[TMP2:%.*]] = load i32, ptr [[ARRAYIDX]], align 4, !tbaa [[INT_TBAA2]]
# |                                                                                         ^
# | <stdin>:719:59: note: with "ARRAYIDX" equal to "%arrayidx"
# |  %arrayidx = getelementptr inbounds nuw i8, ptr %0, i64 44
# |                                                           ^
# | <stdin>:720:5: note: possible intended match here
# |  %2 = load i32, ptr %arrayidx, align 4, !tbaa !2
# |     ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/test/CodeGen/attr-counted-by.c:1742:29: error: SANITIZE-WITH-ATTR-NEXT: expected string not found in input
# | // SANITIZE-WITH-ATTR-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds i32, ptr [[ARR]], i64 [[IDXPROM]]
# |                             ^
# | <stdin>:741:31: note: scanning from here
# |  %idxprom = sext i32 %c to i64
# |                               ^
# | <stdin>:741:31: note: with "ARR" equal to "%arr"
# |  %idxprom = sext i32 %c to i64
# |                               ^
# | <stdin>:741:31: note: with "IDXPROM" equal to "%idxprom"
# |  %idxprom = sext i32 %c to i64
# |                               ^
# | <stdin>:742:5: note: possible intended match here
# |  %arrayidx = getelementptr inbounds [4 x i8], ptr %arr, i64 %idxprom
# |     ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/test/CodeGen/attr-counted-by.c:1813:29: error: SANITIZE-WITH-ATTR-NEXT: expected string not found in input
# | // SANITIZE-WITH-ATTR-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds ptr, ptr [[ENTRIES]], i64 [[IDXPROM]]
# |                             ^
# | <stdin>:762:31: note: scanning from here
# |  %idxprom = sext i32 %i to i64
# |                               ^
# | <stdin>:762:31: note: with "ENTRIES" equal to "%entries"
# |  %idxprom = sext i32 %i to i64
# |                               ^
# | <stdin>:762:31: note: with "IDXPROM" equal to "%idxprom"
# |  %idxprom = sext i32 %i to i64
# |                               ^
# | <stdin>:763:5: note: possible intended match here
# |  %arrayidx = getelementptr inbounds [8 x i8], ptr %entries, i64 %idxprom
# |     ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/test/CodeGen/attr-counted-by.c:1881:29: error: SANITIZE-WITH-ATTR-NEXT: expected string not found in input
# | // SANITIZE-WITH-ATTR-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds i32, ptr [[ARR]], i64 [[IDXPROM]]
# |                             ^
# | <stdin>:790:31: note: scanning from here
# |  %idxprom = sext i32 %i to i64
# |                               ^
# | <stdin>:790:31: note: with "ARR" equal to "%arr"
# |  %idxprom = sext i32 %i to i64
# |                               ^
# | <stdin>:790:31: note: with "IDXPROM" equal to "%idxprom"
# |  %idxprom = sext i32 %i to i64
# |                               ^
# | <stdin>:791:5: note: possible intended match here
# |  %arrayidx = getelementptr inbounds [4 x i8], ptr %arr, i64 %idxprom
# |     ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/test/CodeGen/attr-counted-by.c:1942:29: error: SANITIZE-WITH-ATTR-NEXT: expected string not found in input
# | // SANITIZE-WITH-ATTR-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds nuw ptr, ptr [[ANN]], i64 [[TMP0]]
# |                             ^
# | <stdin>:807:7: note: scanning from here
# | cont3: ; preds = %entry
# |       ^
# | <stdin>:807:7: note: with "ANN" equal to "%ann"
# | cont3: ; preds = %entry
# |       ^
# | <stdin>:807:7: note: with "TMP0" equal to "%0"
# | cont3: ; preds = %entry
# |       ^
# | <stdin>:810:13: note: possible intended match here
# |  %counted_by.gep = getelementptr inbounds nuw i8, ptr %2, i64 8
# |             ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/test/CodeGen/attr-counted-by.c:2120:29: error: SANITIZE-WITH-ATTR-NEXT: expected string not found in input
# | // SANITIZE-WITH-ATTR-NEXT: [[ARRAYIDX7:%.*]] = getelementptr inbounds i64, ptr [[ARRAY]], i64 [[IDXPROM4]]
# |                             ^
# | <stdin>:871:35: note: scanning from here
# |  %idxprom4 = sext i32 %idx1 to i64
# |                                   ^
# | <stdin>:871:35: note: with "ARRAY" equal to "%array"
# |  %idxprom4 = sext i32 %idx1 to i64
# |                                   ^
# | <stdin>:871:35: note: with "IDXPROM4" equal to "%idxprom4"
# |  %idxprom4 = sext i32 %idx1 to i64
# |                                   ^
# | <stdin>:872:6: note: possible intended match here
# |  %arrayidx7 = getelementptr inbounds [8 x i8], ptr %array, i64 %idxprom4
# |      ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/test/CodeGen/attr-counted-by.c:2380:29: error: SANITIZE-WITH-ATTR-NEXT: expected string not found in input
# | // SANITIZE-WITH-ATTR-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds nuw i32, ptr [[ARRAY]], i64 [[INDEX]]
# |                             ^
# | <stdin>:968:56: note: scanning from here
# |  %array = getelementptr inbounds nuw i8, ptr %p, i64 12
# |                                                        ^
# | <stdin>:968:56: note: with "ARRAY" equal to "%array"
# |  %array = getelementptr inbounds nuw i8, ptr %p, i64 12
# |                                                        ^
# | <stdin>:968:56: note: with "INDEX" equal to "%index"
# |  %array = getelementptr inbounds nuw i8, ptr %p, i64 12
# |                                                        ^
# | <stdin>:969:5: note: possible intended match here
# |  %arrayidx = getelementptr inbounds nuw [4 x i8], ptr %array, i64 %index
# |     ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/test/CodeGen/attr-counted-by.c:2513:76: error: undefined variable: INT_TBAA2
# | // SANITIZE-WITH-ATTR-NEXT: store i32 -42, ptr [[COUNT]], align 8, !tbaa [[INT_TBAA2]]
# |                                                                            ^
# | <stdin>:1001:57: note: with "COUNT" equal to "%count"
# |  %count = getelementptr inbounds nuw i8, ptr %ptr, i64 8
# |                                                         ^
# | <stdin>:1002:2: note: possible intended match here
# |  store i32 -42, ptr %count, align 8, !tbaa !2
# |  ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/test/CodeGen/attr-counted-by.c:2546:76: error: undefined variable: INT_TBAA2
# | // SANITIZE-WITH-ATTR-NEXT: store i32 -42, ptr [[COUNT]], align 8, !tbaa [[INT_TBAA2]]
# |                                                                            ^
# | <stdin>:1009:57: note: with "COUNT" equal to "%count"
# |  %count = getelementptr inbounds nuw i8, ptr %ptr, i64 8
# |                                                         ^
# | <stdin>:1010:2: note: possible intended match here
# |  store i32 -42, ptr %count, align 8, !tbaa !2
# |  ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/test/CodeGen/attr-counted-by.c:2607:113: error: undefined variable: PROF8
# | // SANITIZE-WITH-ATTR-NEXT: br i1 [[DOTNOT]], label %[[HANDLER_OUT_OF_BOUNDS:.*]], label %[[CONT3:.*]], !prof [[PROF8]], !nosanitize [[META6]]
# |                                                                                                                 ^
# | <stdin>:1020:42: note: with "DOTNOT" equal to "%.not"
# |  %.not = icmp eq i16 %.counted_by.load, 0
# |                                          ^
# | <stdin>:1020:42: note: with "META6" equal to "!6"
# |  %.not = icmp eq i16 %.counted_by.load, 0
# |                                          ^
# | <stdin>:1021:27: note: possible intended match here
# |  br i1 %.not, label %handler.out_of_bounds, label %cont3, !prof !8, !nosanitize !6
# |                           ^
# | 
# | Input file: <stdin>
# | Check file: /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/test/CodeGen/attr-counted-by.c
# | 
# | -dump-input=help explains the following input dump.
# | 
# | Input was:
# | <<<<<<
# |              .
# |              .
# |              .
# |             95:  tail call void @__ubsan_handle_out_of_bounds_abort(ptr nonnull @1, i64 %3) #8, !nosanitize !6 
# |             96:  unreachable, !nosanitize !6 
# |             97:  
# |             98: cont3: ; preds = %entry 
# |             99:  %array = getelementptr inbounds nuw i8, ptr %p, i64 12 
# |            100:  %idxprom = sext i32 %index to i64 
# | next:77'0                                         X error: no match found
# | next:77'1                                           with "ARRAY" equal to "%array"
# | next:77'2                                           with "IDXPROM" equal to "%idxprom"
# |            101:  %arrayidx = getelementptr inbounds [4 x i8], ptr %array, i64 %idxprom 
# | next:77'0       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | next:77'3           ?                                                                   possible intended match
# |            102:  store i32 %val, ptr %arrayidx, align 4, !tbaa !2 
# | next:77'0       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            103:  ret void 
# | next:77'0       ~~~~~~~~~~
# |            104: } 
# | next:77'0       ~~
# |            105:  
# | next:77'0       ~
# |            106: ; Function Attrs: noreturn nounwind uwtable 
# | next:77'0       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |              .
# |              .
# |              .
# |            123: handler.out_of_bounds: ; preds = %entry 
# |            124:  tail call void @__ubsan_handle_out_of_bounds_abort(ptr nonnull @3, i64 %index) #8, !nosanitize !6 
# |            125:  unreachable, !nosanitize !6 
# |            126:  
# |            127: cont6: ; preds = %entry 
# |            128:  %array = getelementptr inbounds nuw i8, ptr %p, i64 12 
# | next:127'0                                                             X error: no match found
# | next:127'1                                                               with "ARRAY" equal to "%array"
# | next:127'2                                                               with "INDEX" equal to "%index"
# |            129:  %arrayidx = getelementptr inbounds nuw [4 x i8], ptr %array, i64 %index 
# | next:127'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | next:127'3          ?                                                                     possible intended match
# |            130:  %conv = shl i32 %counted_by.load, 2 
# | next:127'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            131:  store i32 %conv, ptr %arrayidx, align 4, !tbaa !2 
# | next:127'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            132:  ret void 
# | next:127'0      ~~~~~~~~~~
# |            133: } 
# | next:127'0      ~~
# |            134:  
# | next:127'0      ~
# |              .
# |              .
# |              .
# |            170: handler.out_of_bounds: ; preds = %entry 
# |            171:  tail call void @__ubsan_handle_out_of_bounds_abort(ptr nonnull @4, i64 %index) #8, !nosanitize !6 
# |            172:  unreachable, !nosanitize !6 
# |            173:  
# |            174: cont3: ; preds = %entry 
# |            175:  %array = getelementptr inbounds nuw i8, ptr %p, i64 12 
# | next:251'0                                                             X error: no match found
# | next:251'1                                                               with "ARRAY" equal to "%array"
# | next:251'2                                                               with "INDEX" equal to "%index"
# |            176:  %arrayidx = getelementptr inbounds nuw [4 x i8], ptr %array, i64 %index 
# | next:251'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | next:251'3          ?                                                                     possible intended match
# |            177:  store i32 -1, ptr %arrayidx, align 4, !tbaa !2 
# | next:251'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            178:  ret void 
# | next:251'0      ~~~~~~~~~~
# |            179: } 
# | next:251'0      ~~
# |            180:  
# | next:251'0      ~
# |            181: ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(none) 
# | next:251'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |              .
# |              .
# |              .
# |            213:  tail call void @__ubsan_handle_out_of_bounds_abort(ptr nonnull @6, i64 %idxprom) #8, !nosanitize !6 
# |            214:  unreachable, !nosanitize !6 
# |            215:  
# |            216: cont12: ; preds = %cont1 
# |            217:  %result = add i32 %flexible_array_member_size, 244 
# |            218:  %2 = and i32 %result, 252 
# | next:355'0                                X error: no match found
# | next:355'1                                  with "ARRAY" equal to "%array"
# | next:355'2                                  with "IDXPROM" equal to "%idxprom"
# |            219:  %arrayidx10 = getelementptr inbounds nuw [4 x i8], ptr %array, i64 %idxprom 
# | next:355'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | next:355'3            ?                                                                       possible intended match
# |            220:  store i32 %2, ptr %arrayidx10, align 4, !tbaa !2 
# | next:355'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            221:  %.not79 = icmp eq i32 %.counted_by.load, 3 
# | next:355'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            222:  br i1 %.not79, label %handler.out_of_bounds18, label %cont19, !prof !8, !nosanitize !6 
# | next:355'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            223:  
# | next:355'0      ~
# |            224: handler.out_of_bounds18: ; preds = %cont12 
# | next:355'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |              .
# |              .
# |              .
# |            335: handler.out_of_bounds: ; preds = %entry 
# |            336:  tail call void @__ubsan_handle_out_of_bounds_abort(ptr nonnull @12, i64 %idxprom) #8, !nosanitize !6 
# |            337:  unreachable, !nosanitize !6 
# |            338:  
# |            339: cont3: ; preds = %entry 
# |            340:  %1 = getelementptr inbounds nuw i8, ptr %p, i64 16 
# | next:619'0                                                         X error: no match found
# | next:619'1                                                           with "TMP1" equal to "%1"
# | next:619'2                                                           with "IDXPROM" equal to "%idxprom"
# |            341:  %arrayidx = getelementptr inbounds [4 x i8], ptr %1, i64 %idxprom 
# | next:619'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | next:619'3                 ?                                                        possible intended match
# |            342:  store i32 -1, ptr %arrayidx, align 4, !tbaa !2 
# | next:619'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            343:  ret void 
# | next:619'0      ~~~~~~~~~~
# |            344: } 
# | next:619'0      ~~
# |            345:  
# | next:619'0      ~
# |            346: ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(none) 
# | next:619'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |              .
# |              .
# |              .
# |            361: handler.out_of_bounds: ; preds = %entry 
# |            362:  tail call void @__ubsan_handle_out_of_bounds_abort(ptr nonnull @13, i64 %idxprom) #8, !nosanitize !6 
# |            363:  unreachable, !nosanitize !6 
# |            364:  
# |            365: cont6: ; preds = %entry 
# |            366:  %1 = getelementptr inbounds nuw i8, ptr %p, i64 16 
# | next:691'0                                                         X error: no match found
# | next:691'1                                                           with "TMP1" equal to "%1"
# | next:691'2                                                           with "IDXPROM" equal to "%idxprom"
# |            367:  %arrayidx = getelementptr inbounds [4 x i8], ptr %1, i64 %idxprom 
# | next:691'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | next:691'3                 ?                                                        possible intended match
# |            368:  %flexible_array_member_size = shl nuw i64 %counted_by.load, 2 
# | next:691'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            369:  %2 = tail call i64 @llvm.smax.i64(i64 %flexible_array_member_size, i64 0) 
# | next:691'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            370:  %conv = trunc i64 %2 to i32 
# | next:691'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            371:  store i32 %conv, ptr %arrayidx, align 4, !tbaa !2 
# | next:691'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            372:  ret void 
# | next:691'0      ~~~~~~~~~~
# |              .
# |              .
# |              .
# |            519:  tail call void @__ubsan_handle_out_of_bounds_abort(ptr nonnull @20, i64 %3) #8, !nosanitize !6 
# |            520:  unreachable, !nosanitize !6 
# |            521:  
# |            522: cont6: ; preds = %entry 
# |            523:  %array = getelementptr inbounds nuw i8, ptr %p, i64 12 
# |            524:  %idxprom = sext i32 %index to i64 
# | next:1101'0                                       X error: no match found
# | next:1101'1                                         with "ARRAY" equal to "%array"
# | next:1101'2                                         with "IDXPROM" equal to "%idxprom"
# |            525:  %arrayidx = getelementptr inbounds [4 x i8], ptr %array, i64 %idxprom 
# | next:1101'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | next:1101'3         ?                                                                   possible intended match
# |            526:  %flexible_array_member_size = shl i32 %counted_by.load, 2 
# | next:1101'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            527:  %result = add i32 %flexible_array_member_size, 8 
# | next:1101'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            528:  store i32 %result, ptr %arrayidx, align 4, !tbaa !2 
# | next:1101'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            529:  ret void 
# | next:1101'0     ~~~~~~~~~~
# |            530: } 
# | next:1101'0     ~~
# |              .
# |              .
# |              .
# |            554:  
# |            555: handler.out_of_bounds: ; preds = %entry 
# |            556:  tail call void @__ubsan_handle_out_of_bounds_abort(ptr nonnull @22, i64 %0) #8, !nosanitize !6 
# |            557:  unreachable, !nosanitize !6 
# |            558:  
# |            559: cont: ; preds = %entry 
# | next:1210'0          X~~~~~~~~~~~~~~~~~ error: no match found
# | next:1210'1                             with "BAZ" equal to "%baz"
# | next:1210'2                             with "TMP0" equal to "%0"
# |            560:  %arrayidx = getelementptr inbounds nuw [4 x i8], ptr %baz, i64 %0 
# | next:1210'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            561:  %2 = load i32, ptr %arrayidx, align 4, !tbaa !2 
# | next:1210'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            562:  store i32 %2, ptr @test12_b, align 4, !tbaa !2 
# | next:1210'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            563:  %.counted_by.load = load i32, ptr @test12_foo, align 4 
# | next:1210'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            564:  %3 = icmp sgt i32 %.counted_by.load, 0, !nosanitize !6 
# | next:1210'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |              .
# |              .
# |              .
# |            567: handler.out_of_bounds4: ; preds = %cont 
# | next:1210'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            568:  tail call void @__ubsan_handle_out_of_bounds_abort(ptr nonnull @24, i64 0) #8, !nosanitize !6 
# | next:1210'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            569:  unreachable, !nosanitize !6 
# | next:1210'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            570:  
# | next:1210'0     ~
# |            571: handler.type_mismatch6: ; preds = %cont 
# | next:1210'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            572:  tail call void @__ubsan_handle_type_mismatch_v1_abort(ptr nonnull @25, i64 ptrtoint (ptr getelementptr inbounds nuw (i8, ptr @test12_foo, i64 4) to i64)) #8, !nosanitize !6 
# | next:1210'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | next:1210'3                                                                                       ?                                                                                            possible intended match
# |            573:  unreachable, !nosanitize !6 
# | next:1210'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            574: } 
# | next:1210'0     ~~
# |            575:  
# | next:1210'0     ~
# |            576: ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) 
# | next:1210'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            577: declare void @llvm.lifetime.start.p0(ptr captures(none)) #4 
# | next:1210'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |              .
# |              .
# |              .
# |            594: handler.out_of_bounds: ; preds = %entry 
# |            595:  tail call void @__ubsan_handle_out_of_bounds_abort(ptr nonnull @28, i64 %index) #8, !nosanitize !6 
# |            596:  unreachable, !nosanitize !6 
# |            597:  
# |            598: cont5: ; preds = %entry 
# |            599:  %revmap = getelementptr inbounds nuw i8, ptr %0, i64 16 
# | next:1316'0                                                             X error: no match found
# | next:1316'1                                                               with "REVMAP" equal to "%revmap"
# | next:1316'2                                                               with "INDEX" equal to "%index"
# |            600:  %arrayidx = getelementptr inbounds nuw [8 x i8], ptr %revmap, i64 %index 
# | next:1316'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | next:1316'3         ?                                                                      possible intended match
# |            601:  store ptr null, ptr %arrayidx, align 8, !tbaa !15 
# | next:1316'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            602:  ret i32 0 
# | next:1316'0     ~~~~~~~~~~~
# |            603: } 
# | next:1316'0     ~~
# |            604:  
# | next:1316'0     ~
# |            605: ; Function Attrs: noreturn nounwind 
# | next:1316'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            606: define dso_local noundef i32 @test14(i32 noundef %idx) local_unnamed_addr #3 { 
# | next:1316'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            607: entry: 
# |            608:  %.compoundliteral = alloca %struct.test14_foo, align 4 
# | next:1372'0                                                            X error: match failed for invalid pattern
# | next:1372'1                                                              undefined variable: INT_TBAA2
# | next:1372'2                                                              with "DOTCOMPOUNDLITERAL" equal to "%.compoundliteral"
# |            609:  store i32 1, ptr %.compoundliteral, align 4, !tbaa !2 
# | next:1372'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            610:  %y = getelementptr inbounds nuw i8, ptr %.compoundliteral, i64 4 
# | next:1372'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            611:  store i32 2, ptr %y, align 4, !tbaa !2 
# | next:1372'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | next:1372'3      ?                                       possible intended match
# |            612:  %0 = icmp eq i32 %idx, 0 
# | next:1372'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            613:  br i1 %0, label %handler.type_mismatch2, label %handler.out_of_bounds, !prof !7, !nosanitize !6 
# | next:1372'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            614:  
# | next:1372'0     ~
# |            615: handler.out_of_bounds: ; preds = %entry 
# | next:1372'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            616:  %1 = zext i32 %idx to i64, !nosanitize !6 
# | next:1372'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |              .
# |              .
# |              .
# |            696: handler.out_of_bounds: ; preds = %entry 
# |            697:  tail call void @__ubsan_handle_out_of_bounds_abort(ptr nonnull @35, i64 10) #8, !nosanitize !6 
# |            698:  unreachable, !nosanitize !6 
# |            699:  
# |            700: cont4: ; preds = %entry 
# |            701:  %arrayidx2 = getelementptr inbounds nuw i8, ptr %var, i64 84 
# | next:1647'0                                                                  X error: match failed for invalid pattern
# | next:1647'1                                                                    undefined variable: INT_TBAA2
# | next:1647'2                                                                    with "ARRAYIDX2" equal to "%arrayidx2"
# |            702:  %1 = load i32, ptr %arrayidx2, align 4, !tbaa !2 
# | next:1647'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | next:1647'3      ?                                                 possible intended match
# |            703:  ret i32 %1 
# | next:1647'0     ~~~~~~~~~~~~
# |            704: } 
# | next:1647'0     ~~
# |            705:  
# | next:1647'0     ~
# |            706: ; Function Attrs: nounwind 
# | next:1647'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            707: define dso_local i32 @test25(i32 noundef %c, ptr noundef %var) local_unnamed_addr #0 { 
# | next:1647'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |              .
# |              .
# |              .
# |            714: handler.out_of_bounds: ; preds = %entry 
# |            715:  tail call void @__ubsan_handle_out_of_bounds_abort(ptr nonnull @36, i64 10) #8, !nosanitize !6 
# |            716:  unreachable, !nosanitize !6 
# |            717:  
# |            718: cont5: ; preds = %entry 
# |            719:  %arrayidx = getelementptr inbounds nuw i8, ptr %0, i64 44 
# | next:1688'0                                                               X error: match failed for invalid pattern
# | next:1688'1                                                                 undefined variable: INT_TBAA2
# | next:1688'2                                                                 with "ARRAYIDX" equal to "%arrayidx"
# |            720:  %2 = load i32, ptr %arrayidx, align 4, !tbaa !2 
# | next:1688'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | next:1688'3         ?                                             possible intended match
# |            721:  ret i32 %2 
# | next:1688'0     ~~~~~~~~~~~~
# |            722: } 
# | next:1688'0     ~~
# |            723:  
# | next:1688'0     ~
# |            724: ; Function Attrs: nounwind 
# | next:1688'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            725: define dso_local i32 @test26(i32 noundef %c, ptr noundef %foo) local_unnamed_addr #0 { 
# | next:1688'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |              .
# |              .
# |              .
# |            736:  tail call void @__ubsan_handle_out_of_bounds_abort(ptr nonnull @37, i64 %3) #8, !nosanitize !6 
# |            737:  unreachable, !nosanitize !6 
# |            738:  
# |            739: cont5: ; preds = %entry 
# |            740:  %arr = getelementptr inbounds nuw i8, ptr %foo, i64 8 
# |            741:  %idxprom = sext i32 %c to i64 
# | next:1742'0                                   X error: no match found
# | next:1742'1                                     with "ARR" equal to "%arr"
# | next:1742'2                                     with "IDXPROM" equal to "%idxprom"
# |            742:  %arrayidx = getelementptr inbounds [4 x i8], ptr %arr, i64 %idxprom 
# | next:1742'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | next:1742'3         ?                                                                 possible intended match
# |            743:  %4 = load i32, ptr %arrayidx, align 4, !tbaa !2 
# | next:1742'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            744:  ret i32 %4 
# | next:1742'0     ~~~~~~~~~~~~
# |            745: } 
# | next:1742'0     ~~
# |            746:  
# | next:1742'0     ~
# |            747: ; Function Attrs: nounwind 
# | next:1742'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |              .
# |              .
# |              .
# |            757:  tail call void @__ubsan_handle_out_of_bounds_abort(ptr nonnull @39, i64 %1) #8, !nosanitize !6 
# |            758:  unreachable, !nosanitize !6 
# |            759:  
# |            760: cont3: ; preds = %entry 
# |            761:  %entries = getelementptr inbounds nuw i8, ptr %p, i64 24 
# |            762:  %idxprom = sext i32 %i to i64 
# | next:1813'0                                   X error: no match found
# | next:1813'1                                     with "ENTRIES" equal to "%entries"
# | next:1813'2                                     with "IDXPROM" equal to "%idxprom"
# |            763:  %arrayidx = getelementptr inbounds [8 x i8], ptr %entries, i64 %idxprom 
# | next:1813'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | next:1813'3         ?                                                                     possible intended match
# |            764:  %2 = load ptr, ptr %arrayidx, align 8, !tbaa !19 
# | next:1813'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            765:  %idxprom4 = sext i32 %j to i64 
# | next:1813'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            766:  %arrayidx5 = getelementptr inbounds [6 x i8], ptr %2, i64 %idxprom4 
# | next:1813'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            767:  ret ptr %arrayidx5 
# | next:1813'0     ~~~~~~~~~~~~~~~~~~~~
# |            768: } 
# | next:1813'0     ~~
# |              .
# |              .
# |              .
# |            785:  tail call void @__ubsan_handle_out_of_bounds_abort(ptr nonnull @41, i64 %6) #8, !nosanitize !6 
# |            786:  unreachable, !nosanitize !6 
# |            787:  
# |            788: cont17: ; preds = %entry 
# |            789:  %arr = getelementptr inbounds nuw i8, ptr %2, i64 12 
# |            790:  %idxprom = sext i32 %i to i64 
# | next:1881'0                                   X error: no match found
# | next:1881'1                                     with "ARR" equal to "%arr"
# | next:1881'2                                     with "IDXPROM" equal to "%idxprom"
# |            791:  %arrayidx = getelementptr inbounds [4 x i8], ptr %arr, i64 %idxprom 
# | next:1881'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | next:1881'3         ?                                                                 possible intended match
# |            792:  %7 = load i32, ptr %arrayidx, align 4, !tbaa !2 
# | next:1881'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            793:  ret i32 %7 
# | next:1881'0     ~~~~~~~~~~~~
# |            794: } 
# | next:1881'0     ~~
# |            795:  
# | next:1881'0     ~
# |            796: ; Function Attrs: nounwind 
# | next:1881'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |              .
# |              .
# |              .
# |            802:  
# |            803: handler.out_of_bounds: ; preds = %entry 
# |            804:  tail call void @__ubsan_handle_out_of_bounds_abort(ptr nonnull @43, i64 %0) #8, !nosanitize !6 
# |            805:  unreachable, !nosanitize !6 
# |            806:  
# |            807: cont3: ; preds = %entry 
# | next:1942'0           X~~~~~~~~~~~~~~~~~ error: no match found
# | next:1942'1                              with "ANN" equal to "%ann"
# | next:1942'2                              with "TMP0" equal to "%0"
# |            808:  %arrayidx = getelementptr inbounds nuw [8 x i8], ptr %ann, i64 %0 
# | next:1942'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            809:  %2 = load ptr, ptr %arrayidx, align 8, !tbaa !23 
# | next:1942'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            810:  %counted_by.gep = getelementptr inbounds nuw i8, ptr %2, i64 8 
# | next:1942'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | next:1942'3                 ?                                                    possible intended match
# |            811:  %counted_by.load = load i32, ptr %counted_by.gep, align 4 
# | next:1942'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            812:  %3 = icmp ult i32 %idx2, %counted_by.load, !nosanitize !6 
# | next:1942'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            813:  %4 = icmp sgt i32 %counted_by.load, 0, !nosanitize !6 
# | next:1942'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            814:  %5 = and i1 %4, %3, !nosanitize !6 
# | next:1942'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            815:  br i1 %5, label %cont32, label %handler.out_of_bounds28, !prof !7, !nosanitize !6 
# | next:1942'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |              .
# |              .
# |              .
# |            866:  tail call void @__ubsan_handle_out_of_bounds_abort(ptr nonnull @50, i64 %5) #8, !nosanitize !6 
# |            867:  unreachable, !nosanitize !6 
# |            868:  
# |            869: cont9: ; preds = %cont1 
# |            870:  %array = getelementptr inbounds nuw i8, ptr %ptr, i64 344 
# |            871:  %idxprom4 = sext i32 %idx1 to i64 
# | next:2120'0                                       X error: no match found
# | next:2120'1                                         with "ARRAY" equal to "%array"
# | next:2120'2                                         with "IDXPROM4" equal to "%idxprom4"
# |            872:  %arrayidx7 = getelementptr inbounds [8 x i8], ptr %array, i64 %idxprom4 
# | next:2120'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | next:2120'3          ?                                                                    possible intended match
# |            873:  %count = zext nneg i32 %counted_by.load to i64 
# | next:2120'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            874:  %6 = sub nsw i64 %count, %0 
# | next:2120'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            875:  %reass.sub = shl nsw i64 %6, 3 
# | next:2120'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            876:  %result = add nsw i64 %reass.sub, 344 
# | next:2120'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            877:  store i64 %result, ptr %arrayidx7, align 8, !tbaa !25 
# | next:2120'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |              .
# |              .
# |              .
# |            963: handler.out_of_bounds: ; preds = %entry 
# |            964:  tail call void @__ubsan_handle_out_of_bounds_abort(ptr nonnull @55, i64 %index) #8, !nosanitize !6 
# |            965:  unreachable, !nosanitize !6 
# |            966:  
# |            967: cont3: ; preds = %entry 
# |            968:  %array = getelementptr inbounds nuw i8, ptr %p, i64 12 
# | next:2380'0                                                            X error: no match found
# | next:2380'1                                                              with "ARRAY" equal to "%array"
# | next:2380'2                                                              with "INDEX" equal to "%index"
# |            969:  %arrayidx = getelementptr inbounds nuw [4 x i8], ptr %array, i64 %index 
# | next:2380'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | next:2380'3         ?                                                                     possible intended match
# |            970:  store i32 0, ptr %arrayidx, align 4, !tbaa !2 
# | next:2380'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            971:  ret void 
# | next:2380'0     ~~~~~~~~~~
# |            972: } 
# | next:2380'0     ~~
# |            973:  
# | next:2380'0     ~
# |            974: ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(none) 
# | next:2380'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |              .
# |              .
# |              .
# |            996: } 
# |            997:  
# |            998: ; Function Attrs: nounwind 
# |            999: define dso_local noundef i64 @test38(ptr noundef %ptr) local_unnamed_addr #0 { 
# |           1000: entry: 
# |           1001:  %count = getelementptr inbounds nuw i8, ptr %ptr, i64 8 
# | next:2513'0                                                             X error: match failed for invalid pattern
# | next:2513'1                                                               undefined variable: INT_TBAA2
# | next:2513'2                                                               with "COUNT" equal to "%count"
# |           1002:  store i32 -42, ptr %count, align 8, !tbaa !2 
# | next:2513'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | next:2513'3      ?                                             possible intended match
# |           1003:  ret i64 0 
# | next:2513'0     ~~~~~~~~~~~
# |           1004: } 
# | next:2513'0     ~~
# |           1005:  
# | next:2513'0     ~
# |           1006: ; Function Attrs: noreturn nounwind 
# | next:2513'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           1007: define dso_local noundef range(i64 -2147483648, 2147483648) i64 @test39(ptr noundef %ptr, i32 noundef %index) local_unnamed_addr #3 { 
# | next:2513'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           1008: entry: 
# |           1009:  %count = getelementptr inbounds nuw i8, ptr %ptr, i64 8 
# | next:2546'0                                                             X error: match failed for invalid pattern
# | next:2546'1                                                               undefined variable: INT_TBAA2
# | next:2546'2                                                               with "COUNT" equal to "%count"
# |           1010:  store i32 -42, ptr %count, align 8, !tbaa !2 
# | next:2546'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | next:2546'3      ?                                             possible intended match
# |           1011:  %0 = zext i32 %index to i64, !nosanitize !6 
# | next:2546'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           1012:  tail call void @__ubsan_handle_out_of_bounds_abort(ptr nonnull @56, i64 %0) #8, !nosanitize !6 
# | next:2546'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           1013:  unreachable, !nosanitize !6 
# | next:2546'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           1014: } 
# | next:2546'0     ~~
# |           1015:  
# | next:2546'0     ~
# |           1016: ; Function Attrs: nounwind 
# | next:2546'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           1017: define dso_local ptr @test40(ptr noundef %q) local_unnamed_addr #0 { 
# | next:2546'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           1018: entry: 
# |           1019:  %.counted_by.load = load i16, ptr %q, align 4 
# |           1020:  %.not = icmp eq i16 %.counted_by.load, 0 
# | next:2607'0                                              X error: match failed for invalid pattern
# | next:2607'1                                                undefined variable: PROF8
# | next:2607'2                                                with "DOTNOT" equal to "%.not"
# | next:2607'3                                                with "META6" equal to "!6"
# |           1021:  br i1 %.not, label %handler.out_of_bounds, label %cont3, !prof !8, !nosanitize !6 
# | next:2607'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | next:2607'4                               ?                                                         possible intended match
# |           1022:  
# | next:2607'0     ~
# |           1023: handler.out_of_bounds: ; preds = %entry 
# | next:2607'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           1024:  tail call void @__ubsan_handle_out_of_bounds_abort(ptr nonnull @58, i64 0) #8, !nosanitize !6 
# | next:2607'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           1025:  unreachable, !nosanitize !6 
# | next:2607'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           1026:  
# | next:2607'0     ~
# |              .
# |              .
# |              .
# | >>>>>>
# `-----------------------------
# error: command failed with exit status: 1

--

```
</details>
<details>
<summary>Clang.CodeGen/union-tbaa1.c</summary>

```
Exit Code: 1

Command Output (stdout):
--
# RUN: at line 2
/home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/clang -cc1 -internal-isystem /home/gha/actions-runner/_work/llvm-project/llvm-project/build/lib/clang/23/include -nostdsysteminc /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/test/CodeGen/union-tbaa1.c -triple hexagon-unknown-elf -O2 -emit-llvm -o - | /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/test/CodeGen/union-tbaa1.c
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/clang -cc1 -internal-isystem /home/gha/actions-runner/_work/llvm-project/llvm-project/build/lib/clang/23/include -nostdsysteminc /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/test/CodeGen/union-tbaa1.c -triple hexagon-unknown-elf -O2 -emit-llvm -o -
# 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/clang/test/CodeGen/union-tbaa1.c
# .---command stderr------------
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/test/CodeGen/union-tbaa1.c:17:16: error: CHECK-NEXT: expected string not found in input
# | // CHECK-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x i32], ptr [[ARR]], i32 [[TMP0]]
# |                ^
# | <stdin>:13:46: note: scanning from here
# |  %0 = load i32, ptr %Index, align 4, !tbaa !2
# |                                              ^
# | <stdin>:13:46: note: with "ARR" equal to "%Arr"
# |  %0 = load i32, ptr %Index, align 4, !tbaa !2
# |                                              ^
# | <stdin>:13:46: note: with "TMP0" equal to "%0"
# |  %0 = load i32, ptr %Index, align 4, !tbaa !2
# |                                              ^
# | <stdin>:14:7: note: possible intended match here
# |  %arrayidx = getelementptr inbounds [8 x i8], ptr %Arr, i32 %0
# |       ^
# | 
# | Input file: <stdin>
# | Check file: /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/test/CodeGen/union-tbaa1.c
# | 
# | -dump-input=help explains the following input dump.
# | 
# | Input was:
# | <<<<<<
# |            .
# |            .
# |            .
# |            8: ; Function Attrs: nounwind 
# |            9: define dso_local void @fred(i32 noundef %Num, ptr noundef writeonly captures(none) initializes((0, 8)) %Vec, ptr noundef readonly captures(none) %Index, ptr noundef readonly captures(none) %Arr) local_unnamed_addr #0 { 
# |           10: entry: 
# |           11:  %Tmp = alloca [4 x [2 x %union.vect32]], align 8 
# |           12:  call void @llvm.lifetime.start.p0(ptr nonnull %Tmp) #3 
# |           13:  %0 = load i32, ptr %Index, align 4, !tbaa !2 
# | next:17'0                                                  X error: no match found
# | next:17'1                                                    with "ARR" equal to "%Arr"
# | next:17'2                                                    with "TMP0" equal to "%0"
# |           14:  %arrayidx = getelementptr inbounds [8 x i8], ptr %Arr, i32 %0 
# | next:17'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | next:17'3           ?                                                         possible intended match
# |           15:  %1 = load i32, ptr %arrayidx, align 4, !tbaa !2 
# | next:17'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           16:  %mul = mul i32 %1, %Num 
# | next:17'0     ~~~~~~~~~~~~~~~~~~~~~~~~~
# |           17:  %arrayidx2 = getelementptr inbounds [8 x i8], ptr %Tmp, i32 %0 
# | next:17'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           18:  store i32 %mul, ptr %arrayidx2, align 8, !tbaa !6 
# | next:17'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           19:  %arrayidx5 = getelementptr inbounds nuw i8, ptr %arrayidx, i32 4 
# | next:17'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            .
# |            .
# |            .
# | >>>>>>
# `-----------------------------
# error: command failed with exit status: 1

--

```
</details>
<details>
<summary>Clang.OpenMP/taskloop_strictmodifier_codegen.cpp</summary>

```
Exit Code: 1

Command Output (stdout):
--
# RUN: at line 2
/home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/clang -cc1 -internal-isystem /home/gha/actions-runner/_work/llvm-project/llvm-project/build/lib/clang/23/include -nostdsysteminc -fopenmp -O1 -x c++ -triple x86_64-apple-darwin10 -emit-llvm /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/test/OpenMP/taskloop_strictmodifier_codegen.cpp -o - | /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck --allow-unused-prefixes /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/test/OpenMP/taskloop_strictmodifier_codegen.cpp --check-prefix=CHECK
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/clang -cc1 -internal-isystem /home/gha/actions-runner/_work/llvm-project/llvm-project/build/lib/clang/23/include -nostdsysteminc -fopenmp -O1 -x c++ -triple x86_64-apple-darwin10 -emit-llvm /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/test/OpenMP/taskloop_strictmodifier_codegen.cpp -o -
# note: command had no output on stdout or stderr
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck --allow-unused-prefixes /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/test/OpenMP/taskloop_strictmodifier_codegen.cpp --check-prefix=CHECK
# .---command stderr------------
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/test/OpenMP/taskloop_strictmodifier_codegen.cpp:78:16: error: CHECK-NEXT: expected string not found in input
# | // CHECK-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds ptr, ptr [[TMP15]], i64 [[IDXPROM]]
# |                ^
# | <stdin>:56:32: note: scanning from here
# |  %idxprom = sext i32 %14 to i64
# |                                ^
# | <stdin>:56:32: note: with "TMP15" equal to "%15"
# |  %idxprom = sext i32 %14 to i64
# |                                ^
# | <stdin>:56:32: note: with "IDXPROM" equal to "%idxprom"
# |  %idxprom = sext i32 %14 to i64
# |                                ^
# | <stdin>:59:9: note: possible intended match here
# |  %arrayidx9 = getelementptr inbounds i8, ptr %16, i64 %idxprom
# |         ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/test/OpenMP/taskloop_strictmodifier_codegen.cpp:161:67: error: undefined variable: CHAR_TBAA19
# | // CHECK-NEXT: store i32 [[TMP4]], ptr [[TMP6]], align 8, !tbaa [[CHAR_TBAA19]]
# |                                                                   ^
# | <stdin>:163:52: note: with "TMP4" equal to "%4"
# |  %6 = getelementptr inbounds nuw i8, ptr %5, i64 32
# |                                                    ^
# | <stdin>:163:52: note: with "TMP6" equal to "%6"
# |  %6 = getelementptr inbounds nuw i8, ptr %5, i64 32
# |                                                    ^
# | <stdin>:164:2: note: possible intended match here
# |  store i32 %4, ptr %6, align 8, !tbaa !19
# |  ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/test/OpenMP/taskloop_strictmodifier_codegen.cpp:200:72: error: undefined variable: ANYPTR_TBAA20
# | // CHECK-NEXT: [[TMP2:%.*]] = load ptr, ptr [[TMP1]], align 8, !tbaa [[ANYPTR_TBAA20]]
# |                                                                        ^
# | <stdin>:213:7: note: with "TMP1" equal to "%1"
# | entry:
# |       ^
# | <stdin>:227:2: note: possible intended match here
# |  %10 = load ptr, ptr %9, align 8, !tbaa !37, !alias.scope !30, !nonnull !35, !align !38
# |  ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/test/OpenMP/taskloop_strictmodifier_codegen.cpp:273:72: error: undefined variable: ANYPTR_TBAA20
# | // CHECK-NEXT: [[TMP5:%.*]] = load ptr, ptr [[TMP4]], align 8, !tbaa [[ANYPTR_TBAA20]]
# |                                                                        ^
# | <stdin>:299:124: note: with "TMP4" equal to "%4"
# |  %4 = tail call ptr @__kmpc_omp_task_alloc(ptr nonnull @1, i32 %0, i32 1, i64 80, i64 16, ptr nonnull @.omp_task_entry..10)
# |                                                                                                                            ^
# | <stdin>:300:2: note: possible intended match here
# |  %5 = load ptr, ptr %4, align 8, !tbaa !20
# |  ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/test/OpenMP/taskloop_strictmodifier_codegen.cpp:298:72: error: undefined variable: ANYPTR_TBAA20
# | // CHECK-NEXT: [[TMP2:%.*]] = load ptr, ptr [[TMP1]], align 8, !tbaa [[ANYPTR_TBAA20]]
# |                                                                        ^
# | <stdin>:325:7: note: with "TMP1" equal to "%1"
# | entry:
# |       ^
# | <stdin>:326:2: note: possible intended match here
# |  %2 = load ptr, ptr %1, align 8, !tbaa !20
# |  ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/test/OpenMP/taskloop_strictmodifier_codegen.cpp:343:13: error: undefined variable: CHARPTR_TBAA17
# | // CHECK: [[CHARPTR_TBAA17]] = !{[[META18:![0-9]+]], [[META18]], i64 0}
# |             ^
# | <stdin>:416:3: note: possible intended match here
# | !39 = !{!40, !4, i64 0}
# |   ^
# | 
# | Input file: <stdin>
# | Check file: /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/test/OpenMP/taskloop_strictmodifier_codegen.cpp
# | 
# | -dump-input=help explains the following input dump.
# | 
# | Input was:
# | <<<<<<
# |              .
# |              .
# |              .
# |             51:  
# |             52: omp_if.then2: ; preds = %omp_if.end 
# |             53:  tail call void @__kmpc_taskgroup(ptr nonnull @1, i32 %0) 
# |             54:  %14 = load i32, ptr %argc.addr, align 4, !tbaa !3 
# |             55:  %15 = load ptr, ptr %argv.addr, align 8, !tbaa !7 
# |             56:  %idxprom = sext i32 %14 to i64 
# | next:78'0                                      X error: no match found
# | next:78'1                                        with "TMP15" equal to "%15"
# | next:78'2                                        with "IDXPROM" equal to "%idxprom"
# |             57:  %arrayidx = getelementptr inbounds [8 x i8], ptr %15, i64 %idxprom 
# | next:78'0       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |             58:  %16 = load ptr, ptr %arrayidx, align 8, !tbaa !17 
# | next:78'0       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |             59:  %arrayidx9 = getelementptr inbounds i8, ptr %16, i64 %idxprom 
# | next:78'0       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | next:78'3               ?                                                       possible intended match
# |             60:  %17 = load i8, ptr %arrayidx9, align 1, !tbaa !19 
# | next:78'0       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |             61:  %conv = sext i8 %17 to i32 
# | next:78'0       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |             62:  %sub12 = sub i32 %conv, %14 
# | next:78'0       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |             63:  %conv15 = zext i32 %sub12 to i64 
# | next:78'0       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |             64:  %mul = mul nsw i64 %conv15, %idxprom 
# | next:78'0       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |              .
# |              .
# |              .
# |            158: omp_if.then.i: ; preds = %entry 
# |            159:  %3 = getelementptr inbounds nuw i8, ptr %1, i64 40 
# |            160:  tail call void @__kmpc_taskgroup(ptr nonnull @1, i32 %0) 
# |            161:  %4 = load i32, ptr %3, align 4, !tbaa !3 
# |            162:  %5 = tail call ptr @__kmpc_omp_task_alloc(ptr nonnull @1, i32 %0, i32 33, i64 80, i64 1, ptr nonnull @.omp_task_entry.) 
# |            163:  %6 = getelementptr inbounds nuw i8, ptr %5, i64 32 
# | next:161'0                                                         X error: match failed for invalid pattern
# | next:161'1                                                           undefined variable: CHAR_TBAA19
# | next:161'2                                                           with "TMP4" equal to "%4"
# | next:161'3                                                           with "TMP6" equal to "%6"
# |            164:  store i32 %4, ptr %6, align 8, !tbaa !19 
# | next:161'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | next:161'4       ?                                         possible intended match
# |            165:  %7 = getelementptr inbounds nuw i8, ptr %5, i64 40 
# | next:161'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            166:  store i64 0, ptr %7, align 8, !tbaa !15 
# | next:161'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            167:  %8 = getelementptr inbounds nuw i8, ptr %5, i64 48 
# | next:161'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            168:  store i64 9, ptr %8, align 8, !tbaa !15 
# | next:161'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            169:  %9 = getelementptr inbounds nuw i8, ptr %5, i64 56 
# | next:161'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |              .
# |              .
# |              .
# |            208:  
# |            209: declare void @__kmpc_taskloop_5(ptr, i32, ptr, i32, ptr, ptr, i64, i32, i32, i64, i32, ptr) local_unnamed_addr 
# |            210:  
# |            211: ; Function Attrs: nofree norecurse nosync nounwind memory(read, inaccessiblemem: readwrite, target_mem0: none, target_mem1: none) 
# |            212: define internal noundef i32 @.omp_task_entry..6(i32 %0, ptr noalias noundef readonly captures(none) %1) #5 { 
# |            213: entry: 
# | next:200'0            X error: match failed for invalid pattern
# | next:200'1              undefined variable: ANYPTR_TBAA20
# | next:200'2              with "TMP1" equal to "%1"
# |            214:  %2 = load ptr, ptr %1, align 8, !tbaa !20 
# | next:200'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            215:  %3 = getelementptr inbounds nuw i8, ptr %1, i64 40 
# | next:200'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            216:  %4 = load i64, ptr %3, align 8, !tbaa !28 
# | next:200'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            217:  %5 = getelementptr inbounds nuw i8, ptr %1, i64 48 
# | next:200'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            218:  %6 = load i64, ptr %5, align 8, !tbaa !29 
# | next:200'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |              .
# |              .
# |              .
# |            222:  %cmp.i = icmp sgt i32 %8, 0 
# | next:200'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            223:  br i1 %cmp.i, label %land.lhs.true.i, label %.omp_outlined..5.exit 
# | next:200'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            224:  
# | next:200'0      ~
# |            225: land.lhs.true.i: ; preds = %entry 
# | next:200'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            226:  %9 = getelementptr inbounds nuw i8, ptr %2, i64 8 
# | next:200'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            227:  %10 = load ptr, ptr %9, align 8, !tbaa !37, !alias.scope !30, !nonnull !35, !align !38 
# | next:200'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | next:200'3       ?                                                                                       possible intended match
# |            228:  %11 = load ptr, ptr %10, align 8, !tbaa !7, !noalias !30 
# | next:200'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            229:  %idxprom.i = zext nneg i32 %8 to i64 
# | next:200'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            230:  %arrayidx.i = getelementptr inbounds nuw [8 x i8], ptr %11, i64 %idxprom.i 
# | next:200'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            231:  %12 = load ptr, ptr %arrayidx.i, align 8, !tbaa !17, !noalias !30 
# | next:200'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            232:  %arrayidx5.i = getelementptr inbounds nuw i8, ptr %12, i64 %idxprom.i 
# | next:200'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |              .
# |              .
# |              .
# |            294: omp_if.then: ; preds = %entry 
# |            295:  %2 = load i32, ptr %this, align 4, !tbaa !39 
# |            296:  tail call void @__kmpc_taskgroup(ptr nonnull @1, i32 %0) 
# |            297:  %3 = load i32, ptr %c.addr, align 4, !tbaa !3 
# |            298:  %sub4 = add nsw i32 %3, -1 
# |            299:  %4 = tail call ptr @__kmpc_omp_task_alloc(ptr nonnull @1, i32 %0, i32 1, i64 80, i64 16, ptr nonnull @.omp_task_entry..10) 
# | next:273'0                                                                                                                                 X error: match failed for invalid pattern
# | next:273'1                                                                                                                                   undefined variable: ANYPTR_TBAA20
# | next:273'2                                                                                                                                   with "TMP4" equal to "%4"
# |            300:  %5 = load ptr, ptr %4, align 8, !tbaa !20 
# | next:273'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | next:273'3       ?                                          possible intended match
# |            301:  store ptr %this, ptr %5, align 8, !tbaa !41 
# | next:273'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            302:  %agg.captured.sroa.2.0..sroa_idx = getelementptr inbounds nuw i8, ptr %5, i64 8 
# | next:273'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            303:  store ptr %c.addr, ptr %agg.captured.sroa.2.0..sroa_idx, align 8, !tbaa !23 
# | next:273'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            304:  %6 = getelementptr inbounds nuw i8, ptr %4, i64 40 
# | next:273'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            305:  store i64 0, ptr %6, align 8, !tbaa !15 
# | next:273'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |              .
# |              .
# |              .
# |            320:  ret void 
# | next:273'0      ~~~~~~~~~~
# |            321: } 
# | next:273'0      ~~
# |            322:  
# | next:273'0      ~
# |            323: ; Function Attrs: nofree norecurse nosync nounwind memory(read, inaccessiblemem: readwrite, target_mem0: none, target_mem1: none) 
# | next:273'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            324: define internal noundef i32 @.omp_task_entry..10(i32 %0, ptr noalias noundef readonly captures(none) %1) #5 { 
# | next:273'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            325: entry: 
# | next:298'0            X error: match failed for invalid pattern
# | next:298'1              undefined variable: ANYPTR_TBAA20
# | next:298'2              with "TMP1" equal to "%1"
# |            326:  %2 = load ptr, ptr %1, align 8, !tbaa !20 
# | next:298'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | next:298'3       ?                                          possible intended match
# |            327:  %3 = getelementptr inbounds nuw i8, ptr %1, i64 40 
# | next:298'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            328:  %4 = load i64, ptr %3, align 8, !tbaa !28 
# | next:298'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            329:  %5 = getelementptr inbounds nuw i8, ptr %1, i64 48 
# | next:298'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            330:  %6 = load i64, ptr %5, align 8, !tbaa !29 
# | next:298'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            331:  tail call void @llvm.experimental.noalias.scope.decl(metadata !43) 
# | next:298'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |              .
# |              .
# |              .
# |            388: !11 = !{!12, !4, i64 40} 
# |            389: !12 = !{!"_ZTS24kmp_task_t_with_privates", !13, i64 0, !14, i64 40} 
# |            390: !13 = !{!"_ZTS10kmp_task_t", !10, i64 0, !10, i64 8, !4, i64 16, !5, i64 24, !5, i64 32} 
# |            391: !14 = !{!"_ZTS15.kmp_privates.t", !4, i64 0} 
# |            392: !15 = !{!16, !16, i64 0} 
# |            393: !16 = !{!"long", !5, i64 0} 
# | check:343'0                                X error: match failed for invalid pattern
# | check:343'1                                  undefined variable: CHARPTR_TBAA17
# |            394: !17 = !{!18, !18, i64 0} 
# | check:343'0     ~~~~~~~~~~~~~~~~~~~~~~~~~
# |            395: !18 = !{!"p1 omnipotent char", !10, i64 0} 
# | check:343'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            396: !19 = !{!5, !5, i64 0} 
# | check:343'0     ~~~~~~~~~~~~~~~~~~~~~~~
# |            397: !20 = !{!21, !10, i64 0} 
# | check:343'0     ~~~~~~~~~~~~~~~~~~~~~~~~~
# |            398: !21 = !{!"_ZTS24kmp_task_t_with_privates", !22, i64 0} 
# | check:343'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |              .
# |              .
# |              .
# |            411: !34 = !{!"_ZTSZ4mainE3$_3", !24, i64 0, !26, i64 8} 
# | check:343'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            412: !35 = !{} 
# | check:343'0     ~~~~~~~~~~
# |            413: !36 = !{i64 4} 
# | check:343'0     ~~~~~~~~~~~~~~~
# |            414: !37 = !{!34, !26, i64 8} 
# | check:343'0     ~~~~~~~~~~~~~~~~~~~~~~~~~
# |            415: !38 = !{i64 8} 
# | check:343'0     ~~~~~~~~~~~~~~~
# |            416: !39 = !{!40, !4, i64 0} 
# | check:343'0     ~~~~~~~~~~~~~~~~~~~~~~~~
# | check:343'2       ?                      possible intended match
# |            417: !40 = !{!"_ZTS1S", !4, i64 0} 
# | check:343'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            418: !41 = !{!42, !42, i64 0} 
# | check:343'0     ~~~~~~~~~~~~~~~~~~~~~~~~~
# |            419: !42 = !{!"p1 _ZTS1S", !10, i64 0} 
# | check:343'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            420: !43 = !{!44} 
# | check:343'0     ~~~~~~~~~~~~~
# |            421: !44 = distinct !{!44, !45, !".omp_outlined..9: %__context"} 
# | check:343'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |              .
# |              .
# |              .
# | >>>>>>
# `-----------------------------
# error: command failed with exit status: 1

--

```
</details>

### Flang
<details>
<summary>Flang.Integration/unroll-loops.f90</summary>

```
Exit Code: 1

Command Output (stdout):
--
# RUN: at line 8
/home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/flang -fc1 -emit-llvm -O1 -vectorize-loops -funroll-loops -mllvm -force-vector-width=2 -triple aarch64-unknown-linux-gnu -o- /home/gha/actions-runner/_work/llvm-project/llvm-project/flang/test/Integration/unroll-loops.f90 | /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck /home/gha/actions-runner/_work/llvm-project/llvm-project/flang/test/Integration/unroll-loops.f90 --check-prefixes=CHECK,UNROLL
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/flang -fc1 -emit-llvm -O1 -vectorize-loops -funroll-loops -mllvm -force-vector-width=2 -triple aarch64-unknown-linux-gnu -o- /home/gha/actions-runner/_work/llvm-project/llvm-project/flang/test/Integration/unroll-loops.f90
# 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/flang/test/Integration/unroll-loops.f90 --check-prefixes=CHECK,UNROLL
# .---command stderr------------
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/flang/test/Integration/unroll-loops.f90:31:17: error: UNROLL-NEXT: expected string not found in input
# |  ! UNROLL-NEXT: %[[GEP0:.*]] = getelementptr i64, ptr %[[ARG0]], i64 %[[IND]]
# |                 ^
# | <stdin>:14:51: note: scanning from here
# |  %step.add = add <2 x i64> %vec.ind, splat (i64 2)
# |                                                   ^
# | <stdin>:14:51: note: with "ARG0" equal to "0"
# |  %step.add = add <2 x i64> %vec.ind, splat (i64 2)
# |                                                   ^
# | <stdin>:14:51: note: with "IND" equal to "index"
# |  %step.add = add <2 x i64> %vec.ind, splat (i64 2)
# |                                                   ^
# | <stdin>:16:2: note: possible intended match here
# |  %2 = getelementptr i8, ptr %1, i64 16
# |  ^
# | 
# | Input file: <stdin>
# | Check file: /home/gha/actions-runner/_work/llvm-project/llvm-project/flang/test/Integration/unroll-loops.f90
# | 
# | -dump-input=help explains the following input dump.
# | 
# | Input was:
# | <<<<<<
# |            .
# |            .
# |            .
# |            9:  br label %vector.body 
# |           10:  
# |           11: vector.body: ; preds = %vector.body, %vector.ph 
# |           12:  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ] 
# |           13:  %vec.ind = phi <2 x i64> [ <i64 1, i64 2>, %vector.ph ], [ %vec.ind.next, %vector.body ] 
# |           14:  %step.add = add <2 x i64> %vec.ind, splat (i64 2) 
# | next:31'0                                                       X error: no match found
# | next:31'1                                                         with "ARG0" equal to "0"
# | next:31'2                                                         with "IND" equal to "index"
# |           15:  %1 = getelementptr [8 x i8], ptr %0, i64 %index 
# | next:31'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           16:  %2 = getelementptr i8, ptr %1, i64 16 
# | next:31'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | next:31'3      ?                                      possible intended match
# |           17:  store <2 x i64> %vec.ind, ptr %1, align 8, !tbaa !2 
# | next:31'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           18:  store <2 x i64> %step.add, ptr %2, align 8, !tbaa !2 
# | next:31'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           19:  %index.next = add nuw i64 %index, 4 
# | next:31'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           20:  %vec.ind.next = add <2 x i64> %vec.ind, splat (i64 4) 
# | next:31'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           21:  %3 = icmp eq i64 %index.next, 1000 
# | next:31'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            .
# |            .
# |            .
# | >>>>>>
# `-----------------------------
# error: command failed with exit status: 1

--

```
</details>
<details>
<summary>Flang.Lower/HLFIR/unroll-loops.fir</summary>

```
Exit Code: 1

Command Output (stdout):
--
# RUN: at line 6
/home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/flang -fc1 -emit-llvm -O1 -vectorize-loops -funroll-loops -mllvm -force-vector-width=2 -triple aarch64-unknown-linux-gnu -o- /home/gha/actions-runner/_work/llvm-project/llvm-project/flang/test/Lower/HLFIR/unroll-loops.fir | /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck /home/gha/actions-runner/_work/llvm-project/llvm-project/flang/test/Lower/HLFIR/unroll-loops.fir --check-prefixes=CHECK,UNROLL
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/flang -fc1 -emit-llvm -O1 -vectorize-loops -funroll-loops -mllvm -force-vector-width=2 -triple aarch64-unknown-linux-gnu -o- /home/gha/actions-runner/_work/llvm-project/llvm-project/flang/test/Lower/HLFIR/unroll-loops.fir
# .---command stderr------------
# | warning: overriding the module target triple with aarch64-unknown-linux-gnu [-Woverride-module]
# `-----------------------------
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck /home/gha/actions-runner/_work/llvm-project/llvm-project/flang/test/Lower/HLFIR/unroll-loops.fir --check-prefixes=CHECK,UNROLL
# .---command stderr------------
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/flang/test/Lower/HLFIR/unroll-loops.fir:33:18: error: UNROLL-NEXT: expected string not found in input
# |  // UNROLL-NEXT: %[[GEP0:.*]] = getelementptr i64, ptr %[[ARG0]], i64 %[[IND]]
# |                  ^
# | <stdin>:14:51: note: scanning from here
# |  %step.add = add <2 x i64> %vec.ind, splat (i64 2)
# |                                                   ^
# | <stdin>:14:51: note: with "ARG0" equal to "0"
# |  %step.add = add <2 x i64> %vec.ind, splat (i64 2)
# |                                                   ^
# | <stdin>:14:51: note: with "IND" equal to "index"
# |  %step.add = add <2 x i64> %vec.ind, splat (i64 2)
# |                                                   ^
# | <stdin>:16:2: note: possible intended match here
# |  %2 = getelementptr i8, ptr %1, i64 16
# |  ^
# | 
# | Input file: <stdin>
# | Check file: /home/gha/actions-runner/_work/llvm-project/llvm-project/flang/test/Lower/HLFIR/unroll-loops.fir
# | 
# | -dump-input=help explains the following input dump.
# | 
# | Input was:
# | <<<<<<
# |            .
# |            .
# |            .
# |            9:  br label %vector.body 
# |           10:  
# |           11: vector.body: ; preds = %vector.body, %vector.ph 
# |           12:  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ] 
# |           13:  %vec.ind = phi <2 x i64> [ <i64 1, i64 2>, %vector.ph ], [ %vec.ind.next, %vector.body ] 
# |           14:  %step.add = add <2 x i64> %vec.ind, splat (i64 2) 
# | next:33'0                                                       X error: no match found
# | next:33'1                                                         with "ARG0" equal to "0"
# | next:33'2                                                         with "IND" equal to "index"
# |           15:  %1 = getelementptr [8 x i8], ptr %0, i64 %index 
# | next:33'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           16:  %2 = getelementptr i8, ptr %1, i64 16 
# | next:33'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | next:33'3      ?                                      possible intended match
# |           17:  store <2 x i64> %vec.ind, ptr %1, align 8, !tbaa !1 
# | next:33'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           18:  store <2 x i64> %step.add, ptr %2, align 8, !tbaa !1 
# | next:33'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           19:  %index.next = add nuw i64 %index, 4 
# | next:33'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           20:  %vec.ind.next = add <2 x i64> %vec.ind, splat (i64 4) 
# | next:33'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           21:  %3 = icmp eq i64 %index.next, 1000 
# | next:33'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            .
# |            .
# |            .
# | >>>>>>
# `-----------------------------
# 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/180745


More information about the llvm-commits mailing list