llvmbot wrote:

<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-llvm-transforms

Author: Nikita Popov (nikic)

<details>
<summary>Changes</summary>

Canonicalize GEP source element types from `%T` to `[sizeof(%T) x i8]`.

This is intended to flush out any remaining places that rely on GEP element 
types, as part of the `ptradd` migration. The impact of this change is expected 
to be fairly minimal (we might enable a few more hoist/sink style folds that 
depend on equal GEP types).

This causes a small compile-time regression: 
https://llvm-compile-time-tracker.com/compare.php?from=59a8bd0a746360380f8579a72f6be6ebe8a8e1b0&amp;to=0656da14cc57cceeceab1bdceb5938a98635933f&amp;stat=instructions%3Au

---

Patch is 1.18 MiB, truncated to 20.00 KiB below, full version: 
https://github.com/llvm/llvm-project/pull/180745.diff


188 Files Affected:

- (modified) clang/test/CodeGen/allow-ubsan-check.c (+3-3) 
- (modified) clang/test/CodeGen/attr-counted-by-for-pointers.c (+12-12) 
- (modified) clang/test/CodeGen/attr-counted-by.c (+77-77) 
- (modified) clang/test/CodeGen/union-tbaa1.c (+4-4) 
- (modified) clang/test/OpenMP/taskloop_strictmodifier_codegen.cpp (+2-2) 
- (modified) flang/test/Integration/unroll-loops.f90 (+2-2) 
- (modified) flang/test/Lower/HLFIR/unroll-loops.fir (+2-2) 
- (modified) llvm/lib/Transforms/InstCombine/InstructionCombining.cpp (+18) 
- (modified) llvm/test/Analysis/BasicAA/featuretest.ll (+5-5) 
- (modified) llvm/test/CodeGen/AArch64/sme-aarch64-svcount-O3.ll (+1-1) 
- (modified) llvm/test/CodeGen/AMDGPU/amdgpu-uniform-intrinsic-combine.ll 
(+6-6) 
- (modified) llvm/test/CodeGen/AMDGPU/vector-alloca-addrspacecast.ll (+1-1) 
- (modified) llvm/test/CodeGen/Hexagon/autohvx/vector-align-tbaa.ll (+9-9) 
- (modified) llvm/test/DebugInfo/Generic/instcombine-phi.ll (+1-1) 
- (modified) llvm/test/Transforms/InstCombine/2006-12-15-Range-Test.ll (+2-2) 
- (modified) 
llvm/test/Transforms/InstCombine/AArch64/sve-intrinsic-gatherscatter.ll (+4-4) 
- (modified) llvm/test/Transforms/InstCombine/AMDGPU/memcpy-from-constant.ll 
(+2-2) 
- (modified) llvm/test/Transforms/InstCombine/align-addr.ll (+2-2) 
- (modified) llvm/test/Transforms/InstCombine/and-or-icmps.ll (+2-2) 
- (modified) llvm/test/Transforms/InstCombine/array.ll (+29-29) 
- (modified) llvm/test/Transforms/InstCombine/assume-loop-align.ll (+2-2) 
- (modified) llvm/test/Transforms/InstCombine/canonicalize-gep-constglob.ll 
(+4-4) 
- (modified) llvm/test/Transforms/InstCombine/canonicalize-gep-mul.ll (+1-1) 
- (modified) llvm/test/Transforms/InstCombine/cast.ll (+1-1) 
- (modified) llvm/test/Transforms/InstCombine/cast_phi.ll (+4-4) 
- (modified) llvm/test/Transforms/InstCombine/cast_ptr.ll (+7-7) 
- (modified) 
llvm/test/Transforms/InstCombine/constant-fold-address-space-pointer.ll (+1-1) 
- (modified) llvm/test/Transforms/InstCombine/dependent-ivs.ll (+1-1) 
- (modified) llvm/test/Transforms/InstCombine/fmul.ll (+1-1) 
- (modified) llvm/test/Transforms/InstCombine/gep-addrspace.ll (+2-2) 
- (modified) llvm/test/Transforms/InstCombine/gep-alias.ll (+1-1) 
- (modified) 
llvm/test/Transforms/InstCombine/gep-canonicalize-constant-indices.ll (+20-20) 
- (modified) llvm/test/Transforms/InstCombine/gep-combine-loop-invariant.ll 
(+8-8) 
- (modified) llvm/test/Transforms/InstCombine/gep-custom-dl.ll (+4-4) 
- (modified) llvm/test/Transforms/InstCombine/gep-fold-chained-const-select.ll 
(+1-1) 
- (modified) llvm/test/Transforms/InstCombine/gep-merge-constant-indices.ll 
(+4-4) 
- (modified) llvm/test/Transforms/InstCombine/gep-sext.ll (+4-4) 
- (modified) llvm/test/Transforms/InstCombine/gep-srem-to-and-deref.ll (+1-1) 
- (modified) llvm/test/Transforms/InstCombine/gep-vector-indices.ll (+8-8) 
- (modified) llvm/test/Transforms/InstCombine/gep-vector.ll (+16-16) 
- (modified) llvm/test/Transforms/InstCombine/gepofconstgepi8.ll (+29-29) 
- (modified) llvm/test/Transforms/InstCombine/gepphigep.ll (+10-10) 
- (modified) llvm/test/Transforms/InstCombine/getelementptr.ll (+43-43) 
- (modified) llvm/test/Transforms/InstCombine/icmp-custom-dl.ll (+2-2) 
- (modified) llvm/test/Transforms/InstCombine/icmp-gep.ll (+18-18) 
- (modified) llvm/test/Transforms/InstCombine/indexed-gep-compares.ll (+3-3) 
- (modified) llvm/test/Transforms/InstCombine/known-phi-recurse.ll (+1-1) 
- (modified) llvm/test/Transforms/InstCombine/load-bitcast-select.ll (+2-2) 
- (modified) llvm/test/Transforms/InstCombine/load-cmp.ll (+10-10) 
- (modified) llvm/test/Transforms/InstCombine/load.ll (+4-4) 
- (modified) llvm/test/Transforms/InstCombine/loadstore-alignment.ll (+6-6) 
- (modified) llvm/test/Transforms/InstCombine/loadstore-metadata.ll (+2-2) 
- (modified) llvm/test/Transforms/InstCombine/masked_intrinsics-inseltpoison.ll 
(+5-5) 
- (modified) llvm/test/Transforms/InstCombine/masked_intrinsics.ll (+5-5) 
- (modified) llvm/test/Transforms/InstCombine/mem-gep-zidx.ll (+1-1) 
- (modified) llvm/test/Transforms/InstCombine/memcpy-addrspace.ll (+16-16) 
- (modified) llvm/test/Transforms/InstCombine/memcpy-from-global.ll (+5-5) 
- (modified) 
llvm/test/Transforms/InstCombine/multi-size-address-space-pointer.ll (+2-2) 
- (modified) llvm/test/Transforms/InstCombine/narrow.ll (+2-2) 
- (modified) llvm/test/Transforms/InstCombine/opaque-ptr.ll (+9-9) 
- (modified) llvm/test/Transforms/InstCombine/phi.ll (+1-1) 
- (modified) llvm/test/Transforms/InstCombine/pr38984-inseltpoison.ll (+2-2) 
- (modified) llvm/test/Transforms/InstCombine/pr38984.ll (+2-2) 
- (modified) llvm/test/Transforms/InstCombine/pr58901.ll (+3-3) 
- (modified) llvm/test/Transforms/InstCombine/ptrtoint-nullgep.ll (+2-2) 
- (modified) 
llvm/test/Transforms/InstCombine/remove-loop-phi-multiply-by-zero.ll (+10-10) 
- (modified) llvm/test/Transforms/InstCombine/scalable-select.ll (+2-2) 
- (modified) llvm/test/Transforms/InstCombine/select-gep.ll (+21-21) 
- (modified) llvm/test/Transforms/InstCombine/shift.ll (+6-6) 
- (modified) llvm/test/Transforms/InstCombine/sink_instruction.ll (+3-3) 
- (modified) llvm/test/Transforms/InstCombine/store.ll (+4-4) 
- (modified) llvm/test/Transforms/InstCombine/sub-gep.ll (+10-10) 
- (modified) llvm/test/Transforms/InstCombine/vec_demanded_elts-inseltpoison.ll 
(+7-7) 
- (modified) llvm/test/Transforms/InstCombine/vec_demanded_elts.ll (+7-7) 
- (modified) llvm/test/Transforms/InstCombine/vec_phi_extract-inseltpoison.ll 
(+3-3) 
- (modified) llvm/test/Transforms/InstCombine/vec_phi_extract.ll (+3-3) 
- (modified) llvm/test/Transforms/InstCombine/vector_gep1-inseltpoison.ll 
(+1-1) 
- (modified) llvm/test/Transforms/InstCombine/vector_gep1.ll (+1-1) 
- (modified) llvm/test/Transforms/InstCombine/vector_gep2.ll (+2-2) 
- (modified) llvm/test/Transforms/InstCombine/vectorgep-crash.ll (+3-3) 
- (modified) llvm/test/Transforms/InstCombine/wcslen-1.ll (+6-6) 
- (modified) llvm/test/Transforms/InstCombine/wcslen-3.ll (+2-2) 
- (modified) llvm/test/Transforms/InstCombine/wcslen-5.ll (+8-8) 
- (modified) llvm/test/Transforms/LoopSimplify/merge-exits.ll (+4-4) 
- (modified) llvm/test/Transforms/LoopUnroll/AArch64/runtime-unroll-generic.ll 
(+24-24) 
- (modified) llvm/test/Transforms/LoopUnroll/WebAssembly/basic-unrolling.ll 
(+20-20) 
- (modified) llvm/test/Transforms/LoopUnroll/runtime-multiexit-heuristic.ll 
(+21-21) 
- (modified) llvm/test/Transforms/LoopUnroll/runtime-unroll-remainder.ll 
(+14-14) 
- (modified) llvm/test/Transforms/LoopVectorize/AArch64/aarch64-predication.ll 
(+3-1) 
- (modified) llvm/test/Transforms/LoopVectorize/AArch64/sve-cond-inv-loads.ll 
(+7-7) 
- (modified) llvm/test/Transforms/LoopVectorize/AArch64/sve-gather-scatter.ll 
(+10-10) 
- (modified) llvm/test/Transforms/LoopVectorize/AArch64/sve-inductions.ll 
(+2-2) 
- (modified) 
llvm/test/Transforms/LoopVectorize/AArch64/sve-interleaved-accesses.ll (+49-49) 
- (modified) llvm/test/Transforms/LoopVectorize/AArch64/sve-large-strides.ll 
(+3-3) 
- (modified) llvm/test/Transforms/LoopVectorize/AArch64/sve-masked-loadstore.ll 
(+2-2) 
- (modified) 
llvm/test/Transforms/LoopVectorize/AArch64/sve-tail-folding-overflow-checks.ll 
(+4-4) 
- (modified) llvm/test/Transforms/LoopVectorize/AArch64/sve-vector-reverse.ll 
(+16-16) 
- (modified) llvm/test/Transforms/LoopVectorize/AArch64/sve-vfabi.ll (+5-5) 
- (modified) llvm/test/Transforms/LoopVectorize/AArch64/sve-widen-phi.ll (+8-8) 
- (modified) 
llvm/test/Transforms/LoopVectorize/AArch64/sve2-histcnt-epilogue.ll (+6-6) 
- (modified) 
llvm/test/Transforms/LoopVectorize/AArch64/sve2-histcnt-no-scalar-interleave.ll 
(+2-2) 
- (modified) 
llvm/test/Transforms/LoopVectorize/AArch64/sve2-histcnt-too-many-deps.ll 
(+10-10) 
- (modified) llvm/test/Transforms/LoopVectorize/AArch64/sve2-histcnt.ll 
(+80-41) 
- (modified) 
llvm/test/Transforms/LoopVectorize/AArch64/uniform-args-call-variants.ll 
(+18-18) 
- (modified) llvm/test/Transforms/LoopVectorize/AArch64/vector-reverse-mask4.ll 
(+4-4) 
- (modified) llvm/test/Transforms/LoopVectorize/AMDGPU/packed-math.ll (+3-3) 
- (modified) llvm/test/Transforms/LoopVectorize/ARM/mve-reduction-predselect.ll 
(+20-20) 
- (modified) 
llvm/test/Transforms/LoopVectorize/ARM/mve-reductions-interleave.ll (+6-6) 
- (modified) llvm/test/Transforms/LoopVectorize/ARM/mve-reductions.ll (+47-47) 
- (modified) llvm/test/Transforms/LoopVectorize/ARM/tail-fold-multiple-icmps.ll 
(+2-2) 
- (modified) llvm/test/Transforms/LoopVectorize/PowerPC/vsx-tsvc-s173.ll (+1-1) 
- (modified) llvm/test/Transforms/LoopVectorize/PowerPC/widened-massv-call.ll 
(+1-1) 
- (modified) 
llvm/test/Transforms/LoopVectorize/PowerPC/widened-massv-vfabi-attr.ll (+1-1) 
- (modified) llvm/test/Transforms/LoopVectorize/SystemZ/addressing.ll (+3-3) 
- (modified) llvm/test/Transforms/LoopVectorize/X86/interleaving.ll (+6-6) 
- (modified) llvm/test/Transforms/LoopVectorize/X86/metadata-enable.ll (+26-26) 
- (modified) llvm/test/Transforms/LoopVectorize/X86/parallel-loops.ll (+29-29) 
- (modified) llvm/test/Transforms/LoopVectorize/X86/small-size.ll (+19-19) 
- (modified) 
llvm/test/Transforms/LoopVectorize/X86/x86-interleaved-store-accesses-with-gaps.ll
 (+34-34) 
