[llvm-bugs] [Bug 27657] New: [IfConverter/BranchFolding] An empty, non-reachable MBB is not removed.
via llvm-bugs
llvm-bugs at lists.llvm.org
Thu May 5 08:10:54 PDT 2016
https://llvm.org/bugs/show_bug.cgi?id=27657
Bug ID: 27657
Summary: [IfConverter/BranchFolding] An empty, non-reachable
MBB is not removed.
Product: libraries
Version: trunk
Hardware: PC
OS: Linux
Status: NEW
Severity: normal
Priority: P
Component: Common Code Generator Code
Assignee: unassignedbugs at nondot.org
Reporter: paulsson at linux.vnet.ibm.com
CC: dexonsmith at apple.com, llvm-bugs at lists.llvm.org
Classification: Unclassified
Created attachment 16312
--> https://llvm.org/bugs/attachment.cgi?id=16312&action=edit
llc input
The IfConverter should remove a block and its successor/predecessor edges from
MF because it is not reachable. BranchFolding fails to assist with this.
Interesting is to note that the probability of the edge to that block is 0,
which is another observation which means it could be removed.
Not having empty blocks is good generally for algorithms (I am experimenting
currently with something like global scheduler states to propagate processor
resources usage between regions.)
BB#0: derived from LLVM BB %entry
Live Ins: %R2D
CGHI %R2D, 0, %CC<imp-def>
BRC 14, 6, <BB#2>, %CC<imp-use>
Successors according to CFG: BB#1(0x30000000 / 0x80000000 = 37.50%)
BB#2(0x50000000 / 0x80000000 = 62.50%)
BB#1: derived from LLVM BB %return
Predecessors according to CFG: BB#0
%R2D<def> = LGHI 0
Return %R2D<imp-use>
BB#2: derived from LLVM BB %if.end
Live Ins: %R2D
Predecessors according to CFG: BB#0
CallJG <ga:@Perl_newSVsv>
=>
BB#0: derived from LLVM BB %entry
Live Ins: %R2D
CGHI %R2D, 0, %CC<imp-def>
CallBRCL 14, 6, <ga:@Perl_newSVsv>
Successors according to CFG: BB#1(0x80000000 / 0x80000000 = 100.00%)
BB#2(0x00000000 / 0x80000000 = 0.00%)
BB#1: derived from LLVM BB %return
Predecessors according to CFG: BB#0
%R2D<def> = LGHI 0
Return %R2D<imp-use>
BB#2: derived from LLVM BB %if.end
Live Ins: %R2D
Predecessors according to CFG: BB#0
./bin/llc ./minperlio.ll -mtriple=s390x-linux-gnu -mcpu=z13
Could this be done in BranchFolder.cpp? I am not sure if there could be cases
lika a call to an empty block without successors to replace it..?
--
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20160505/ae3cba9b/attachment.html>
More information about the llvm-bugs
mailing list