SuccessChanges

Summary

  1. [MLIR][SPIRV] Support identified and recursive structs. (details)
  2. [x86] add tests for cost model kinds of intrinsics; NFC (details)
  3. [InstructionSimplify] Precommit tests for D89317. NFC. (details)
  4. [AArch64] fix spacing in test's RUN lines; NFC (details)
  5. [SyntaxTree] Fix rtti for `Expression`. (details)
  6. [WebAssembly] Added .tabletype to asm and multiple table support in obj files (details)
  7. [lldb] Add targets for running test suite against Watch/TV/iPhone simulators (details)
  8. [lldb][NFC] Remove property predicate matcher (details)
  9. [lldb] Remove all the RegisterInfo name constification code (details)
  10. [lldb] Allow limiting the number of error diagnostics when parsing an expression (details)
  11. [lldb][cmake] Remove custom logic for finding VCS file to fix LLDB's VCSVersion.inc generation (details)
  12. [AMDGPU][GlobalISel] Compute known bits for zero-extending loads (details)
  13. [mlir][gpu] Add `gpu.wait` op. (details)
  14. [x86] add cost model test for memcpy; NFC (details)
  15. [CostModel] rearrange basic intrinsic cost implementation (details)
  16. [NFC][Regalloc] Use MCRegister in MachineCopyPropagation (details)
  17. [compiler-rt] Allow override of 'emulator' value from lit_config. (details)
  18. AMDGPU: Remove -mamdgpu-debugger-abi option (details)
  19. LLD/AMDGPU: Infer os abi based on input llvm bitcode (details)
  20. [libc++] Allow passing relative paths to the Apple install script (details)
  21. [mlir][Linalg] Fix TensorConstantOp bufferization in Linalg. (details)
  22. [mlir] Fix sporadic build failures due to missing dependency (details)
  23. [LoopVersioningLICM] Fix noalias metadata emission (details)
  24. [ASAN] Make sure we are only processing lifetime markers with offset 0 to alloca (details)
Commit bddaa7a84868cf91d35b896ff773a269bae640df by antiagainst
[MLIR][SPIRV] Support identified and recursive structs.

This PR adds support for identified and recursive structs.
This includes: parsing, printing, serializing, and
deserializing such structs.

The following C struct:

```C
struct A {
  A* next;
};
```

which is translated to the following MLIR code as:

```mlir
!spv.struct<A, (!spv.ptr<!spv.struct<A>, Generic>)>
```

would be represented in the SPIR-V module as:

```spirv
OpName %A "A"
OpTypeForwardPointer %APtr Generic
%A = OpTypeStruct %APtr
%APtr = OpTypePointer Generic %A
```

In particular the following changes are included:
- SPIR-V structs can now be either identified or literal
  (i.e. non-identified).
- All structs now have their members surrounded by a ()-pair.
- For recursive references,
  (1) an OpTypeForwardPointer instruction is emitted before
  the OpTypeStruct instruction defining the recursive struct
  (2) an OpTypePointer instruction is emitted after the
  OpTypeStruct instruction which actually defines the recursive
  pointer to struct type.

Reviewed By: antiagainst, rriddle, ftynse

