]> granicus.if.org Git - llvm/commitdiff
GlobalISel: set correct regclass for LOAD_STACK_GUARD.
authorTim Northover <tnorthover@apple.com>
Fri, 27 Jan 2017 21:31:24 +0000 (21:31 +0000)
committerTim Northover <tnorthover@apple.com>
Fri, 27 Jan 2017 21:31:24 +0000 (21:31 +0000)
Since it's not actually a generic MI, its register operands need a RegClass,
which is conveniently the target's pointer RegClass.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293335 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/GlobalISel/IRTranslator.cpp
test/CodeGen/AArch64/GlobalISel/arm64-irtranslator-stackprotect.ll

index ce3e682f14e4ff814bf23e370980def22088ceb4..9382de77f88bd85eb8a4c2b0d38e9316ada093c1 100644 (file)
@@ -477,6 +477,8 @@ bool IRTranslator::translateMemcpy(const CallInst &CI,
 
 void IRTranslator::getStackGuard(unsigned DstReg,
                                  MachineIRBuilder &MIRBuilder) {
+  const TargetRegisterInfo *TRI = MF->getSubtarget().getRegisterInfo();
+  MRI->setRegClass(DstReg, TRI->getPointerRegClass(*MF));
   auto MIB = MIRBuilder.buildInstr(TargetOpcode::LOAD_STACK_GUARD);
   MIB.addDef(DstReg);
 
index 579ef777223c3d2e52b784978ed9fe1eff44a269..0063086411843edad4492cfca2b99d0a7c6be635 100644 (file)
@@ -1,4 +1,4 @@
-; RUN: llc -mtriple=aarch64-apple-ios %s -stop-after=irtranslator -o - -global-isel | FileCheck %s
+; RUN: llc -verify-machineinstrs -mtriple=aarch64-apple-ios %s -stop-after=irtranslator -o - -global-isel | FileCheck %s
 
 
 ; CHECK: name: test_stack_guard