[llvm-bugs] [Bug 44434] New: check_cfc: dash g generate different code with SelectionDAGISel
via llvm-bugs
llvm-bugs at lists.llvm.org
Wed Jan 1 20:28:09 PST 2020
https://bugs.llvm.org/show_bug.cgi?id=44434
Bug ID: 44434
Summary: check_cfc: dash g generate different code with
SelectionDAGISel
Product: libraries
Version: trunk
Hardware: PC
OS: Linux
Status: NEW
Severity: enhancement
Priority: P
Component: Common Code Generator Code
Assignee: unassignedbugs at nondot.org
Reporter: yechunliangcn at 163.com
CC: llvm-bugs at lists.llvm.org
Based on the Bug 44422 - check_cfc: dash g generate different code with
machine-cp. There is another issue that the "isel" pass make different output
in the middle of the optimization, but the issue could not reproduce at the
end, would this be ignored? or is an potential issue.
More analysis about this issue:
[Reproduce]
clang++
$HOME/test-suite/MultiSource/Benchmarks/Bullet/btConvexConvexAlgorithm.cpp -w
-c -mllvm -opt-bisect-limit=669 -O2 -I
$HOME/test-suite/MultiSource/Benchmarks/Bullet/include -o out1.o 2>log1
clang++ -g
$HOME/test-suite/MultiSource/Benchmarks/Bullet/btConvexConvexAlgorithm.cpp -w
-c -mllvm -opt-bisect-limit=699 -O2 -I
$HOME/test-suite/MultiSource/Benchmarks/Bullet/include -o out2.o 2>log2
objdump -d -j .text out1.o > out1.obj
objdump -d -j .text out2.o > out2.obj
colordiff out1.obj out2.obj
[The case related with DAG Instruction Selection]
----------------------------------------------------------
#Before X86 DAG->DAG Instruction Selection:
%60 = load float, float* %12, align 4, !dbg !2196, !tbaa !2011
call void @llvm.dbg.value(metadata float %60, metadata !2144, metadata
!DIExpression()), !dbg !2165
%61 = fsub float %59, %60
# After X86 DAG->DAG Instruction Selection:
%29:fr32 = MOVSSrm_alt %stack.0, 1, $noreg, 0, $noreg, debug-location
DBG_VALUE %29:fr32, $noreg, !"capsuleRadiusB", !DIExpression()
%28:fr32 = SUBSSrr killed %31:fr32(tied-def 0), killed %29:fr32, implicit
$mxcsr
# Expectation:
%28:fr32 = SUBSSrm killed %30:fr32(tied-def 0), %stack.0, 1, $noreg, 0,
$noreg, implicit $mxcsr :: (load 4 from %ir.12, !tbaa !46)
----------------------------------------------------------
In the file lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp,
and the function SelectAllBasicBlock(),
while try to select the instruction with FastISel,
FastIS>tryToFoldLoad() is not implemented because of the dbg_value which
block "fold the load", break by (!isFoldedOrDeadInstruction()).
--
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/20200102/98c97b95/attachment-0001.html>
More information about the llvm-bugs
mailing list