- (modified) llvm/test/Transforms/LoopVectorize/bsd_regex.ll (+4-4) 
- (modified) llvm/test/Transforms/LoopVectorize/extract-last-veclane.ll (+8-8) 
- (modified) llvm/test/Transforms/LoopVectorize/float-induction.ll (+91-91) 
- (modified) llvm/test/Transforms/LoopVectorize/forked-pointers.ll (+12-12) 
- (modified) llvm/test/Transforms/LoopVectorize/gep_with_bitcast.ll (+1-1) 
- (modified) llvm/test/Transforms/LoopVectorize/histograms.ll (+5-5) 
- (modified) llvm/test/Transforms/LoopVectorize/if-conversion-nest.ll (+8-8) 
- (modified) llvm/test/Transforms/LoopVectorize/if-conversion.ll (+6-6) 
- (modified) llvm/test/Transforms/LoopVectorize/induction.ll (+163-163) 
- (modified) llvm/test/Transforms/LoopVectorize/interleaved-accesses-2.ll 
(+2-2) 
- (modified) 
llvm/test/Transforms/LoopVectorize/interleaved-accesses-pred-stores.ll (+18-18) 
- (modified) llvm/test/Transforms/LoopVectorize/interleaved-accesses.ll 
(+86-86) 
- (modified) 
llvm/test/Transforms/LoopVectorize/invariant-store-vectorization-2.ll (+7-7) 
- (modified) 
llvm/test/Transforms/LoopVectorize/invariant-store-vectorization.ll (+16-16) 
- (modified) llvm/test/Transforms/LoopVectorize/loop-scalars.ll (+18-18) 
- (modified) llvm/test/Transforms/LoopVectorize/non-const-n.ll (+3-3) 
- (modified) llvm/test/Transforms/LoopVectorize/phi-cost.ll (+8-8) 
- (modified) llvm/test/Transforms/LoopVectorize/reduction-inloop-cond.ll 
(+84-84) 
- (modified) llvm/test/Transforms/LoopVectorize/reduction-inloop-min-max.ll 
(+6-6) 
- (modified) llvm/test/Transforms/LoopVectorize/reduction-inloop-pred.ll 
(+90-90) 
- (modified) llvm/test/Transforms/LoopVectorize/reduction-inloop-uf4.ll 
(+35-35) 
- (modified) llvm/test/Transforms/LoopVectorize/reduction-predselect.ll 
(+68-68) 
- (modified) llvm/test/Transforms/LoopVectorize/reduction.ll (+50-50) 
- (modified) llvm/test/Transforms/LoopVectorize/runtime-check.ll (+31-31) 
- (modified) llvm/test/Transforms/LoopVectorize/scalable-inductions.ll (+16-16) 
- (modified) llvm/test/Transforms/LoopVectorize/scalar_after_vectorization.ll 
(+1-1) 
- (modified) llvm/test/Transforms/LoopVectorize/trunc-reductions.ll (+6-6) 
- (modified) llvm/test/Transforms/LoopVectorize/uniform-args-call-variants.ll 
(+8-8) 
- (modified) llvm/test/Transforms/LoopVectorize/vector-geps.ll (+6-6) 
- (modified) llvm/test/Transforms/LoopVersioningLICM/loopversioningLICM1.ll 
(+3-3) 
- (modified) llvm/test/Transforms/LowerMatrixIntrinsics/multiply-fused-loops.ll 
(+12-12) 
- (modified) 
llvm/test/Transforms/PhaseOrdering/AArch64/block_scaling_decompr_8bit.ll (+2-2) 
- (modified) 
llvm/test/Transforms/PhaseOrdering/AArch64/constraint-elimination-placement.ll 
(+1-1) 
- (modified) 
llvm/test/Transforms/PhaseOrdering/AArch64/extra-unroll-simplifications.ll 
(+14-14) 
- (modified) 
llvm/test/Transforms/PhaseOrdering/AArch64/hoist-load-from-vector-loop.ll 
(+7-7) 
- (modified) llvm/test/Transforms/PhaseOrdering/AArch64/hoist-runtime-checks.ll 
(+5-5) 
- (modified) 
llvm/test/Transforms/PhaseOrdering/AArch64/hoisting-sinking-required-for-vectorization.ll
 (+10-10) 