Differential Revision: https://reviews.llvm.org/D87206
The file was modifiedmlir/lib/Dialect/SPIRV/Serialization/Serializer.cpp
The file was modifiedmlir/test/Conversion/GPUToSPIRV/module-structure-opencl.mlir
The file was modifiedmlir/test/Dialect/SPIRV/Serialization/undef.mlir
The file was modifiedmlir/test/Dialect/SPIRV/Transforms/inlining.mlir
The file was modifiedmlir/test/Conversion/GPUToSPIRV/load-store.mlir
The file was modifiedmlir/lib/Dialect/SPIRV/Transforms/DecorateSPIRVCompositeTypeLayoutPass.cpp
The file was modifiedmlir/lib/Dialect/SPIRV/Transforms/LowerABIAttributesPass.cpp
The file was modifiedmlir/test/Dialect/SPIRV/Serialization/spec-constant.mlir
The file was modifiedmlir/lib/Dialect/SPIRV/SPIRVDialect.cpp
The file was modifiedmlir/test/Conversion/StandardToSPIRV/std-ops-to-spirv.mlir
The file was modifiedmlir/test/Conversion/StandardToSPIRV/std-types-to-spirv.mlir
The file was modifiedmlir/test/Dialect/SPIRV/structure-ops.mlir
The file was modifiedmlir/test/Dialect/SPIRV/Transforms/abi-load-store.mlir
The file was modifiedmlir/test/Dialect/SPIRV/Serialization/loop.mlir
The file was modifiedmlir/include/mlir/Dialect/SPIRV/SPIRVBase.td
The file was modifiedmlir/test/Dialect/SPIRV/canonicalize.mlir
The file was modifiedmlir/test/Dialect/SPIRV/Serialization/debug.mlir
The file was modifiedmlir/test/Dialect/SPIRV/Transforms/rewrite-inserts.mlir
The file was modifiedmlir/include/mlir/Dialect/SPIRV/SPIRVTypes.h
The file was modifiedmlir/test/Conversion/SPIRVToLLVM/spirv-types-to-llvm.mlir
The file was modifiedmlir/test/Dialect/SPIRV/Transforms/abi-interface.mlir
The file was modifiedmlir/test/Conversion/GPUToVulkan/lower-gpu-launch-vulkan-launch.mlir
The file was modifiedmlir/test/Dialect/SPIRV/Serialization/memory-ops.mlir
The file was modifiedmlir/test/Conversion/SPIRVToLLVM/memory-ops-to-llvm.mlir
The file was modifiedmlir/test/Dialect/SPIRV/Transforms/abi-interface-opencl.mlir
The file was modifiedmlir/test/Conversion/GPUToSPIRV/if.mlir
The file was modifiedmlir/test/Dialect/SPIRV/cooperative-matrix.mlir
The file was modifiedmlir/test/Conversion/SPIRVToLLVM/spirv-types-to-llvm-invalid.mlir
The file was modifiedmlir/test/Conversion/GPUToSPIRV/simple.mlir
The file was modifiedmlir/test/Dialect/SPIRV/Serialization/composite-op.mlir
The file was modifiedmlir/test/Dialect/SPIRV/Transforms/layout-decoration.mlir
The file was modifiedmlir/test/Dialect/SPIRV/types.mlir
The file was modifiedmlir/test/Dialect/SPIRV/composite-ops.mlir
The file was modifiedmlir/test/Conversion/StandardToSPIRV/alloc.mlir
The file was modifiedmlir/test/Conversion/SPIRVToLLVM/misc-ops-to-llvm.mlir
The file was modifiedmlir/lib/Dialect/SPIRV/LayoutUtils.cpp
The file was modifiedmlir/test/Dialect/SPIRV/Serialization/struct.mlir
The file was modifiedmlir/test/Dialect/SPIRV/Transforms/vce-deduction.mlir
The file was modifiedmlir/test/Dialect/SPIRV/ops.mlir
The file was modifiedmlir/lib/Dialect/SPIRV/SPIRVTypes.cpp
The file was modifiedmlir/lib/Dialect/SPIRV/Serialization/Deserializer.cpp
Commit fab028b914c64db710c808250873c61d8ff716a2 by spatel
[x86] add tests for cost model kinds of intrinsics; NFC

This provides coverage for existing special-cases and
a sampling of other intrinsics. Current output appears
to be wrong in several cases.
The file was addedllvm/test/Analysis/CostModel/X86/intrinsic-cost-kinds.ll
Commit 66f22411e1bba6eca935fd6447c5dceba48e2e35 by sjoerd.meijer
[InstructionSimplify] Precommit tests for D89317. NFC.
The file was modifiedllvm/test/Transforms/InstSimplify/compare.ll
Commit 1c90878e60d7cae74552425475faa5a87562e4b3 by spatel
[AArch64] fix spacing in test's RUN lines; NFC
The file was modifiedllvm/test/Analysis/CostModel/AArch64/sve-math.ll
Commit a8f1790fdb8ce1c53f024870cd51f32724d4c55f by ecaldas
[SyntaxTree] Fix rtti for `Expression`.

Differential Revision: https://reviews.llvm.org/D89146
The file was modifiedclang/include/clang/Tooling/Syntax/Nodes.h
Commit 388fb67b0dd7f41630ab6c3400c96843852319af by sbc
[WebAssembly] Added .tabletype to asm and multiple table support in obj files

Adds more testing in basic-assembly.s and a new test tables.s.
Adds support to yaml reading and writing of tables as well.

