[PATCH] D33408: MachineCSE: Respect interblock physreg liveness
Mikael Holmén via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Wed May 24 02:35:32 PDT 2017
This revision was automatically updated to reflect the committed changes.
Closed by commit rL303731: MachineCSE: Respect interblock physreg liveness (authored by uabelho).
Changed prior to commit:
https://reviews.llvm.org/D33408?vs=99746&id=100057#toc
Repository:
rL LLVM
https://reviews.llvm.org/D33408
Files:
llvm/trunk/lib/CodeGen/MachineCSE.cpp
llvm/trunk/test/CodeGen/MIR/Generic/machine-cse-physreg.mir
Index: llvm/trunk/test/CodeGen/MIR/Generic/machine-cse-physreg.mir
===================================================================
--- llvm/trunk/test/CodeGen/MIR/Generic/machine-cse-physreg.mir
+++ llvm/trunk/test/CodeGen/MIR/Generic/machine-cse-physreg.mir
@@ -0,0 +1,35 @@
+# RUN: llc -mtriple thumbv5e -run-pass=machine-cse -o - %s | FileCheck %s
+
+# This is a contrived example made to expose a bug in
+# MachineCSE, see PR32538.
+
+# MachineCSE must not remove this def of %cpsr:
+# CHECK-LABEL: bb.1:
+# CHECK: , %cpsr = tLSLri
+
+...
+---
+name: spam
+registers:
+ - { id: 0, class: tgpr }
+ - { id: 1, class: tgpr }
+ - { id: 2, class: tgpr }
+ - { id: 3, class: tgpr }
+liveins:
+ - { reg: '%r0', virtual-reg: '%0' }
+body: |
+ bb.0:
+ liveins: %r0
+ %0 = COPY %r0
+ %1, %cpsr = tLSLri %0, 2, 14, _
+ tCMPi8 %0, 5, 14, _, implicit-def %cpsr
+ tBcc %bb.8, 8, %cpsr
+
+ bb.1:
+ %2, %cpsr = tLSLri %0, 2, 14, _
+
+ bb.8:
+ liveins: %cpsr
+ %3 = COPY %cpsr
+ tSTRi killed %3, %0, 0, 14, _
+...
Index: llvm/trunk/lib/CodeGen/MachineCSE.cpp
===================================================================
--- llvm/trunk/lib/CodeGen/MachineCSE.cpp
+++ llvm/trunk/lib/CodeGen/MachineCSE.cpp
@@ -180,8 +180,8 @@
I = skipDebugInstructionsForward(I, E);
if (I == E)
- // Reached end of block, register is obviously dead.
- return true;
+ // Reached end of block, we don't know if register is dead or not.
+ return false;
bool SeenDef = false;
for (const MachineOperand &MO : I->operands()) {
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D33408.100057.patch
Type: text/x-patch
Size: 1602 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20170524/9fe61a7f/attachment.bin>
More information about the llvm-commits
mailing list