- (modified) 
llvm/test/Transforms/PhaseOrdering/AArch64/indvars-vectorization.ll (+4-4) 
- (modified) llvm/test/Transforms/PhaseOrdering/AArch64/interleave_vec.ll 
(+44-44) 
- (modified) 
llvm/test/Transforms/PhaseOrdering/AArch64/interleavevectorization.ll (+15-15) 
- (modified) llvm/test/Transforms/PhaseOrdering/AArch64/loopflatten.ll (+1-1) 
- (modified) 
llvm/test/Transforms/PhaseOrdering/AArch64/matrix-extract-insert.ll (+23-23) 
- (modified) 
llvm/test/Transforms/PhaseOrdering/AArch64/peel-multiple-unreachable-exits-for-vectorization.ll
 (+11-11) 
- (modified) llvm/test/Transforms/PhaseOrdering/AArch64/predicated-reduction.ll 
(+4-4) 
- (modified) llvm/test/Transforms/PhaseOrdering/AArch64/reduce_submuladd.ll 
(+12-12) 
- (modified) 
llvm/test/Transforms/PhaseOrdering/AArch64/sinking-vs-if-conversion.ll (+4-4) 
- (modified) llvm/test/Transforms/PhaseOrdering/SystemZ/sub-xor.ll (+24-24) 
- (modified) 
llvm/test/Transforms/PhaseOrdering/X86/earlycse-after-simplifycfg-two-entry-phi-node-folding.ll
 (+1-1) 