Differential Revision: https://reviews.llvm.org/D88815
The file was modifiedllvm/test/MC/WebAssembly/global-ctor-dtor.ll
The file was modifiedlld/test/wasm/shared.ll
The file was modifiedllvm/lib/Target/WebAssembly/MCTargetDesc/WebAssemblyInstPrinter.cpp
The file was modifiedlld/test/wasm/locals-duplicate.test
The file was modifiedlld/test/wasm/relocatable.ll
The file was modifiedllvm/test/MC/WebAssembly/wasm64.s
The file was modifiedlld/wasm/SyntheticSections.cpp
The file was modifiedllvm/tools/obj2yaml/wasm2yaml.cpp
The file was modifiedlld/test/wasm/weak-alias.ll
The file was modifiedllvm/include/llvm/Object/Wasm.h
The file was modifiedllvm/lib/ObjectYAML/WasmEmitter.cpp
The file was modifiedllvm/test/MC/WebAssembly/type-index.s
The file was modifiedlld/test/wasm/alias.s
The file was modifiedllvm/test/MC/WebAssembly/basic-assembly.s
The file was addedllvm/test/MC/WebAssembly/tables.s
The file was modifiedllvm/test/Object/wasm-relocs-and-producers.yaml
The file was modifiedlld/test/wasm/pie.ll
The file was modifiedlld/test/wasm/weak-symbols.ll
The file was modifiedllvm/lib/Target/WebAssembly/MCTargetDesc/WebAssemblyTargetStreamer.cpp
The file was modifiedlld/wasm/WriterUtils.cpp
The file was modifiedllvm/test/tools/llvm-readobj/wasm/wasm-imports.test
The file was modifiedlld/test/wasm/weak-alias-overide.ll
The file was modifiedllvm/lib/MC/WasmObjectWriter.cpp
The file was modifiedlld/test/wasm/stack-pointer.ll
The file was modifiedllvm/lib/Object/WasmObjectFile.cpp
The file was modifiedllvm/lib/Target/WebAssembly/MCTargetDesc/WebAssemblyTargetStreamer.h
The file was modifiedlld/test/wasm/shared-memory-no-atomics.yaml
The file was modifiedllvm/test/MC/WebAssembly/comdat.ll
The file was modifiedlld/test/wasm/export-table.test
The file was modifiedllvm/include/llvm/BinaryFormat/Wasm.h
The file was modifiedllvm/include/llvm/MC/MCSymbolWasm.h
The file was modifiedlld/test/wasm/undefined-weak-call.ll
The file was modifiedllvm/lib/ObjectYAML/WasmYAML.cpp
The file was modifiedllvm/lib/BinaryFormat/Wasm.cpp
The file was modifiedllvm/include/llvm/ObjectYAML/WasmYAML.h
The file was modifiedllvm/test/MC/WebAssembly/assembler-binary.ll
The file was modifiedllvm/test/ObjectYAML/wasm/table_section.yaml
The file was modifiedlld/test/wasm/call-indirect.ll
The file was modifiedlld/test/wasm/growable-table.test
The file was modifiedlld/test/wasm/weak-undefined.ll
The file was modifiedllvm/test/ObjectYAML/wasm/import_section.yaml
The file was modifiedlld/test/wasm/shared-memory.yaml
The file was modifiedllvm/test/MC/WebAssembly/reloc-pic.s
The file was modifiedllvm/test/MC/WebAssembly/data-section.s
The file was modifiedllvm/test/MC/WebAssembly/weak-alias.s
The file was modifiedlld/test/wasm/local-symbols.ll
The file was modifiedllvm/test/ObjectYAML/wasm/elem_section.yaml
The file was modifiedlld/test/wasm/import-table.test
The file was modifiedllvm/lib/Target/WebAssembly/WebAssemblyAsmPrinter.cpp
The file was modifiedllvm/lib/Target/WebAssembly/AsmParser/WebAssemblyAsmParser.cpp
Commit ef733d9df486884aa33de9f5a9f6bade4e70f187 by Raphael Isemann
[lldb] Add targets for running test suite against Watch/TV/iPhone simulators

This patch adds several build system targets that run the normal test suite but
against the Watch/TV/iPhone simulators.

Reviewed By: JDevlieghere

Differential Revision: https://reviews.llvm.org/D89224
The file was modifiedlldb/test/CMakeLists.txt
The file was modifiedlldb/test/API/lit.cfg.py
Commit 4cd873c4bd7ff66d4af2bf5e57c27e6924bfc92a by Raphael Isemann
[lldb][NFC] Remove property predicate matcher

