summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVlad Tsyrklevich <vlad@tsyrklevich.net>2018-04-10 01:31:01 +0000
committerVlad Tsyrklevich <vlad@tsyrklevich.net>2018-04-10 01:31:01 +0000
commit0cdc6ec5357e9295dcd7bb0ce2a5e1fc5973626f (patch)
tree53222676cb89cf835e174b2fcb439a162713cf59
parent4485ae0890d8ce9c3cd0a050178d2479f8a7599a (diff)
downloadbcm5719-llvm-0cdc6ec5357e9295dcd7bb0ce2a5e1fc5973626f.tar.gz
bcm5719-llvm-0cdc6ec5357e9295dcd7bb0ce2a5e1fc5973626f.zip
ShadowCallStack/x86_64: Ignore pseudo-machine instructions
llvm-svn: 329656
-rw-r--r--llvm/lib/Target/X86/ShadowCallStack.cpp3
-rw-r--r--llvm/test/CodeGen/X86/shadow-call-stack.mir8
2 files changed, 10 insertions, 1 deletions
diff --git a/llvm/lib/Target/X86/ShadowCallStack.cpp b/llvm/lib/Target/X86/ShadowCallStack.cpp
index ba02644273b..9a39455f9dd 100644
--- a/llvm/lib/Target/X86/ShadowCallStack.cpp
+++ b/llvm/lib/Target/X86/ShadowCallStack.cpp
@@ -242,7 +242,8 @@ bool ShadowCallStack::runOnMachineFunction(MachineFunction &Fn) {
for (auto &LiveIn : MBB.liveins())
UsedRegs.set(LiveIn.PhysReg);
for (auto &MI : MBB) {
- InstructionCount++;
+ if (!MI.isDebugValue() && !MI.isCFIInstruction() && !MI.isLabel())
+ InstructionCount++;
for (auto &Op : MI.operands())
if (Op.isReg() && Op.isDef())
UsedRegs.set(Op.getReg());
diff --git a/llvm/test/CodeGen/X86/shadow-call-stack.mir b/llvm/test/CodeGen/X86/shadow-call-stack.mir
index 485b970540f..f10fabf587d 100644
--- a/llvm/test/CodeGen/X86/shadow-call-stack.mir
+++ b/llvm/test/CodeGen/X86/shadow-call-stack.mir
@@ -106,6 +106,14 @@ frameInfo:
body: |
; CHECK: bb.0:
bb.0:
+ ; Ensure these are not counted as machine instructions
+ CFI_INSTRUCTION 0
+ CFI_INSTRUCTION 0
+ CFI_INSTRUCTION 0
+ DBG_VALUE 0
+ DBG_VALUE 0
+ DBG_VALUE 0
+
; CHECK: $eax = MOV32ri 13
$eax = MOV32ri 13
OpenPOWER on IntegriCloud