- (modified) llvm/test/Transforms/PhaseOrdering/X86/excessive-unrolling.ll 
(+6-6) 
- (modified) llvm/test/Transforms/PhaseOrdering/X86/hoist-load-of-baseptr.ll 
(+5-5) 
- (modified) llvm/test/Transforms/PhaseOrdering/X86/merge-functions2.ll (+1-1) 
- (modified) llvm/test/Transforms/PhaseOrdering/X86/merge-functions3.ll (+1-1) 
- (modified) llvm/test/Transforms/PhaseOrdering/X86/pixel-splat.ll (+2-2) 
- (modified) llvm/test/Transforms/PhaseOrdering/X86/pr88239.ll (+2-2) 
- (modified) llvm/test/Transforms/PhaseOrdering/X86/preserve-access-group.ll 
(+12-12) 
- (modified) llvm/test/Transforms/PhaseOrdering/X86/simplifycfg-late.ll (+1-1) 
- (modified) llvm/test/Transforms/PhaseOrdering/X86/speculation-vs-tbaa.ll 
(+3-3) 
- (modified) llvm/test/Transforms/PhaseOrdering/X86/spurious-peeling.ll (+8-8) 
- (modified) llvm/test/Transforms/PhaseOrdering/X86/vdiv-nounroll.ll (+1-1) 
- (modified) llvm/test/Transforms/PhaseOrdering/X86/vdiv.ll (+31-30) 
- (modified) llvm/test/Transforms/PhaseOrdering/gvn-replacement-vs-hoist.ll 
(+2-2) 
- (modified) llvm/test/Transforms/PhaseOrdering/loop-access-checks.ll (+3-3) 
- (modified) llvm/test/Transforms/PhaseOrdering/loop-vectorize-bfi.ll (+1-1) 
- (modified) llvm/test/Transforms/PhaseOrdering/lto-argpromotion-ipsccp.ll 
(+1-1) 
- (modified) llvm/test/Transforms/PhaseOrdering/lto-licm.ll (+1-1) 
- (modified) llvm/test/Transforms/PhaseOrdering/scev-custom-dl.ll (+7-7) 
- (modified) llvm/test/Transforms/PhaseOrdering/simplifycfg-options.ll (+2-2) 
- (modified) llvm/test/Transforms/SimpleLoopUnswitch/AMDGPU/uniform-unswitch.ll 
(+1-1) 
- (modified) llvm/test/Transforms/SimplifyCFG/Hexagon/switch-to-lookup-table.ll 
(+1-1) 


``````````diff
diff --git a/clang/test/CodeGen/allow-ubsan-check.c 
b/clang/test/CodeGen/allow-ubsan-check.c
index 1e128854d6a75..da3bf3d4d72f5 100644
--- a/clang/test/CodeGen/allow-ubsan-check.c
+++ b/clang/test/CodeGen/allow-ubsan-check.c
@@ -204,7 +204,7 @@ void use(double*);
 // CHECK-NEXT:    [[TMP3:%.*]] = and i1 [[TMP1]], [[TMP2]], !nosanitize 
[[META6]]
 // CHECK-NEXT:    br i1 [[TMP3]], label %[[TRAP:.*]], label %[[BB4:.*]]
 // CHECK:       [[BB4]]:
-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds double, ptr 
[[VLA]], i64 [[IDXPROM]]
+// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [8 x i8], ptr 
[[VLA]], i64 [[IDXPROM]]
 // CHECK-NEXT:    [[TMP5:%.*]] = load double, ptr [[ARRAYIDX]], align 8, !tbaa 
[[DOUBLE_TBAA9:![0-9]+]]
 // CHECK-NEXT:    ret double [[TMP5]]
 // CHECK:       [[TRAP]]:
@@ -223,7 +223,7 @@ void use(double*);
 // TR-NEXT:    [[TMP3:%.*]] = and i1 [[TMP1]], [[TMP2]], !nosanitize [[META6]]
 // TR-NEXT:    br i1 [[TMP3]], label %[[TRAP:.*]], label %[[BB4:.*]]
 // TR:       [[BB4]]:
-// TR-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds double, ptr [[VLA]], 
i64 [[IDXPROM]]
+// TR-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [8 x i8], ptr 
[[VLA]], i64 [[IDXPROM]]
 // TR-NEXT:    [[TMP5:%.*]] = load double, ptr [[ARRAYIDX]], align 8, !tbaa 
[[DOUBLE_TBAA9:![0-9]+]]
 // TR-NEXT:    ret double [[TMP5]]
 // TR:       [[TRAP]]:
@@ -242,7 +242,7 @@ void use(double*);
 // REC-NEXT:    [[TMP3:%.*]] = and i1 [[TMP1]], [[TMP2]], !nosanitize [[META6]]
 // REC-NEXT:    br i1 [[TMP3]], label %[[TRAP:.*]], label %[[BB4:.*]]
 // REC:       [[BB4]]:
-// REC-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds double, ptr [[VLA]], 
i64 [[IDXPROM]]
+// REC-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [8 x i8], ptr 
[[VLA]], i64 [[IDXPROM]]
 // REC-NEXT:    [[TMP5:%.*]] = load double, ptr [[ARRAYIDX]], align 8, !tbaa 
[[DOUBLE_TBAA9:![0-9]+]]
 // REC-NEXT:    ret double [[TMP5]]
 // REC:       [[TRAP]]:
diff --git a/clang/test/CodeGen/attr-counted-by-for-pointers.c 
b/clang/test/CodeGen/attr-counted-by-for-pointers.c
index 7b0be04b51a30..e667be2afedc6 100644
--- a/clang/test/CodeGen/attr-counted-by-for-pointers.c
+++ b/clang/test/CodeGen/attr-counted-by-for-pointers.c
@@ -44,7 +44,7 @@ struct annotated_ptr {
 // SANITIZE-WITH-ATTR-NEXT:    [[BUF:%.*]] = getelementptr inbounds nuw i8, 
ptr [[P]], i64 8
 // SANITIZE-WITH-ATTR-NEXT:    [[TMP4:%.*]] = load ptr, ptr [[BUF]], align 8, 
!tbaa [[_ZTS3FOOPTR_TBAA8:![0-9]+]]
 // SANITIZE-WITH-ATTR-NEXT:    [[IDXPROM:%.*]] = sext i32 [[INDEX]] to i64
-// SANITIZE-WITH-ATTR-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds ptr, 
ptr [[TMP4]], i64 [[IDXPROM]]
+// SANITIZE-WITH-ATTR-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [8 x 
i8], ptr [[TMP4]], i64 [[IDXPROM]]
 // SANITIZE-WITH-ATTR-NEXT:    store ptr [[VALUE]], ptr [[ARRAYIDX]], align 8, 
!tbaa [[_ZTS3FOOPTR_TBAA14:![0-9]+]]
 // SANITIZE-WITH-ATTR-NEXT:    ret void
 //
@@ -54,7 +54,7 @@ struct annotated_ptr {
 // NO-SANITIZE-WITH-ATTR-NEXT:    [[BUF:%.*]] = getelementptr inbounds nuw i8, 
ptr [[P]], i64 8
 // NO-SANITIZE-WITH-ATTR-NEXT:    [[TMP0:%.*]] = load ptr, ptr [[BUF]], align 
8, !tbaa [[_ZTS3FOOPTR_TBAA6:![0-9]+]]
 // NO-SANITIZE-WITH-ATTR-NEXT:    [[IDXPROM:%.*]] = sext i32 [[INDEX]] to i64
-// NO-SANITIZE-WITH-ATTR-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds 
ptr, ptr [[TMP0]], i64 [[IDXPROM]]
+// NO-SANITIZE-WITH-ATTR-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [8 
x i8], ptr [[TMP0]], i64 [[IDXPROM]]
 // NO-SANITIZE-WITH-ATTR-NEXT:    store ptr [[VALUE]], ptr [[ARRAYIDX]], align 