That's supposed to be used to implement things such as `settings set target.run-args{basename==test&&arch==x86_64} arg1`
but it's not actually fully implemented or tested anywhere.

Reviewed By: JDevlieghere

Differential Revision: https://reviews.llvm.org/D88910
The file was modifiedlldb/source/Interpreter/OptionValueProperties.cpp
The file was modifiedlldb/include/lldb/Interpreter/OptionValueProperties.h
Commit 24e07570cc928b75e894b81639cabe96c660ccef by Raphael Isemann
[lldb] Remove all the RegisterInfo name constification code

RegisterInfo's `reg_name`/`reg_alt_name` fields are C-Strings and are supposed
to only be generated from a ConstString. The reason for that is that
`DynamicRegisterInfo::GetRegisterInfo` and
`RegInfoBasedABI::GetRegisterInfoByName` try to optimise finding registers by
name by only comparing the C string pointer values instead of the underlying
strings. This only works if both C strings involved in the comparison come from
a ConstString. If one of the two C strings doesn't come from a ConstString the
comparison won't work (and most likely will silently fail).

I added an assert in b0060c3a7868ef026d95d0cf8a076791ef74f474 which checks that
both strings come from a ConstString. Apparently not all ABI plugins are
generating their register names via ConstString, so this code is now not just
silently failing but also asserting.

In D88375 we did a shady fix for the MIPS plugins by just copying the
ConstString setup code to that plugin, but we still need to fix ABISysV_arc,
ABISysV_ppc and ABISysV_ppc64 plugins.

I would say we just fix the remaining plugins by removing the whole requirement
to have the register names coming from ConstStrings. I really doubt that we
actually save any time with the whole ConstString search trick (searching ~50
strings that have <4 characters doesn't sound more expensive than calling the
really expensive ConstString constructor + comparing the same amount of pointer
values). Also whatever small percentage of LLDB's runtime is actually spend in
this function is anyway not worth the complexity of this approach.

This patch just removes all this and just does a normal string comparison.

Reviewed By: JDevlieghere, labath

Differential Revision: https://reviews.llvm.org/D88490
The file was modifiedlldb/source/Target/ABI.cpp
The file was modifiedlldb/source/Plugins/ABI/Mips/ABISysV_mips.cpp
The file was modifiedlldb/include/lldb/Target/ABI.h
The file was modifiedlldb/source/Plugins/ABI/Mips/ABISysV_mips64.cpp
The file was modifiedlldb/source/Plugins/ABI/ARM/ABIMacOSX_arm.cpp
The file was modifiedlldb/source/Plugins/ABI/ARM/ABISysV_arm.cpp
The file was modifiedlldb/source/Plugins/ABI/SystemZ/ABISysV_s390x.cpp
The file was modifiedlldb/source/Plugins/ABI/Hexagon/ABISysV_hexagon.cpp
The file was modifiedlldb/source/Plugins/Process/Utility/DynamicRegisterInfo.cpp
The file was modifiedlldb/source/Plugins/Process/Utility/DynamicRegisterInfo.h
Commit 02114e15daad7f02e65289412d37334618386ce5 by Raphael Isemann
[lldb] Allow limiting the number of error diagnostics when parsing an expression

While debugging another bug I found out that we currently don't set any limit
for the number of diagnostics Clang emits. If a user does something that
generates a lot of errors (like including some long header file from within the
expression function), then we currently spam the LLDB output with potentially
thousands of Clang error diagnostics.

Clang sets a default limit of 20 errors, but given that LLDB is often used
interactively for small expressions I would say a limit of 5 is enough. The
limit is implemented as a setting, so if a user cares about seeing having a
million errors printed to their terminal then they can just increase the
settings value.

Reviewed By: shafik, mib

Differential Revision: https://reviews.llvm.org/D88889
The file was addedlldb/test/API/commands/expression/error-limit/TestExprErrorLimit.py
The file was modifiedlldb/source/Target/TargetProperties.td
The file was addedlldb/test/API/commands/expression/error-limit/Makefile
The file was modifiedlldb/include/lldb/Target/Target.h
The file was modifiedlldb/source/Plugins/ExpressionParser/Clang/ClangExpressionParser.cpp
The file was modifiedlldb/source/Target/Target.cpp
The file was addedlldb/test/API/commands/expression/error-limit/main.cpp
Commit 6733b2544794f2703f19f07aa7c6806408e36160 by Raphael Isemann
[lldb][cmake] Remove custom logic for finding VCS file to fix LLDB's VCSVersion.inc generation

