[llvm] 5e89876 - Revert "[RISC-V][HWASAN] Support tagging global variables for RISC-V HWASAN"

Roman Lebedev via llvm-commits llvm-commits at lists.llvm.org
Tue Dec 13 04:18:37 PST 2022


Reminder to please always mention the reason for the revert/recommit
in the commit message.

On Tue, Dec 13, 2022 at 3:18 PM Alexey Baturo via llvm-commits
<llvm-commits at lists.llvm.org> wrote:
>
>
> Author: Alexey Baturo
> Date: 2022-12-13T15:17:40+03:00
> New Revision: 5e89876538ac51797b6699f66545658726d4d8e2
>
> URL: https://github.com/llvm/llvm-project/commit/5e89876538ac51797b6699f66545658726d4d8e2
> DIFF: https://github.com/llvm/llvm-project/commit/5e89876538ac51797b6699f66545658726d4d8e2.diff
>
> LOG: Revert "[RISC-V][HWASAN] Support tagging global variables for RISC-V HWASAN"
>
> This reverts commit 11937ca5642216a67e021e69fc824f709267bada.
>
> Added:
>
>
> Modified:
>     llvm/lib/Target/RISCV/RISCV.td
>     llvm/lib/Target/RISCV/RISCVExpandPseudoInsts.cpp
>     llvm/lib/Target/RISCV/RISCVISelLowering.cpp
>
> Removed:
>     llvm/test/CodeGen/RISCV/tagged-globals.ll
>
>
> ################################################################################
> diff  --git a/llvm/lib/Target/RISCV/RISCV.td b/llvm/lib/Target/RISCV/RISCV.td
> index fd0dd8a759ca7..cde63564e5c40 100644
> --- a/llvm/lib/Target/RISCV/RISCV.td
> +++ b/llvm/lib/Target/RISCV/RISCV.td
> @@ -525,11 +525,6 @@ def FeatureForcedAtomics : SubtargetFeature<
>  def HasAtomicLdSt
>      : Predicate<"Subtarget->hasStdExtA() || Subtarget->hasForcedAtomics()">;
>
> -def FeatureTaggedGlobals : SubtargetFeature<"tagged-globals",
> -    "AllowTaggedGlobals",
> -    "true", "Use an instruction sequence for taking the address of a global "
> -    "that allows a memory tag in the upper address bits">;
> -
>  //===----------------------------------------------------------------------===//
>  // Named operands for CSR instructions.
>  //===----------------------------------------------------------------------===//
>
> diff  --git a/llvm/lib/Target/RISCV/RISCVExpandPseudoInsts.cpp b/llvm/lib/Target/RISCV/RISCVExpandPseudoInsts.cpp
> index 70ae6eba4f8db..78fc58b69d8ad 100644
> --- a/llvm/lib/Target/RISCV/RISCVExpandPseudoInsts.cpp
> +++ b/llvm/lib/Target/RISCV/RISCVExpandPseudoInsts.cpp
> @@ -333,12 +333,8 @@ bool RISCVPreRAExpandPseudo::expandLoadAddress(
>      MachineBasicBlock::iterator &NextMBBI) {
>    MachineFunction *MF = MBB.getParent();
>
> +  assert(MF->getTarget().isPositionIndependent());
>    const auto &STI = MF->getSubtarget<RISCVSubtarget>();
> -  // When HWASAN is used and tagging of global variables is enabled
> -  // they should be accessed via the GOT, since the tagged address of a global
> -  // is incompatible with existing code models. This also applies to non-pic
> -  // mode.
> -  assert(MF->getTarget().isPositionIndependent() || STI.allowTaggedGlobals());
>    unsigned SecondOpcode = STI.is64Bit() ? RISCV::LD : RISCV::LW;
>    return expandAuipcInstPair(MBB, MBBI, NextMBBI, RISCVII::MO_GOT_HI,
>                               SecondOpcode);
>
> diff  --git a/llvm/lib/Target/RISCV/RISCVISelLowering.cpp b/llvm/lib/Target/RISCV/RISCVISelLowering.cpp
> index 4010dc88fe2d2..7efaefd00ba7d 100644
> --- a/llvm/lib/Target/RISCV/RISCVISelLowering.cpp
> +++ b/llvm/lib/Target/RISCV/RISCVISelLowering.cpp
> @@ -4230,13 +4230,9 @@ SDValue RISCVTargetLowering::getAddr(NodeTy *N, SelectionDAG &DAG,
>    SDLoc DL(N);
>    EVT Ty = getPointerTy(DAG.getDataLayout());
>
> -  // When HWASAN is used and tagging of global variables is enabled
> -  // they should be accessed via the GOT, since the tagged address of a global
> -  // is incompatible with existing code models. This also applies to non-pic
> -  // mode.
> -  if (isPositionIndependent() || Subtarget.allowTaggedGlobals()) {
> +  if (isPositionIndependent()) {
>      SDValue Addr = getTargetNode(N, DL, Ty, DAG, 0);
> -    if (IsLocal && !Subtarget.allowTaggedGlobals())
> +    if (IsLocal)
>        // Use PC-relative addressing to access the symbol. This generates the
>        // pattern (PseudoLLA sym), which expands to (addi (auipc %pcrel_hi(sym))
>        // %pcrel_lo(auipc)).
>
> diff  --git a/llvm/test/CodeGen/RISCV/tagged-globals.ll b/llvm/test/CodeGen/RISCV/tagged-globals.ll
> deleted file mode 100644
> index 21be791c366b0..0000000000000
> --- a/llvm/test/CodeGen/RISCV/tagged-globals.ll
> +++ /dev/null
> @@ -1,87 +0,0 @@
> -; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --no-generate-body-for-unused-prefixes
> -; RUN: llc --relocation-model=pic < %s | FileCheck %s
> -; RUN: llc --relocation-model=static < %s | FileCheck %s
> -
> - at global_ext = external global i32
> - at global_int = internal global i32 0
> -declare void @func()
> -
> -define i32* @global_addr() #0 {
> -; CHECK-LABEL: global_addr:
> -; CHECK:       # %bb.0:
> -; CHECK-NEXT:  .Lpcrel_hi0:
> -; CHECK-NEXT:    auipc a0, %got_pcrel_hi(global_ext)
> -; CHECK-NEXT:    ld a0, %pcrel_lo(.Lpcrel_hi0)(a0)
> -; CHECK-NEXT:    ret
> -  ret i32* @global_ext
> -}
> -
> -define i32 @global_load() #0 {
> -; CHECK-LABEL: global_load:
> -; CHECK:       # %bb.0:
> -; CHECK-NEXT:  .Lpcrel_hi1:
> -; CHECK-NEXT:    auipc a0, %got_pcrel_hi(global_ext)
> -; CHECK-NEXT:    ld a0, %pcrel_lo(.Lpcrel_hi1)(a0)
> -; CHECK-NEXT:    lw a0, 0(a0)
> -; CHECK-NEXT:    ret
> -  %load = load i32, i32* @global_ext
> -  ret i32 %load
> -}
> -
> -define void @global_store() #0 {
> -; CHECK-LABEL: global_store:
> -; CHECK:       # %bb.0:
> -; CHECK-NEXT:  .Lpcrel_hi2:
> -; CHECK-NEXT:    auipc a0, %got_pcrel_hi(global_ext)
> -; CHECK-NEXT:    ld a0, %pcrel_lo(.Lpcrel_hi2)(a0)
> -; CHECK-NEXT:    sw zero, 0(a0)
> -; CHECK-NEXT:    ret
> -  store i32 0, i32* @global_ext
> -  ret void
> -}
> -
> -define i32* @global_int_addr() #0 {
> -; CHECK-LABEL: global_int_addr:
> -; CHECK:       # %bb.0:
> -; CHECK-NEXT:  .Lpcrel_hi3:
> -; CHECK-NEXT:    auipc a0, %got_pcrel_hi(global_int)
> -; CHECK-NEXT:    ld a0, %pcrel_lo(.Lpcrel_hi3)(a0)
> -; CHECK-NEXT:    ret
> -  ret i32* @global_int
> -}
> -
> -define i32 @global_int_load() #0 {
> -; CHECK-LABEL: global_int_load:
> -; CHECK:       # %bb.0:
> -; CHECK-NEXT:  .Lpcrel_hi4:
> -; CHECK-NEXT:    auipc a0, %got_pcrel_hi(global_int)
> -; CHECK-NEXT:    ld a0, %pcrel_lo(.Lpcrel_hi4)(a0)
> -; CHECK-NEXT:    lw a0, 0(a0)
> -; CHECK-NEXT:    ret
> -  %load = load i32, i32* @global_int
> -  ret i32 %load
> -}
> -
> -define void @global_int_store() #0 {
> -; CHECK-LABEL: global_int_store:
> -; CHECK:       # %bb.0:
> -; CHECK-NEXT:  .Lpcrel_hi5:
> -; CHECK-NEXT:    auipc a0, %got_pcrel_hi(global_int)
> -; CHECK-NEXT:    ld a0, %pcrel_lo(.Lpcrel_hi5)(a0)
> -; CHECK-NEXT:    sw zero, 0(a0)
> -; CHECK-NEXT:    ret
> -  store i32 0, i32* @global_int
> -  ret void
> -}
> -
> -define void ()* @func_addr() #0 {
> -; CHECK-LABEL: func_addr:
> -; CHECK:       # %bb.0:
> -; CHECK-NEXT:  .Lpcrel_hi6:
> -; CHECK-NEXT:    auipc a0, %got_pcrel_hi(func)
> -; CHECK-NEXT:    ld a0, %pcrel_lo(.Lpcrel_hi6)(a0)
> -; CHECK-NEXT:    ret
> -  ret void ()* @func
> -}
> -
> -attributes #0 = { "target-features"="+tagged-globals" }
>
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits


More information about the llvm-commits mailing list