[PATCH] D40701: [ARM][DAG] Reenable post-legalize store merge

Evgeny Astigeevich via llvm-commits llvm-commits at lists.llvm.org
Sun Dec 3 11:13:06 PST 2017


Hi Nirav,

Some good news.
I ran AArch64 NEON Emperor tests on r319547 (D40701). They all passed. So there are only the crash and Eli’s comment to deal with.

Thanks,
Evgeny



From: Evgeny Astigeevich <Evgeny.Astigeevich at arm.com>
Date: Friday, 1 December 2017 at 23:55
To: Nirav Davé <niravd at google.com>
Cc: "reviews+D40701+public+80177a37c4360e77 at reviews.llvm.org" <reviews+D40701+public+80177a37c4360e77 at reviews.llvm.org>, "Friedman, Eli" <efriedma at codeaurora.org>, "aemerson at apple.com" <aemerson at apple.com>, Javed Absar <Javed.Absar at arm.com>, Kristof Beyls <Kristof.Beyls at arm.com>, "hiraditya at msn.com" <hiraditya at msn.com>, llvm-commits <llvm-commits at lists.llvm.org>, nd <nd at arm.com>
Subject: Re: [PATCH] D40701: [ARM][DAG] Reenable post-legalize store merge

Hi Nirav,

I am sending you a test reduced from spec2k6 which crashes llc. The crash does not happen on r319031. It happens on r319036 (D33675) and on r319547 (D40701).

$  llc -O3 -filetype=asm test_crash.ll