We are still implementing our own logic for this that looks for a VCS file in
the place where it was before the monorepo migration. This removes this logic
and just uses the CMake function that LLVM/Clang are using.

Reviewed By: JDevlieghere, kastiglione

Differential Revision: https://reviews.llvm.org/D88950
The file was modifiedlldb/source/CMakeLists.txt
Commit b59d8d7c72546bf3f81889f4ce02a68c902eddd2 by jay.foad
[AMDGPU][GlobalISel] Compute known bits for zero-extending loads

Implement computeKnownBitsForTargetInstr for G_AMDGPU_BUFFER_LOAD_UBYTE
and G_AMDGPU_BUFFER_LOAD_USHORT. This allows generic combines to remove
some unnecessary G_ANDs.

Differential Revision: https://reviews.llvm.org/D89316
The file was modifiedllvm/lib/Target/AMDGPU/SIISelLowering.cpp
The file was modifiedllvm/test/CodeGen/AMDGPU/GlobalISel/llvm.amdgcn.raw.buffer.load.ll
The file was modifiedllvm/test/CodeGen/AMDGPU/GlobalISel/llvm.amdgcn.struct.buffer.load.ll
Commit db1cf3d9ab33f56fcaea616baa71c6e4036beffa by csigg
[mlir][gpu] Add `gpu.wait` op.

This combines two separate ops (D88972: `gpu.create_token`, D89043: `gpu.host_wait`) into one.

I do after all like the idea of combining the two ops, because it matches exactly the pattern we are
going to have in the other gpu ops that will implement the AsyncOpInterface (launch_func, copies, alloc):

If the op is async, we return a !gpu.async.token. Otherwise, we synchronize with the host and don't return a token.

The use cases for `gpu.wait async` and `gpu.wait` are further apart than those of e.g. `gpu.h2d async` and `gpu.h2d`,
but I like the consistent meaning of the `async` keyword in GPU ops.

Reviewed By: herhut

Differential Revision: https://reviews.llvm.org/D89160
The file was modifiedmlir/lib/Dialect/GPU/IR/GPUDialect.cpp
The file was modifiedmlir/include/mlir/Dialect/GPU/GPUOps.td
The file was modifiedmlir/test/Dialect/GPU/ops.mlir
The file was modifiedmlir/test/Dialect/GPU/invalid.mlir
Commit 1b94261e36f18bdc17097078518df448b67c84ea by spatel
[x86] add cost model test for memcpy; NFC

This is treated as a special-case in the base class
implementation of getIntrinsicInstrCost().
The file was modifiedllvm/test/Analysis/CostModel/X86/intrinsic-cost-kinds.ll
Commit ef748583c24d7dd7ab1f904a27f3a1382cda22c6 by spatel
[CostModel] rearrange basic intrinsic cost implementation

This is bigger/uglier than before, but it should allow fixing
all of the broken paths more easily. Test coverage added with
rGfab028b and other commits.

This is not NFC - the scalable vector test would crash
without this patch.
The file was modifiedllvm/test/Analysis/CostModel/AArch64/sve-math.ll
The file was modifiedllvm/include/llvm/CodeGen/BasicTTIImpl.h
Commit 08097fc6a9746370e073e617036847d9ea46c9f4 by mtrofin
[NFC][Regalloc] Use MCRegister in MachineCopyPropagation

Differential Revision: https://reviews.llvm.org/D89250
The file was modifiedllvm/lib/CodeGen/MachineCopyPropagation.cpp
Commit eddbadfe13fbdcf18fee7d643d70d8042d69c778 by abidh
[compiler-rt] Allow override of 'emulator' value from lit_config.

Currently the 'emulator' value is fixed at build time. This patch allows changing the emulator
at testing time and enables us to run the tests on different board or simulators without needing
to run CMake again to change the value of emulator.

With this patch in place, the value of 'emulator' can be changed at test time from the command
line like this:

$ llvm-lit --param=emulator="..."

Reviewed By: delcypher

