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&to=0656da14cc57cceeceab1bdceb5938a98635933f&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