llc: ../lib/CodeGen/SelectionDAG/LegalizeDAG.cpp:992: void (anonymous namespace)::SelectionDAGLegalize::LegalizeOp(llvm::SDNode *): Assertion `(TLI.getTypeAction(*DAG.getContext(), Op.getValueType()) == TargetLowering::TypeLegal || TLI.isTypeLegal(Op.getValueType()) || Op.getOpcode() == ISD::TargetConstant || Op.getOpcode() == ISD::Register) && "Unexpected illegal type!"' failed.
#0 0x0000000004ba9979 llvm::sys::PrintStackTrace(llvm::raw_ostream&) /work/repos/llvm01/build.d/../lib/Support/Unix/Signals.inc:398:11
#1 0x0000000004ba9b29 PrintStackTraceSignalHandler(void*) /work/repos/llvm01/build.d/../lib/Support/Unix/Signals.inc:462:1
#2 0x0000000004ba80d3 llvm::sys::RunSignalHandlers() /work/repos/llvm01/build.d/../lib/Support/Signals.cpp:0:5
#3 0x0000000004ba9e84 SignalHandler(int) /work/repos/llvm01/build.d/../lib/Support/Unix/Signals.inc:252:1
#4 0x00007f69bb817330 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x10330)
#5 0x00007f69ba3f7c37 gsignal (/lib/x86_64-linux-gnu/libc.so.6+0x36c37)
#6 0x00007f69ba3fb028 abort (/lib/x86_64-linux-gnu/libc.so.6+0x3a028)
#7 0x00007f69ba3f0bf6 (/lib/x86_64-linux-gnu/libc.so.6+0x2fbf6)
#8 0x00007f69ba3f0ca2 (/lib/x86_64-linux-gnu/libc.so.6+0x2fca2)
#9 0x0000000004889029 (anonymous namespace)::SelectionDAGLegalize::LegalizeOp(llvm::SDNode*) /work/repos/llvm01/build.d/../lib/CodeGen/SelectionDAG/LegalizeDAG.cpp:986:3
#10 0x0000000004888b98 llvm::SelectionDAG::Legalize() /work/repos/llvm01/build.d/../lib/CodeGen/SelectionDAG/LegalizeDAG.cpp:4672:13
#11 0x00000000049c12ff llvm::SelectionDAGISel::CodeGenAndEmitDAG() /work/repos/llvm01/build.d/../lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:821:13
#12 0x00000000049bfba0 llvm::SelectionDAGISel::SelectBasicBlock(llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::Instruction, true, false, void>, false, true>, llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::Instruction, true, false, void>, false, true>, bool&) /work/repos/llvm01/build.d/../lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:665:1
#13 0x00000000049bf8a1 llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&) /work/repos/llvm01/build.d/../lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:0:7
#14 0x00000000049bcc09 llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&) /work/repos/llvm01/build.d/../lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:467:22
#15 0x0000000002609568 (anonymous namespace)::AArch64DAGToDAGISel::runOnMachineFunction(llvm::MachineFunction&) /work/repos/llvm01/build.d/../lib/Target/AArch64/AArch64ISelDAGToDAG.cpp:58:5
#16 0x0000000003dc41d1 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) /work/repos/llvm01/build.d/../lib/CodeGen/MachineFunctionPass.cpp:62:8
#17 0x000000000425faaf llvm::FPPassManager::runOnFunction(llvm::Function&) /work/repos/llvm01/build.d/../lib/IR/LegacyPassManager.cpp:1514:27
#18 0x000000000425fdc5 llvm::FPPassManager::runOnModule(llvm::Module&) /work/repos/llvm01/build.d/../lib/IR/LegacyPassManager.cpp:1535:16
#19 0x000000000426055a (anonymous namespace)::MPPassManager::runOnModule(llvm::Module&) /work/repos/llvm01/build.d/../lib/IR/LegacyPassManager.cpp:1591:27
#20 0x0000000004260086 llvm::legacy::PassManagerImpl::run(llvm::Module&) /work/repos/llvm01/build.d/../lib/IR/LegacyPassManager.cpp:1694:16
#21 0x0000000004260a71 llvm::legacy::PassManager::run(llvm::Module&) /work/repos/llvm01/build.d/../lib/IR/LegacyPassManager.cpp:1725:3
#22 0x000000000246622d compileModule(char**, llvm::LLVMContext&) /work/repos/llvm01/build.d/../tools/llc/llc.cpp:572:41
#23 0x000000000246488a main /work/repos/llvm01/build.d/../tools/llc/llc.cpp:346:13
#24 0x00007f69ba3e2f45 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x21f45)
#25 0x0000000002464029 _start (/work/repos/llvm01/build.d/bin/llc+0x2464029)

Thanks,
Evgeny

From: Nirav Davé <niravd at google.com>
Date: Friday, 1 December 2017 at 21:49
To: Evgeny Astigeevich <Evgeny.Astigeevich at arm.com>
Cc: "reviews+D40701+public+80177a37c4360e77 at reviews.llvm.org" <reviews+D40701+public+80177a37c4360e77 at reviews.llvm.org>, "Friedman, Eli" <efriedma at codeaurora.org>, "aemerson at apple.com" <aemerson at apple.com>, Javed Absar <Javed.Absar at arm.com>, Kristof Beyls <Kristof.Beyls at arm.com>, "hiraditya at msn.com" <hiraditya at msn.com>, llvm-commits <llvm-commits at lists.llvm.org>, nd <nd at arm.com>
Subject: Re: [PATCH] D40701: [ARM][DAG] Reenable post-legalize store merge

So to be clear: There are pending were pending issues in AArch64 as of r319036?

On Fri, Dec 1, 2017 at 4:45 PM, Evgeny Astigeevich <Evgeny.Astigeevich at arm.com<mailto:Evgeny.Astigeevich at arm.com>> wrote:
Hi Nirav,

I’ve just finished analysis of failures which had happened before this commit. Bisecting them I got r319036.

Thanks,
Evgeny

From: Nirav Davé <niravd at google.com<mailto:niravd at google.com>>
Date: Friday, 1 December 2017 at 21:41
To: "reviews+D40701+public+80177a37c4360e77 at reviews.llvm.org<mailto:reviews%2BD40701%2Bpublic%2B80177a37c4360e77 at reviews.llvm.org>" <reviews+D40701+public+80177a37c4360e77 at reviews.llvm.org<mailto:reviews%2BD40701%2Bpublic%2B80177a37c4360e77 at reviews.llvm.org>>
Cc: Evgeny Astigeevich <Evgeny.Astigeevich at arm.com<mailto:Evgeny.Astigeevich at arm.com>>, "Friedman, Eli" <efriedma at codeaurora.org<mailto:efriedma at codeaurora.org>>, "aemerson at apple.com<mailto:aemerson at apple.com>" <aemerson at apple.com<mailto:aemerson at apple.com>>, Javed Absar <Javed.Absar at arm.com<mailto:Javed.Absar at arm.com>>, Kristof Beyls <Kristof.Beyls at arm.com<mailto:Kristof.Beyls at arm.com>>, "hiraditya at msn.com<mailto:hiraditya at msn.com>" <hiraditya at msn.com<mailto:hiraditya at msn.com>>, llvm-commits <llvm-commits at lists.llvm.org<mailto:llvm-commits at lists.llvm.org>>
Subject: Re: [PATCH] D40701: [ARM][DAG] Reenable post-legalize store merge

... and AArch64 was working correctly before this.

On Fri, Dec 1, 2017 at 4:40 PM, Nirav Davé <niravd at google.com<mailto:niravd at google.com>> wrote:
Let me back out the last commit. Presumably the constant store merge fix I made was wrong.

On Fri, Dec 1, 2017 at 4:33 PM, Evgeny Astigeevich via Phabricator <reviews at reviews.llvm.org<mailto:reviews at reviews.llvm.org>> wrote:
eastig added a comment.

Nirav,

There are stability and correctness issues on AArch64. The similar issues might exist on other ARM targets. Could you please disable MergeConsecutiveStores for all ARM targets including AArch64?

Thanks,
Evgeny


Repository:
  rL LLVM

https://reviews.llvm.org/D40701





-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20171203/3bb5068f/attachment.html>


More information about the llvm-commits mailing list