Differential Revision: https://reviews.llvm.org/D84708
The file was modifiedcompiler-rt/test/lit.common.cfg.py
Commit e2eaa914514c26c8e51c76148996a2e9cf74613c by kzhuravl_dev
AMDGPU: Remove -mamdgpu-debugger-abi option

It has been unsupported for few years now.

Differential Revision: https://reviews.llvm.org/D89125
The file was modifiedclang/include/clang/Driver/Options.td
The file was modifiedclang/test/Driver/amdgpu-features.c
The file was modifiedclang/lib/Driver/ToolChains/AMDGPU.cpp
The file was modifiedclang/docs/ClangCommandLineReference.rst
Commit f218652a36bdf0ecd842c30da7a3936dc6580e96 by kzhuravl_dev
LLD/AMDGPU: Infer os abi based on input llvm bitcode

Differential Revision: https://reviews.llvm.org/D89042
The file was modifiedlld/ELF/InputFiles.cpp
The file was addedlld/test/ELF/lto/amdgcn-oses.ll
Commit ab55897817cc09113a9729d4ed907e13aa0386ff by Louis Dionne
[libc++] Allow passing relative paths to the Apple install script
The file was modifiedlibcxx/utils/ci/apple-install-libcxx.sh
Commit 6121117484ddd7c5a03b40004a8bba58506ce9d0 by nicolas.vasilache
[mlir][Linalg] Fix TensorConstantOp bufferization in Linalg.

TensorConstantOp bufferization currently uses the vector dialect to store constant data into memory.
Due to natural vector size and alignment properties, this is problematic with n>1-D vectors whose most minor dimension is not naturally aligned.

Instead, this revision linearizes the constant and introduces a linalg.reshape to go back to the desired shape.

Still this is still to be considered a workaround and a better longer term solution will probably involve `llvm.global`.

Differential Revision: https://reviews.llvm.org/D89311
The file was modifiedmlir/integration_test/Dialect/Linalg/CPU/test-tensor-matmul.mlir
The file was modifiedmlir/include/mlir/Dialect/Linalg/Transforms/Transforms.h
The file was modifiedmlir/lib/Dialect/Linalg/Transforms/TensorsToBuffers.cpp
The file was modifiedmlir/test/Dialect/Linalg/tensors-to-buffers.mlir
Commit 0c15a1b4bcefc1eb434e07aa31b7a08109ccd27e by stilis
[mlir] Fix sporadic build failures due to missing dependency

The build of MLIR occasionally fails (especially on Windows) because there is missing dependency between MLIRLLVMIR and MLIROpenMPOpsIncGen.

1) LLVMDialect.cpp includes LLVMDialect.h
2) LLVMDialect.h includes OpenMPDialect.h
3) OpenMPDialect.h includes OpenMPOpsDialect.h.inc, OpenMPOpsEnums.h.inc and OpenMPOps.h.inc

The OpenMP .inc files are generated by MLIROpenMPOpsIncGen, so MLIRLLVMIR which builds LLVMDialect.cpp should depend on MLIROpenMPOpsIncGen

Reviewed By: mehdi_amini

Differential Revision: https://reviews.llvm.org/D89275
The file was modifiedmlir/lib/Dialect/LLVMIR/CMakeLists.txt
Commit 6713332fddb796f5b14fcb6a7e5d36979676e4ab by nikita.ppv
[LoopVersioningLICM] Fix noalias metadata emission

The previous code added the scope on each iteration, so that the
same scope was represented many times in the same !noalias metadata.
That's legal, and semantically equivalent to only storing the scope
once, but it's also wasteful and may pessimize further optimization
if AATags get intersected naively, as done by the AliasSetTracker.
The file was modifiedllvm/lib/Transforms/Scalar/LoopVersioningLICM.cpp
Commit 0ccf9263cceb462a5f3b823becf7e9471e5fb212 by xun
[ASAN] Make sure we are only processing lifetime markers with offset 0 to alloca

This patch addresses https://bugs.llvm.org/show_bug.cgi?id=47787 (and hence https://bugs.llvm.org/show_bug.cgi?id=47767 as well).
In latter instrumentation code, we always use the beginning of the alloca as the base for instrumentation, ignoring any offset into the alloca.
Because of that, we should only instrument a lifetime marker if it's actually pointing to the beginning of the alloca.

Differential Revision: https://reviews.llvm.org/D89191
The file was addedllvm/test/Instrumentation/AddressSanitizer/alloca-offset-lifetime.ll
The file was modifiedllvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp