From d8b85584f23b78788d4bf8cabe84224baa7029e6 Mon Sep 17 00:00:00 2001 From: Tim Northover Date: Fri, 27 Jan 2017 21:31:24 +0000 Subject: [PATCH] GlobalISel: set correct regclass for LOAD_STACK_GUARD. Since it's not actually a generic MI, its register operands need a RegClass, which is conveniently the target's pointer RegClass. llvm-svn: 293335 --- llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp | 2 ++ .../AArch64/GlobalISel/arm64-irtranslator-stackprotect.ll | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp b/llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp index ce3e682f14e4..9382de77f88b 100644 --- a/llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp +++ b/llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp @@ -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); diff --git a/llvm/test/CodeGen/AArch64/GlobalISel/arm64-irtranslator-stackprotect.ll b/llvm/test/CodeGen/AArch64/GlobalISel/arm64-irtranslator-stackprotect.ll index 579ef777223c..006308641184 100644 --- a/llvm/test/CodeGen/AArch64/GlobalISel/arm64-irtranslator-stackprotect.ll +++ b/llvm/test/CodeGen/AArch64/GlobalISel/arm64-irtranslator-stackprotect.ll @@ -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