diff --git a/llvm/lib/Target/AMDGPU/SIISelLowering.cpp b/llvm/lib/Target/AMDGPU/SIISelLowering.cpp index 3281eabcd4adb..b9023b6d7a3a6 100644 --- a/llvm/lib/Target/AMDGPU/SIISelLowering.cpp +++ b/llvm/lib/Target/AMDGPU/SIISelLowering.cpp @@ -4481,6 +4481,8 @@ SDValue SITargetLowering::lowerSET_FPENV(SDValue Op, SelectionDAG &DAG) const { Register SITargetLowering::getRegisterByName(const char *RegName, LLT VT, const MachineFunction &MF) const { + const Function &Fn = MF.getFunction(); + Register Reg = StringSwitch(RegName) .Case("m0", AMDGPU::M0) .Case("exec", AMDGPU::EXEC) @@ -4498,8 +4500,8 @@ Register SITargetLowering::getRegisterByName(const char *RegName, LLT VT, if (!Subtarget->hasFlatScrRegister() && Subtarget->getRegisterInfo()->regsOverlap(Reg, AMDGPU::FLAT_SCR)) { - report_fatal_error(Twine("invalid register \"" + StringRef(RegName) + - "\" for subtarget.")); + Fn.getContext().emitError(Twine("invalid register \"" + StringRef(RegName) + + "\" for subtarget.")); } switch (Reg) { diff --git a/llvm/test/CodeGen/AMDGPU/read-register-invalid-subtarget.ll b/llvm/test/CodeGen/AMDGPU/read-register-invalid-subtarget.ll index 0e9ea0c341cd3..a91bba41bed4f 100644 --- a/llvm/test/CodeGen/AMDGPU/read-register-invalid-subtarget.ll +++ b/llvm/test/CodeGen/AMDGPU/read-register-invalid-subtarget.ll @@ -1,6 +1,6 @@ -; RUN: not --crash llc -mtriple=amdgcn -mcpu=tahiti -verify-machineinstrs < %s 2>&1 | FileCheck %s +; RUN: not llc -mtriple=amdgcn -mcpu=tahiti -verify-machineinstrs < %s 2>&1 | FileCheck %s -; CHECK: invalid register "flat_scratch_lo" for subtarget. +; CHECK: error: invalid register "flat_scratch_lo" for subtarget. declare i32 @llvm.read_register.i32(metadata) #0