Index: llvm/lib/CodeGen/GlobalISel/InstructionSelect.cpp =================================================================== --- llvm/lib/CodeGen/GlobalISel/InstructionSelect.cpp +++ llvm/lib/CodeGen/GlobalISel/InstructionSelect.cpp @@ -71,9 +71,10 @@ void InstructionSelect::getAnalysisUsage(AnalysisUsage &AU) const { AU.addRequired(); + AU.addRequired(); + AU.addPreserved(); + if (OptLevel != CodeGenOpt::None) { - AU.addRequired(); - AU.addPreserved(); AU.addRequired(); LazyBlockFrequencyInfoPass::getLazyBFIAnalysisUsage(AU); } @@ -97,9 +98,8 @@ OptLevel = MF.getFunction().hasOptNone() ? CodeGenOpt::None : MF.getTarget().getOptLevel(); - GISelKnownBits *KB = nullptr; + GISelKnownBits *KB = &getAnalysis().get(MF); if (OptLevel != CodeGenOpt::None) { - KB = &getAnalysis().get(MF); PSI = &getAnalysis().getPSI(); if (PSI && PSI->hasProfileSummary()) BFI = &getAnalysis().getBFI(); Index: llvm/test/CodeGen/AArch64/GlobalISel/gisel-commandline-option.ll =================================================================== --- llvm/test/CodeGen/AArch64/GlobalISel/gisel-commandline-option.ll +++ llvm/test/CodeGen/AArch64/GlobalISel/gisel-commandline-option.ll @@ -71,7 +71,7 @@ ; VERIFY-NEXT: Verify generated machine code ; ENABLED-NEXT: Localizer ; VERIFY-O0-NEXT: Verify generated machine code -; ENABLED-O1-NEXT: Analysis for ComputingKnownBits +; ENABLED-NEXT: Analysis for ComputingKnownBits ; ENABLED-O1-NEXT: Lazy Branch Probability Analysis ; ENABLED-O1-NEXT: Lazy Block Frequency Analysis ; ENABLED-NEXT: InstructionSelect Index: llvm/test/CodeGen/AMDGPU/GlobalISel/crash-stack-address-O0.ll =================================================================== --- /dev/null +++ llvm/test/CodeGen/AMDGPU/GlobalISel/crash-stack-address-O0.ll @@ -0,0 +1,25 @@ +; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py +; RUN: llc -global-isel -O0 -mtriple=amdgcn-amd-amdhsa -mcpu=fiji -o - %s | FileCheck %s + +; Make sure there's no crash at -O0 when matching MUBUF addressing +; modes for the stack. + +define amdgpu_kernel void @stack_write_fi() { +; CHECK-LABEL: stack_write_fi: +; CHECK: ; %bb.0: ; %entry +; CHECK-NEXT: s_add_u32 s0, s0, s7 +; CHECK-NEXT: s_addc_u32 s1, s1, 0 +; CHECK-NEXT: s_mov_b32 s5, 0 +; CHECK-NEXT: s_mov_b32 s4, 0 +; CHECK-NEXT: v_mov_b32_e32 v0, s5 +; CHECK-NEXT: buffer_store_dword v0, off, s[0:3], 0 offset:4 +; CHECK-NEXT: s_waitcnt vmcnt(0) +; CHECK-NEXT: v_mov_b32_e32 v0, s4 +; CHECK-NEXT: buffer_store_dword v0, off, s[0:3], 0 offset:8 +; CHECK-NEXT: s_waitcnt vmcnt(0) +; CHECK-NEXT: s_endpgm +entry: + %alloca = alloca i64, align 4, addrspace(5) + store volatile i64 0, i64 addrspace(5)* %alloca, align 4 + ret void +} Index: llvm/test/CodeGen/AMDGPU/GlobalISel/inst-select-load-private.mir =================================================================== --- llvm/test/CodeGen/AMDGPU/GlobalISel/inst-select-load-private.mir +++ llvm/test/CodeGen/AMDGPU/GlobalISel/inst-select-load-private.mir @@ -1,5 +1,6 @@ # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py # RUN: llc -march=amdgcn -mcpu=tahiti -run-pass=instruction-select -verify-machineinstrs -global-isel-abort=0 -o - %s | FileCheck -check-prefix=GFX6 %s +# RUN: llc -O0 -march=amdgcn -mcpu=tahiti -run-pass=instruction-select -verify-machineinstrs -global-isel-abort=0 -o - %s | FileCheck -check-prefix=GFX6 %s # RUN: llc -march=amdgcn -mcpu=gfx900 -run-pass=instruction-select -verify-machineinstrs -global-isel-abort=0 -o - %s | FileCheck -check-prefix=GFX9 %s # RUN: llc -march=amdgcn -mcpu=gfx1010 -run-pass=instruction-select -verify-machineinstrs -global-isel-abort=0 -o - %s | FileCheck -check-prefix=GFX9 %s Index: llvm/test/CodeGen/AMDGPU/GlobalISel/inst-select-store-private.mir =================================================================== --- llvm/test/CodeGen/AMDGPU/GlobalISel/inst-select-store-private.mir +++ llvm/test/CodeGen/AMDGPU/GlobalISel/inst-select-store-private.mir @@ -1,5 +1,6 @@ # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py # RUN: llc -march=amdgcn -mcpu=tahiti -run-pass=instruction-select -verify-machineinstrs -global-isel-abort=0 -o - %s | FileCheck -check-prefix=GFX6 %s +# RUN: llc -O0 -march=amdgcn -mcpu=tahiti -run-pass=instruction-select -verify-machineinstrs -global-isel-abort=0 -o - %s | FileCheck -check-prefix=GFX6 %s # RUN: llc -march=amdgcn -mcpu=gfx900 -run-pass=instruction-select -verify-machineinstrs -global-isel-abort=0 -o - %s | FileCheck -check-prefix=GFX9 %s # XUN: llc -march=amdgcn -mcpu=gfx1010 -run-pass=instruction-select -verify-machineinstrs -global-isel-abort=0 -o - %s | FileCheck -check-prefix=GFX9 %s