8, !tbaa [[_ZTS3FOOPTR_TBAA12:![0-9]+]]
 // NO-SANITIZE-WITH-ATTR-NEXT:    ret void
 //
@@ -64,7 +64,7 @@ struct annotated_ptr {
 // SANITIZE-WITHOUT-ATTR-NEXT:    [[BUF:%.*]] = getelementptr inbounds nuw i8, 
ptr [[P]], i64 8
 // SANITIZE-WITHOUT-ATTR-NEXT:    [[TMP0:%.*]] = load ptr, ptr [[BUF]], align 
8, !tbaa [[_ZTS3FOOPTR_TBAA6:![0-9]+]]
 // SANITIZE-WITHOUT-ATTR-NEXT:    [[IDXPROM:%.*]] = sext i32 [[INDEX]] to i64
-// SANITIZE-WITHOUT-ATTR-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds 
ptr, ptr [[TMP0]], i64 [[IDXPROM]]
+// SANITIZE-WITHOUT-ATTR-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [8 
x i8], ptr [[TMP0]], i64 [[IDXPROM]]
 // SANITIZE-WITHOUT-ATTR-NEXT:    store ptr [[VALUE]], ptr [[ARRAYIDX]], align 
8, !tbaa [[_ZTS3FOOPTR_TBAA12:![0-9]+]]
 // SANITIZE-WITHOUT-ATTR-NEXT:    ret void
 //
@@ -74,7 +74,7 @@ struct annotated_ptr {
 // NO-SANITIZE-WITHOUT-ATTR-NEXT:    [[BUF:%.*]] = getelementptr inbounds nuw 
i8, ptr [[P]], i64 8
 // NO-SANITIZE-WITHOUT-ATTR-NEXT:    [[TMP0:%.*]] = load ptr, ptr [[BUF]], 
align 8, !tbaa [[_ZTS3FOOPTR_TBAA6:![0-9]+]]
 // NO-SANITIZE-WITHOUT-ATTR-NEXT:    [[IDXPROM:%.*]] = sext i32 [[INDEX]] to 
i64
-// NO-SANITIZE-WITHOUT-ATTR-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds 
ptr, ptr [[TMP0]], i64 [[IDXPROM]]
+// NO-SANITIZE-WITHOUT-ATTR-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds 
[8 x i8], ptr [[TMP0]], i64 [[IDXPROM]]
 // NO-SANITIZE-WITHOUT-ATTR-NEXT:    store ptr [[VALUE]], ptr [[ARRAYIDX]], 
align 8, !tbaa [[_ZTS3FOOPTR_TBAA12:![0-9]+]]
 // NO-SANITIZE-WITHOUT-ATTR-NEXT:    ret void
 //
@@ -99,7 +99,7 @@ void test1(struct annotated_ptr *p, int index, struct foo 
*value) {
 // SANITIZE-WITH-ATTR-NEXT:    [[BUF:%.*]] = getelementptr inbounds nuw i8, 
ptr [[P]], i64 8
 // SANITIZE-WITH-ATTR-NEXT:    [[TMP4:%.*]] = load ptr, ptr [[BUF]], align 8, 
!tbaa [[_ZTS3FOOPTR_TBAA8]]
 // SANITIZE-WITH-ATTR-NEXT:    [[IDXPROM:%.*]] = sext i32 [[INDEX]] to i64
-// SANITIZE-WITH-ATTR-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds ptr, 
ptr [[TMP4]], i64 [[IDXPROM]]
+// SANITIZE-WITH-ATTR-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [8 x 
i8], ptr [[TMP4]], i64 [[IDXPROM]]
 // SANITIZE-WITH-ATTR-NEXT:    store ptr [[VALUE]], ptr [[ARRAYIDX]], align 8, 
!tbaa [[_ZTS3FOOPTR_TBAA14]]
 // SANITIZE-WITH-ATTR-NEXT:    ret void
 //
@@ -109,7 +109,7 @@ void test1(struct annotated_ptr *p, int index, struct foo 
*value) {
 // NO-SANITIZE-WITH-ATTR-NEXT:    [[BUF:%.*]] = getelementptr inbounds nuw i8, 
ptr [[P]], i64 8
 // NO-SANITIZE-WITH-ATTR-NEXT:    [[TMP0:%.*]] = load ptr, ptr [[BUF]], align 
8, !tbaa [[_ZTS3FOOPTR_TBAA6]]
 // NO-SANITIZE-WITH-ATTR-NEXT:    [[IDXPROM:%.*]] = sext i32 [[INDEX]] to i64
-// NO-SANITIZE-WITH-ATTR-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds 
ptr, ptr [[TMP0]], i64 [[IDXPROM]]
+// NO-SANITIZE-WITH-ATTR-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [8 
x i8], ptr [[TMP0]], i64 [[IDXPROM]]
 // NO-SANITIZE-WITH-ATTR-NEXT:    store ptr [[VALUE]], ptr [[ARRAYIDX]], align 
8, !tbaa [[_ZTS3FOOPTR_TBAA12]]
 // NO-SANITIZE-WITH-ATTR-NEXT:    ret void
 //
@@ -119,7 +119,7 @@ void test1(struct annotated_ptr *p, int index, struct foo 
*value) {
 // SANITIZE-WITHOUT-ATTR-NEXT:    [[BUF:%.*]] = getelementptr inbounds nuw i8, 
ptr [[P]], i64 8
 // SANITIZE-WITHOUT-ATTR-NEXT:    [[TMP0:%.*]] = load ptr, ptr [[BUF]], align 
8, !tbaa [[_ZTS3FOOPTR_TBAA6]]
 // SANITIZE-WITHOUT-ATTR-NEXT:    [[IDXPROM:%.*]] = sext i32 [[INDEX]] to i64
-// SANITIZE-WITHOUT-ATTR-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds 
ptr, ptr [[TMP0]], i64 [[IDXPROM]]
+// SANITIZE-WITHOUT-ATTR-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [8 
x i8], ptr [[TMP0]], i64 [[IDXPROM]]
 // SANITIZE-WITHOUT-ATTR-NEXT:    store ptr [[VALUE]], ptr [[ARRAYIDX]], align 
8, !tbaa [[_ZTS3FOOPTR_TBAA12]]
 // SANITIZE-WITHOUT-ATTR-NEXT:    ret void
 //
@@ -129,7 +129,7 @@ void test1(struct annotated_ptr *p, int index, struct foo 
*value) {
 // NO-SANITIZE-WITHOUT-ATTR-NEXT:    [[BUF:%.*]] = getelementptr inbounds nuw 
i8, ptr [[P]], i64 8
 // NO-SANITIZE-WITHOUT-ATTR-NEXT:    [[TMP0:%.*]] = load ptr, ptr [[BUF]], 
align 8, !tbaa [[_ZTS3FOOPTR_TBAA6]]
 // NO-SANITIZE-WITHOUT-ATTR-NEXT:    [[IDXPROM:%.*]] = sext i32 [[INDEX]] to 
i64
-// NO-SANITIZE-WITHOUT-ATTR-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds 
ptr, ptr [[TMP0]], i64 [[IDXPROM]]
+// NO-SANITIZE-WITHOUT-ATTR-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds 
[8 x i8], ptr [[TMP0]], i64 [[IDXPROM]]
 // NO-SANITIZE-WITHOUT-ATTR-NEXT:    store ptr [[VALUE]], ptr [[ARRAYIDX]], 
align 8, !tbaa [[_ZTS3FOOPTR_TBAA12]]
 // NO-SANITIZE-WITHOUT-ATTR-NEXT:    ret void
 //
@@ -154,7 +154,7 @@ void test2(struct annotated_ptr *p, int index, struct foo 
*value) {
 // SANITIZE-WITH-ATTR-NEXT:    [[BUF:%.*]] = getelementptr inbounds nuw i8, 
ptr [[P]], i64 8
 // SANITIZE-WITH-ATTR-NEXT:    [[TMP4:%.*]] = load ptr, ptr [[BUF]], align 8, 
!tbaa [[_ZTS3FOOPTR_TBAA8]]
 // SANITIZE-WITH-ATTR-NEXT:    [[IDXPROM:%.*]] = sext i32 [[INDEX]] to i64
-// SANITIZE-WITH-ATTR-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds ptr, 
ptr [[TMP4]], i64 [[IDXPROM]]
+// SANITIZE-WITH-ATTR-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [8 x 
i8], ptr [[TMP4]], i64 [[IDXPROM]]
 // SANITIZE-WITH-ATTR-NEXT:    store ptr [[VALUE]], ptr [[ARRAYIDX]], align 8, 
!tbaa [[_ZTS3FOOPTR_TBAA14]]
 // SANITIZE-WITH-ATTR-NEXT:    ret void
 //
@@ -164,7 +164,7 @@ void test2(struct annotated_ptr *p, int index, struct foo 
*value) {
 // NO-SANITIZE-WITH-ATTR-NEXT:    [[BUF:%.*]] = getelementptr inbounds nuw i8, 
ptr [[P]], i64 8
 // NO-SANITIZE-WITH-ATTR-NEXT:    [[TMP0:%.*]] = load ptr, ptr [[BUF]], align 
8, !tbaa [[_ZTS3FOOPTR_TBAA6]]
 // NO-SANITIZE-WITH-ATTR-NEXT:    [[IDXPROM:%.*]] = sext i32 [[INDEX]] to i64
-// NO-SANITIZE-WITH-ATTR-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds 
ptr, ptr [[TMP0]], i64 [[IDXPROM]]
+// NO-SANITIZE-WITH-ATTR-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [8 
x i8], ptr [[TMP0]], i64 [[IDXPROM]]
 // NO-SANITIZE-WITH-ATTR-NEXT:    store ptr [[VALUE]], ptr [[ARRAYIDX]], align 
8, !tbaa [[_ZTS3FOOPTR_TBAA12]]
 // NO-SANITIZE-WITH-ATTR-NEXT:    ret void
 //
@@ -174,7 +174,7 @@ void test2(struct annotated_ptr *p, int index, struct foo 
*value) {
 // SANITIZE-WITHOUT-ATTR-NEXT:    [[BUF:%.*]] = getelementptr inbounds nuw i8, 
ptr [[P]], i64 8
 // SANITIZE-WITHOUT-ATTR-NEXT:    [[TMP0:%.*]] = load ptr, ptr [[BUF]], align 
8, !tbaa [[_ZTS3FOOPTR_TBAA6]]
 // SANITIZE-WITHOUT-ATTR-NEXT:    [[IDXPROM:%.*]] = sext i32 [[INDEX]] to i64
-// SANITIZE-WITHOUT-ATTR-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds 
ptr, ptr [[TMP0]], i64 [[IDXPROM]]
+// SANITIZE-WITHOUT-ATTR-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [8 
x i8], ptr [[TMP0]], i64 [[IDXPROM]]
 // SANITIZE-WITHOUT-ATTR-NEXT:    store ptr [[VALUE]], ptr [[ARRAYIDX]], align 
8, !tbaa [[_ZTS3FOOPTR_TBAA12]]
 // SANITIZE-WITHOUT-ATTR-NEXT:    ret void
 //
@@ -184,7 +184,7 @@ void test2(struct annotated_ptr *p, int index, struct foo 
*value) {
 // NO-SANITIZE-WITHOUT-ATTR-NEXT:    [[BUF:%.*]] = getelementptr inbounds nuw 
i8, ptr [[P]], i64 8
 // NO-SANITIZE-WITHOUT-ATTR-NEXT:    [[TMP0:%.*]] = load ptr, ptr [[BUF]], 
align 8, !tbaa [[_ZTS3FOOPTR_TBAA6]]
 // NO-SANITIZE-WITHOUT-ATTR-NEXT:    [[IDXPROM:%.*]] = sext i32 [[INDEX]] to 
i64
-// NO-SANITIZE-WITHOUT-ATTR-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds 
ptr, ptr [[TMP0]], i64 [[IDXPROM]]
+// NO-SANITIZE-WITHOUT-ATTR-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds 
[8 x i8], ptr [[TMP0]], i64 [[IDXPROM]]
 // NO-SANITIZE-WITHOUT-ATTR-NEXT:    store ptr [[VALUE]], ptr [[ARRAYIDX]], 
align 8, !tbaa [[_ZTS3FOOPTR_TBAA12]]
 // NO-SANITIZE-WITHOUT-ATTR-NEXT:    ret void
 //
diff --git a/clang/test/CodeGen/attr-counted-by.c 
b/clang/test/CodeGen/attr-counted-by.c
index a51681a9c00fc..58d06f411b2c5 100644
--- a/clang/test/CodeGen/attr-counted-by.c
+++ b/clang/test/CodeGen/attr-counted-by.c
@@ -74,7 +74,7 @@ struct anon_struct {
 // SANITIZE-WITH-ATTR:       [[CONT3]]:
 // SANITIZE-WITH-ATTR-NEXT:    [[ARRAY:%.*]] = getelementptr inbounds nuw i8, 
ptr [[P]], i64 12
 // SANITIZE-WITH-ATTR-NEXT:    [[IDXPROM:%.*]] = sext i32 [[INDEX]] to i64
-// SANITIZE-WITH-ATTR-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds i32, 
ptr [[ARRAY]], i64 [[IDXPROM]]
+// SANITIZE-WITH-ATTR-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x 
i8], ptr [[ARRAY]], i64 [[IDXPROM]]
 // SANITIZE-WITH-ATTR-NEXT:    store i32 [[VAL]], ptr [[ARRAYIDX]], align 4, 
!tbaa [[INT_TBAA2:![0-9]+]]
 // SANITIZE-WITH-ATTR-NEXT:    ret void
 //
@@ -83,7 +83,7 @@ struct anon_struct {
 // NO-SANITIZE-WITH-ATTR-NEXT:  [[ENTRY:.*:]]
 // NO-SANITIZE-WITH-ATTR-NEXT:    [[ARRAY:%.*]] = getelementptr inbounds nuw 
i8, ptr [[P]], i64 12
 // NO-SANITIZE-WITH-ATTR-NEXT:    [[IDXPROM:%.*]] = sext i32 [[INDEX]] to i64
-// NO-SANITIZE-WITH-ATTR-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds 
i32, ptr [[ARRAY]], i64 [[IDXPROM]]
+// NO-SANITIZE-WITH-ATTR-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [4 
x i8], ptr [[ARRAY]], i64 [[IDXPROM]]
 // NO-SANITIZE-WITH-ATTR-NEXT:    store i32 [[VAL]], ptr [[ARRAYIDX]], align 
4, !tbaa [[INT_TBAA2:![0-9]+]]
 // NO-SANITIZE-WITH-ATTR-NEXT:    ret void
 //
@@ -92,7 +92,7 @@ struct anon_struct {
 // SANITIZE-WITHOUT-ATTR-NEXT:  [[ENTRY:.*:]]
 // SANITIZE-WITHOUT-ATTR-NEXT:    [[ARRAY:%.*]] = getelementptr inbounds nuw 
i8, ptr [[P]], i64 12
 // SANITIZE-WITHOUT-ATTR-NEXT:    [[IDXPROM:%.*]] = sext i32 [[INDEX]] to i64
-// SANITIZE-WITHOUT-ATTR-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds 
i32, ptr [[ARRAY]], i64 [[IDXPROM]]
+// SANITIZE-WITHOUT-ATTR-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [4 
x i8], ptr [[ARRAY]], i64 [[IDXPROM]]
 // SANITIZE-WITHOUT-ATTR-NEXT:    store i32 [[VAL]], ptr [[ARRAYIDX]], align 
4, !tbaa [[INT_TBAA2:![0-9]+]]
 // SANITIZE-WITHOUT-ATTR-NEXT:    ret void
 //
@@ -101,7 +101,7 @@ struct anon_struct {
 // NO-SANITIZE-WITHOUT-ATTR-NEXT:  [[ENTRY:.*:]]
 // NO-SANITIZE-WITHOUT-ATTR-NEXT:    [[ARRAY:%.*]] = getelementptr inbounds 
nuw i8, ptr [[P]], i64 12
 // NO-SANITIZE-WITHOUT-ATTR-NEXT:    [[IDXPROM:%.*]] = sext i32 [[INDEX]] to 
i64
-// NO-SANITIZE-WITHOUT-ATTR-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds 
i32, ptr [[ARRAY]], i64 [[IDXPROM]]
+// NO-SANITIZE-WITHOUT-ATTR-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds 
[4 x i8], ptr [[ARRAY]], i64 [[IDXPROM]]
 // NO-SANITIZE-WITHOUT-ATTR-NEXT:    store i32 [[VAL]], ptr [[ARRAYIDX]], 
align 4, !tbaa [[INT_TBAA2:![0-9]+]]
 // NO-SANITIZE-WITHOUT-ATTR-NEXT:    ret void
 //
@@ -124,7 +124,7 @@ void test1(struct annotated *p, int index, int val) {
 // SANITIZE-WITH-ATTR-NEXT:    unreachable, !nosanitize [[META6]]
 // SANITIZE-WITH-ATTR:       [[CONT6]]:
 // SANITIZE-WITH-ATTR-NEXT:    [[ARRAY:%.*]] = getelementptr inbounds nuw i8, 
ptr [[P]], i64 12
-// SANITIZE-WITH-ATTR-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds nuw 
i32, ptr [[ARRAY]], i64 [[INDEX]]
+// SANITIZE-WITH-ATTR-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds nuw 
[4 x i8], ptr [[ARRAY]], i64 [[INDEX]]
 // SANITIZE-WITH-ATTR-NEXT:    [[CONV:%.*]] = shl i32 [[COUNTED_BY_LOAD]], 2
 // SANITIZE-WITH-ATTR-NEXT:    store i32 [[CONV]], ptr [[ARRAYIDX]], align 4, 
!tbaa [[INT_TBAA2]]
 // SANITIZE-WITH-ATTR-NEXT:    ret void
@@ -137,7 +137,7 @@ void test1(struct annotated *p, int index, int val) {
 // NO-SANITIZE-WITH-ATTR-NEXT:    [[COUNTED_BY_LOAD:%.*]] = load i32, ptr 
[[COUNTED_BY_GEP]], align 4
 // NO-SANITIZE-WITH-ATTR-NEXT:    [[TMP0:%.*]] = tail call i32 
@llvm.smax.i32(i32 [[COUNTED_BY_LOAD]], i32 0)
 // NO-SANITIZE-WITH-ATTR-NEXT:    [[CONV:%.*]] = shl i32 [[TMP0]], 2
-// NO-SANITIZE-WITH-ATTR-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds 
nuw i32, ptr [[ARRAY]], i64 [[INDEX]]
+// NO-SANITIZE-WITH-ATTR-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds 
nuw [4 x i8], ptr [[ARRAY]], i64 [[INDEX]]
 // NO-SANITIZE-WITH-ATTR-NEXT:    store i32 [[CONV]], ptr [[ARRAYIDX]], align 
4, !tbaa [[INT_TBAA2]]
 // NO-SANITIZE-WITH-ATTR-NEXT:    ret void
 //
@@ -145,7 +145,7 @@ void test1(struct annotated *p, int index, int val) {
 // SANITIZE-WITHOUT-ATTR-SAME: ptr noundef [[P:%.*]], i64 noundef 
[[INDEX:%.*]]) local_unnamed_addr #[[ATTR0]] {
 // SANITIZE-WITHOUT-ATTR-NEXT:  [[ENTRY:.*:]]
 // SANITIZE-WITHOUT-ATTR-NEXT:    [[ARRAY:%.*]] = getelementptr inbounds nuw 
i8, ptr [[P]], i64 12
-// SANITIZE-WITHOUT-ATTR-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds 
nuw i32, ptr [[ARRAY]], i64 [[INDEX]]
+// SANITIZE-WITHOUT-ATTR-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds 
nuw [4 x i8], ptr [[ARRAY]], i64 [[INDEX]]
 // SANITIZE-WITHOUT-ATTR-NEXT:    store i32 -1, ptr [[ARRAYIDX]], align 4, 
!tbaa [[INT_TBAA2]]
 // SANITIZE-WITHOUT-ATTR-NEXT:    ret void
 //
@@ -153,7 +153,7 @@ void test1(struct annotated *p, int index, int val) {
 // NO-SANITIZE-WITHOUT-ATTR-SAME: ptr noundef [[P:%.*]], i64 noundef 
[[INDEX:%.*]]) local_unnamed_addr #[[ATTR0]] {
 // NO-SANITIZE-WITHOUT-ATTR-NEXT:  [[ENTRY:.*:]]
 // NO-SANITIZE-WITHOUT-ATTR-NEXT:    [[ARRAY:%.*]] = getelementptr inbounds 
nuw i8, ptr [[P]], i64 12
-// NO-SANITIZE-WITHOUT-ATTR-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds 
nuw i32, ptr [[ARRAY]], i64 [[INDEX]]
+// NO-SANITIZE-WITHOUT-ATTR-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds 
nuw [4 x i8], ptr [[ARRAY]], i64 [[INDEX]]
 // NO-SANITIZE-WITHOUT-ATTR-NEXT:    store i32 -1, ptr [[ARRAYIDX]], align 4, 
!tbaa [[INT_TBAA2]]
 // NO-SANITIZE-WITHOUT-ATTR-NEXT:    ret void
 //
@@ -248,7 +248,7 @@ size_t test2_bdos_cast(struct annotated *p) {
 // SANITIZE-WITH-ATTR-NEXT:    unreachable, !nosanitize [[META6]]
 // SANITIZE-WITH-ATTR:       [[CONT3]]:
 // SANITIZE-WITH-ATTR-NEXT:    [[ARRAY:%.*]] = getelementptr inbounds nuw i8, 
ptr [[P]], i64 12
-// SANITIZE-WITH-ATTR-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds nuw 
i32, ptr [[ARRAY]], i64 [[INDEX]]
+// SANITIZE-WITH-ATTR-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds nuw 
[4 x i8], ptr [[ARRAY]], i64 [[INDEX]]
 // SANITIZE-WITH-ATTR-NEXT:    store i32 -1, ptr [[ARRAYIDX]], align 4, !tbaa 
[[INT_TBAA2]]
 // SANITIZE-WITH-ATTR-NEXT:    ret void
 //
@@ -256,7 +256,7 @@ size_t test2_bdos_cast(struct annotated *p) {
 // NO-SANITIZE-WITH-ATTR-SAME: ptr noundef [[P:%.*]], i64 noundef 
[[INDEX:%.*]]) local_unnamed_addr #[[ATTR0]] {
 // NO-SANITIZE-WITH-ATTR-NEXT:  [[ENTRY:.*:]]
 // NO-SANITIZE-WITH-ATTR-NEXT:    [[ARRAY:%.*]] = getelementptr inbounds nuw 
i8, ptr [[P]], i64 12
-// NO-SANITIZE-WITH-ATTR-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds 
nuw i32, ptr [[ARRAY]], i64 [[INDEX]]
+// NO-SANITIZE-WITH-ATTR-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds 
nuw [4 x i8], ptr [[ARRAY]], i64 [[INDEX]]
 // NO-SANITIZE-WITH-ATTR-NEXT:    store i32 -1, ptr [[ARRAYIDX]], align 4, 
!tbaa [[INT_TBAA2]]
 // NO-SANITIZE-WITH-ATTR-NEXT:    ret void
 //
@@ -264,7 +264,7 @@ size_t test2_bdos_cast(struct annotated *p) {
 // SANITIZE-WITHOUT-ATTR-SAME: ptr noundef [[P:%.*]], i64 noundef 
[[INDEX:%.*]]) local_unnamed_addr #[[ATTR0]] {
 // SANITIZE-WITHOUT-ATTR-NEXT:  [[ENTRY:.*:]]
 // SANITIZE-WITHOUT-ATTR-NEXT:    [[ARRAY:%.*]] = getelementptr inbounds nuw 
i8, ptr [[P]], i64 12
-// SANITIZE-WITHOUT-ATTR-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds 
nuw i32, ptr [[ARRAY]], i64 [[INDEX]]
+// SANITIZE-WITHOUT-ATTR-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds 
nuw [4 x i8], ptr [[ARRAY]], i64 [[INDEX]]
 // SANITIZE-WITHOUT-ATTR-NEXT:    store i32 -1, ptr [[ARRAYIDX]], align 4, 
!tbaa [[INT_TBAA2]]
 // SANITIZE-WITHOUT-ATTR-NEXT:    ret void
 //
@@ -272,7 +272,7 @@ size_t test2_bdos_cast(struct annotated *p) {
 // NO-SANITIZE-WITHOUT-ATTR-SAME: ptr noundef [[P:%.*]], i64 noundef 
[[INDEX:%.*]]) local_unnamed_addr #[[ATTR0]] {
 // NO-SANITIZE-WITHOUT-ATTR-NEXT:  [[ENTRY:.*:]]
 // NO-SANITIZE-WITHOUT-ATTR-NEXT:    [[ARRAY:%.*]] = getelementptr inbounds 
nuw i8, ptr [[P]], i64 12
-// NO-SANITIZE-WITHOUT-ATTR-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds 
nuw i32, ptr [[ARRAY]], i64 [[INDEX]]
+// NO-SANITIZE-WITHOUT-ATTR-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds 
nuw [4 x i8], ptr [[ARRAY]], i64 [[INDEX]]
 // NO-SANITIZE-WITHOUT-ATTR-NEXT:    store i32 -1, ptr [[ARRAYIDX]], align 4, 
!tbaa [[INT_TBAA2]]
 // NO-SANITIZE-WITHOUT-ATTR-NEXT:    ret void
 //
@@ -352,7 +352,7 @@ size_t test3_bdos_cast(struct annotated *p) {
 // SANITIZE-WITH-ATTR:       [[CONT12]]:
 // SANITIZE-WITH-ATTR-NEXT:    [[RESULT:%.*]] = add i32 
[[FLEXIBLE_ARRAY_MEMBER_SIZE]], 244
 // SANITIZE-WITH-ATTR-NEXT:    [[TMP2:%.*]] = and i32 [[RESULT]], 252
-// SANITIZE-WITH-ATTR-NEXT:    [[ARRAYIDX10:%.*]] = getelementptr inbounds nuw 
i32, ptr [[ARRAY]], i64 [[IDXPROM]]
+// SANITIZE-WITH-ATTR-NEXT:    [[ARRAYIDX10:%.*]] = getelementptr inbounds nuw 
[4 x i8], ptr [[ARRAY]], i64 [[IDXPROM]]
 // SANITIZE-WITH-ATTR-NEXT:    store i32 [[TMP2]], ptr [[ARRAYIDX10]], align 
4, !tbaa [[INT_TBAA2]]
 // SANITIZE-WITH-ATTR-NEXT:    [[DOTNOT79:%.*]] = icmp eq i32 
[[DOTCOUNTED_BY_LOAD]], 3
 // ...
[truncated]

``````````

</details>


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

Reply via email to