Quuxplusone / LLVMBugzillaTest

0 stars 0 forks source link

LLVM PowerPC backend assert - exposed by swift bootstrap #40147

Closed Quuxplusone closed 5 years ago

Quuxplusone commented 5 years ago
Bugzilla Link PR41177
Status RESOLVED FIXED
Importance P release blocker
Reported by Sarvesh Tamba (sarvesh.tamba@ibm.com)
Reported on 2019-03-21 03:53:43 -0700
Last modified on 2019-04-18 00:59:39 -0700
Version trunk
Hardware Other Linux
CC dblaikie@gmail.com, ditaliano@apple.com, hfinkel@anl.gov, llvm-bugs@lists.llvm.org, nemanja.i.ibm@gmail.com, powerllvm@ca.ibm.com, sarvesh.tamba@ibm.com, shkzhang@cn.ibm.com
Fixed by commit(s)
Attachments Installing_swiftpm_error.txt (444833 bytes, text/plain)
simplify.ll (5893 bytes, text/x-matlab)
Blocks
Blocked by
See also
Facing the following error at step "--- Installing swiftpm ---" while building
Apple Swift 5 toolchain on PowerPC64LE using the master branch(detailed log
attached):-

--- Installing swiftpm ---
+ /home/sar/swift-source/swiftpm/Utilities/bootstrap --release --
swiftc=/home/sar/swift-source/build/buildbot_linux/swift-linux-
powerpc64le/bin/swiftc --sbt=/home/sar/swift-
source/build/buildbot_linux/llbuild-linux-powerpc64le/bin/swift-build-tool --
build=/home/sar/swift-source/build/buildbot_linux/swiftpm-linux-powerpc64le --
link-llbuild --llbuild-source-dir=/home/sar/swift-source/llbuild --llbuild-
build-dir=/home/sar/swift-source/build/buildbot_linux/llbuild-linux-powerpc64le
--foundation=/home/sar/swift-source/build/buildbot_linux/foundation-linux-
powerpc64le --libdispatch-source-dir=/home/sar/swift-source/swift-corelibs-
libdispatch --libdispatch-build-dir=/home/sar/swift-
source/build/buildbot_linux/libdispatch-linux-powerpc64le --
xctest=/home/sar/swift-source/build/buildbot_linux/xctest-linux-powerpc64le --
prefix=/home/sar/swift-source/swift-nightly-install//usr/ install
.
.
.
.
/home/sar/swift-source/swift-nightly-install/usr/bin/swiftc -module-name
PackageLoading -incremental -emit-dependencies -emit-module -emit-module-path
/home/sar/swift-source/build/buildbot_linux/sourcekitlsp-linux-
powerpc64le/powerpc64le-unknown-linux/release/PackageLoading.swiftmodule -
output-file-map /home/sar/swift-source/build/buildbot_linux/sourcekitlsp-linux-
powerpc64le/powerpc64le-unknown-linux/release/PackageLoading.build/output-file-
map.json -parse-as-library -whole-module-optimization -num-threads 8 -c
/home/sar/swift-source/build/buildbot_linux/sourcekitlsp-linux-
powerpc64le/checkouts/swift-package-
manager/Sources/PackageLoading/Diagnostics.swift /home/sar/swift-
source/build/buildbot_linux/sourcekitlsp-linux-powerpc64le/checkouts/swift-
package-manager/Sources/PackageLoading/ManifestBuilder.swift /home/sar/swift-
source/build/buildbot_linux/sourcekitlsp-linux-powerpc64le/checkouts/swift-
package-manager/Sources/PackageLoading/ManifestLoader.swift /home/sar/swift-
source/build/buildbot_linux/sourcekitlsp-linux-powerpc64le/checkouts/swift-
package-manager/Sources/PackageLoading/ModuleMapGenerator.swift /home/sar/swift-
source/build/buildbot_linux/sourcekitlsp-linux-powerpc64le/checkouts/swift-
package-manager/Sources/PackageLoading/PackageBuilder.swift /home/sar/swift-
source/build/buildbot_linux/sourcekitlsp-linux-powerpc64le/checkouts/swift-
package-manager/Sources/PackageLoading/PackageDescription4Loader.swift
/home/sar/swift-source/build/buildbot_linux/sourcekitlsp-linux-
powerpc64le/checkouts/swift-package-
manager/Sources/PackageLoading/Target+PkgConfig.swift /home/sar/swift-
source/build/buildbot_linux/sourcekitlsp-linux-powerpc64le/checkouts/swift-
package-manager/Sources/PackageLoading/ToolsVersionLoader.swift -I
/home/sar/swift-source/build/buildbot_linux/sourcekitlsp-linux-
powerpc64le/powerpc64le-unknown-linux/release -target powerpc64le-unknown-linux
-swift-version 4.2 -sdk / -O -j8 -DSWIFT_PACKAGE -Xcc -fmodule-map-
file=/home/sar/swift-source/build/buildbot_linux/sourcekitlsp-linux-
powerpc64le/checkouts/swift-
llbuild/products/libllbuild/include/module.modulemap -I /home/sar/swift-
source/build/buildbot_linux/sourcekitlsp-linux-powerpc64le/checkouts/swift-
llbuild/products/libllbuild/include -Xcc -fmodule-map-file=/home/sar/swift-
source/build/buildbot_linux/sourcekitlsp-linux-powerpc64le/powerpc64le-unknown-
linux/release/llbuildBuildSystem.build/module.modulemap -I /home/sar/swift-
source/build/buildbot_linux/sourcekitlsp-linux-powerpc64le/checkouts/swift-
llbuild/lib/BuildSystem/include -Xcc -fmodule-map-file=/home/sar/swift-
source/build/buildbot_linux/sourcekitlsp-linux-powerpc64le/powerpc64le-unknown-
linux/release/llbuildCore.build/module.modulemap -I /home/sar/swift-
source/build/buildbot_linux/sourcekitlsp-linux-powerpc64le/checkouts/swift-
llbuild/lib/Core/include -Xcc -fmodule-map-file=/home/sar/swift-
source/build/buildbot_linux/sourcekitlsp-linux-powerpc64le/powerpc64le-unknown-
linux/release/llbuildBasic.build/module.modulemap -I /home/sar/swift-
source/build/buildbot_linux/sourcekitlsp-linux-powerpc64le/checkouts/swift-
llbuild/lib/Basic/include -Xcc -fmodule-map-file=/home/sar/swift-
source/build/buildbot_linux/sourcekitlsp-linux-powerpc64le/powerpc64le-unknown-
linux/release/llvmSupport.build/module.modulemap -I /home/sar/swift-
source/build/buildbot_linux/sourcekitlsp-linux-powerpc64le/checkouts/swift-
llbuild/lib/llvm/Support/include -Xcc -fmodule-map-file=/home/sar/swift-
source/build/buildbot_linux/sourcekitlsp-linux-powerpc64le/powerpc64le-unknown-
linux/release/llvmDemangle.build/module.modulemap -I /home/sar/swift-
source/build/buildbot_linux/sourcekitlsp-linux-powerpc64le/checkouts/swift-
llbuild/lib/llvm/Demangle/include -Xcc -fmodule-map-file=/home/sar/swift-
source/build/buildbot_linux/sourcekitlsp-linux-powerpc64le/checkouts/swift-
package-manager/Sources/clibc/include/module.modulemap -I /home/sar/swift-
source/build/buildbot_linux/sourcekitlsp-linux-powerpc64le/checkouts/swift-
package-manager/Sources/clibc/include -module-cache-path /home/sar/swift-
source/build/buildbot_linux/sourcekitlsp-linux-powerpc64le/powerpc64le-unknown-
linux/release/ModuleCache -enable-testing
swift: /home/sar/swift-
source/llvm/lib/Target/PowerPC/PPCISelLowering.cpp:12111: llvm::SDValue
combineBVOfConsecutiveLoads(llvm::SDNode *, llvm::SelectionDAG &): Assertion
`!(InputsAreConsecutiveLoads && InputsAreReverseConsecutive) && "The loads
cannot be both consecutive and reverse consecutive."' failed.
Stack dump:
0.  Running pass 'Function Pass Manager' on module '/home/sar/swift-
source/build/buildbot_linux/sourcekitlsp-linux-powerpc64le/powerpc64le-unknown-linux/release/LanguageServerProtocol.build/CancelRequest.swift.o'.
1.  Running pass 'PowerPC DAG->DAG Pattern Instruction Selection' on function
'@"$s22LanguageServerProtocol13HoverResponseV8contents5rangeAcA13MarkupContentV_SnyAA8PositionVGSgtcfC"'
 #0 0x00000000152ebd28 PrintStackTraceSignalHandler(void*) (/home/sar/swift-source/swift-nightly-install/usr/bin/swift+0x152ebd28)
 #1 0x00000000152e8fc8 llvm::sys::RunSignalHandlers() (/home/sar/swift-source/swift-nightly-install/usr/bin/swift+0x152e8fc8)
 #2 0x00000000152ec3e8 SignalHandler(int) (/home/sar/swift-source/swift-nightly-install/usr/bin/swift+0x152ec3e8)
 #3 0x00003fff98e204d8  0x4d8 gsignal
 #4 0x00003fff98e204d8
 #5 0x00003fff98e204d8 abort (+0x4d8)
 #6 0x00003fff9879ec90 (/lib/powerpc64le-linux-gnu/libc.so.6+0x3ec90)
 #7 0x00003fff987a11f4 __assert_fail (/lib/powerpc64le-linux-gnu/libc.so.6+0x411f4)
 #8 0x00003fff987941c0 llvm::PPCTargetLowering::DAGCombineBuildVector(llvm::SDNode*, llvm::TargetLowering::DAGCombinerInfo&) const (/lib/powerpc64le-linux-gnu/libc.so.6+0x341c0)
 #9 0x00003fff987942b4 llvm::PPCTargetLowering::PerformDAGCombine(llvm::SDNode*, llvm::TargetLowering::DAGCombinerInfo&) const (/lib/powerpc64le-linux-gnu/libc.so.6+0x342b4)
#10 0x0000000011c77228 (anonymous
namespace)::DAGCombiner::combine(llvm::SDNode*) (/home/sar/swift-source/swift-
nightly-install/usr/bin/swift+0x11c77228)
#11 0x0000000011c78e98 llvm::SelectionDAG::Combine(llvm::CombineLevel,
llvm::AAResults*, llvm::CodeGenOpt::Level) (/home/sar/swift-source/swift-
nightly-install/usr/bin/swift+0x11c78e98)
#12 0x0000000011f758f8 llvm::SelectionDAGISel::CodeGenAndEmitDAG()
(/home/sar/swift-source/swift-nightly-install/usr/bin/swift+0x11f758f8)
#13 0x0000000011f74130
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&) (/home/sar/swift-source/swift-nightly-
install/usr/bin/swift+0x11f74130)
#14 0x00000000120fcffc
llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&)
(/home/sar/swift-source/swift-nightly-install/usr/bin/swift+0x120fcffc)
#15 0x00000000120fc7d8
llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&)
(/home/sar/swift-source/swift-nightly-install/usr/bin/swift+0x120fc7d8)
#16 0x00000000120faf74 (anonymous
namespace)::PPCDAGToDAGISel::runOnMachineFunction(llvm::MachineFunction&)
(/home/sar/swift-source/swift-nightly-install/usr/bin/swift+0x120faf74)
#17 0x00000000120f6c5c
llvm::MachineFunctionPass::runOnFunction(llvm::Function&) (/home/sar/swift-
source/swift-nightly-install/usr/bin/swift+0x120f6c5c)
#18 0x0000000011c0eea4 llvm::FPPassManager::runOnFunction(llvm::Function&)
(/home/sar/swift-source/swift-nightly-install/usr/bin/swift+0x11c0eea4)
#19 0x0000000012b079d4 llvm::FPPassManager::runOnModule(llvm::Module&)
(/home/sar/swift-source/swift-nightly-install/usr/bin/swift+0x12b079d4)
#20 0x00000000150f8180 llvm::legacy::PassManagerImpl::run(llvm::Module&)
(/home/sar/swift-source/swift-nightly-install/usr/bin/swift+0x150f8180)
#21 0x00000000150f85c4 llvm::legacy::PassManager::run(llvm::Module&)
(/home/sar/swift-source/swift-nightly-install/usr/bin/swift+0x150f85c4)
#22 0x00000000150f8ca4 swift::performLLVM(swift::IRGenOptions&,
swift::DiagnosticEngine*, llvm::sys::SmartMutex<false>*, llvm::GlobalVariable*,
llvm::Module*, llvm::TargetMachine*, swift::version::Version const&,
llvm::StringRef, swift::UnifiedStatsReporter*) (/home/sar/swift-source/swift-
nightly-install/usr/bin/swift+0x150f8ca4)
#23 0x00000000150f9544 ThreadEntryPoint(swift::irgen::IRGenerator*,
llvm::sys::SmartMutex<false>*, int) (/home/sar/swift-source/swift-nightly-
install/usr/bin/swift+0x150f9544)
#24 0x000000001026eb5c std::thread::_Impl<std::_Bind_simple<void (*
(swift::irgen::IRGenerator*, llvm::sys::SmartMutex<false>*,
int))(swift::irgen::IRGenerator*, llvm::sys::SmartMutex<false>*, int)>
>::_M_run() (/home/sar/swift-source/swift-nightly-
install/usr/bin/swift+0x1026eb5c)
#25 0x0000000010274890 (/home/sar/swift-source/swift-nightly-
install/usr/bin/swift+0x10274890)
#26 0x00000000102764ac start_thread (/home/sar/swift-source/swift-nightly-
install/usr/bin/swift+0x102764ac)
#27 0x00003fff98a44974 clone (/usr/lib/powerpc64le-linux-
gnu/libstdc++.so.6+0xe4974)
/home/sar/swift-source/swift-nightly-install/usr/bin/swift[0x152ebd28]
/home/sar/swift-source/swift-nightly-install/usr/bin/swift[0x152e8fc8]
/home/sar/swift-source/swift-nightly-install/usr/bin/swift[0x152ec3e8]
[0x3fff98e204d8]
/lib/powerpc64le-linux-gnu/libc.so.6(gsignal+0x40)[0x3fff9879ec90]
/lib/powerpc64le-linux-gnu/libc.so.6(abort+0x2b4)[0x3fff987a11f4]
/lib/powerpc64le-linux-gnu/libc.so.6(+0x341c0)[0x3fff987941c0]
/lib/powerpc64le-linux-gnu/libc.so.6(__assert_fail+0x64)[0x3fff987942b4]
/home/sar/swift-source/swift-nightly-install/usr/bin/swift[0x11c77228]
/home/sar/swift-source/swift-nightly-install/usr/bin/swift[0x11c78e98]
/home/sar/swift-source/swift-nightly-install/usr/bin/swift[0x11f758f8]
/home/sar/swift-source/swift-nightly-install/usr/bin/swift[0x11f74130]
/home/sar/swift-source/swift-nightly-install/usr/bin/swift[0x120fcffc]
/home/sar/swift-source/swift-nightly-install/usr/bin/swift[0x120fc7d8]
/home/sar/swift-source/swift-nightly-install/usr/bin/swift[0x120faf74]
/home/sar/swift-source/swift-nightly-install/usr/bin/swift[0x120f6c5c]
/home/sar/swift-source/swift-nightly-install/usr/bin/swift[0x11c0eea4]
/home/sar/swift-source/swift-nightly-install/usr/bin/swift[0x12b079d4]
/home/sar/swift-source/swift-nightly-install/usr/bin/swift[0x150f8180]
/home/sar/swift-source/swift-nightly-install/usr/bin/swift[0x150f85c4]
/home/sar/swift-source/swift-nightly-install/usr/bin/swift[0x150f8ca4]
/home/sar/swift-source/swift-nightly-install/usr/bin/swift[0x150f9544]
/home/sar/swift-source/swift-nightly-install/usr/bin/swift[0x1026eb5c]
/home/sar/swift-source/swift-nightly-install/usr/bin/swift[0x10274890]
/home/sar/swift-source/swift-nightly-install/usr/bin/swift[0x102764ac]
/usr/lib/powerpc64le-linux-gnu/libstdc++.so.6(+0xe4974)[0x3fff98a44974]
/lib/powerpc64le-linux-gnu/libpthread.so.0(+0x8040)[0x3fff98dd8040]
/lib/powerpc64le-linux-gnu/libc.so.6(clone+0x98)[0x3fff98883bb0]
<unknown>:0: error: unable to execute command: Aborted
<unknown>:0: error: compile command failed due to signal 6 (use -v to see
invocation)
/home/sar/swift-source/swift-nightly-install/usr/bin/swift build --package-path
/home/sar/swift-source/sourcekit-lsp --build-path /home/sar/swift-
source/build/buildbot_linux/sourcekitlsp-linux-powerpc64le --configuration
release --verbose -Xswiftc -enable-testing -Xcxx -I -Xcxx /home/sar/swift-
source/swift-nightly-install/usr/lib/swift
Traceback (most recent call last):
  File "/home/sar/swift-source/sourcekit-lsp/Utilities/build-script-helper.py", line 80, in <module>
    main()
  File "/home/sar/swift-source/sourcekit-lsp/Utilities/build-script-helper.py", line 70, in main
    swiftpm('build', swift_exec, swiftpm_args)
  File "/home/sar/swift-source/sourcekit-lsp/Utilities/build-script-helper.py", line 14, in swiftpm
    subprocess.check_call(cmd, env=env)
  File "/usr/lib/python2.7/subprocess.py", line 541, in check_call
    raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['/home/sar/swift-source/swift-nightly-
install/usr/bin/swift', 'build', '--package-path', '/home/sar/swift-
source/sourcekit-lsp', '--build-path', '/home/sar/swift-
source/build/buildbot_linux/sourcekitlsp-linux-powerpc64le', '--configuration',
'release', '--verbose', '-Xswiftc', '-enable-testing', '-Xcxx', '-I', '-Xcxx',
'/home/sar/swift-source/swift-nightly-install/usr/lib/swift']' returned non-
zero exit status 1
Building the standard library for: swift-stdlib-linux-powerpc64le
Running Swift tests for: check-swift-all-linux-powerpc64le check-swift-all-
optimize-linux-powerpc64le
./utils/build-script: fatal error: command terminated with a non-zero exit
status 1, aborting
./utils/build-script: fatal error: command terminated with a non-zero exit
status 1, aborting
Quuxplusone commented 5 years ago

Attached Installing_swiftpm_error.txt (444833 bytes, text/plain): Issues at step “— Installing swiftpm —” while building Apple Swift 5 toolchain on PowerPC64LE

Quuxplusone commented 5 years ago

This is a swift-related issue, report on their bugtrack.

Quuxplusone commented 5 years ago
Hi Davide,

I have already raised this on swift bugtracker:-
https://bugs.swift.org/browse/SR-10059

I got the response from community members - "Looks like an LLVM bug to me."

Please suggest. Would appreciate a prompt response.
Quuxplusone commented 5 years ago

Can some one please have a look and comment on this? This is blocking building Apple Swift 5 toolchain on PPC64LE.

Quuxplusone commented 5 years ago
Investigated more on this and found that the following assert statement which
throws up this error might be wrongly computed:-
          assert(!(InputsAreConsecutiveLoads && InputsAreReverseConsecutive) &&
                 "The loads cannot be both consecutive and reverse consecutive.");

Both variables 'InputsAreConsecutiveLoads' and 'InputsAreReverseConsecutive'
are computed based on the return value from 'isConsecutiveLS' function.
The 'isConsecutiveLS' function definition mentions in comments that it is "Like
SelectionDAG::isConsecutiveLoad", which "Return true if LD is loading 'Bytes'
bytes from a location that is 'Dist' units away from the location that the
'Base' load is loading from."

Based on this, both variables 'InputsAreConsecutiveLoads' and
'InputsAreReverseConsecutive' which are initialised to 'true', are set to
'false' if the return value of 'isConsecutiveLS' function is false i.e. if the
loads are not consecutive or reverse consecutive respectively.

Further we do "Exit early if the loads are neither consecutive nor reverse
consecutive.":-
    if (!InputsAreConsecutiveLoads && !InputsAreReverseConsecutive)
      return SDValue();

To summarise:-
InputsAreConsecutiveLoads   == true     =>  Loads are consecutive
InputsAreReverseConsecutive == true     =>  Loads are reverse consecutive

InputsAreConsecutiveLoads   == false    =>  Loads are NOT consecutive
InputsAreReverseConsecutive == false    =>  Loads are NOT reverse consecutive

Based on this, the assert statement in question should have been the following:-
          assert((InputsAreConsecutiveLoads && InputsAreReverseConsecutive) &&
                 "The loads cannot be both consecutive and reverse consecutive.");

Please correct if I am missing anything.
Quuxplusone commented 5 years ago

Please ignore the previous comment. Looking at the assert, while trying a few things initially, I think I misread the assert in this case , the assert will hit only if the first condition is false which means both variables 'InputsAreConsecutiveLoads' and 'InputsAreReverseConsecutive' are true. :(

Quuxplusone commented 5 years ago
Attaching the IR output of the failing command at
https://bugs.swift.org/browse/SR-10176.

The failing command mentions this particular function literal in its stack
dump:-

Running pass 'PowerPC DAG->DAG Pattern Instruction Selection' on function
'@"$s22LanguageServerProtocol13HoverResponseV8contents5rangeAcA13MarkupContentV_SnyAA8PositionVGSgtcfC"'
I could find
"s22LanguageServerProtocol13HoverResponseV8contents5rangeAcA13MarkupContentV_SnyAA8PositionVGSgtcfC"
function literal definition in the IR dump, however could not make much out of
it.

Any help or any person you could point out to resolve this?

Please note that currently this is the only/final error we are facing now in
our aim of building Apple Swift 5 toolchain on PPC64LE. Rest all issues have
been resolved.

Just FYI, the toolchain builds to completion (thus confirming of no further
failures) if we comment out the assert function which throws up this error -
i.e. llvm/lib/Target/PowerPC/PPCISelLowering.cpp:12111: llvm::SDValue
combineBVOfConsecutiveLoads(llvm::SDNode *, llvm::SelectionDAG &): Assertion
`!(InputsAreConsecutiveLoads && InputsAreReverseConsecutive) && "The loads
cannot be both consecutive and reverse consecutive."'

Please suggest.
Quuxplusone commented 5 years ago
(In reply to Davide Italiano from comment #2)
> This is a swift-related issue, report on their bugtrack.

This looks like an LLVM backend bug and, thus, should be tracked here.
Quuxplusone commented 5 years ago

Recieved the below response in mail from one of the developers, please confirm.

Hi, Sarvesh, I think there is a bug in below code.

  for (int i = 1, e = N->getNumOperands(); i < e; ++i) {
    // If any inputs are fp_round(extload), they all must be.
    if (IsRoundOfExtLoad && N->getOperand(i).getOpcode() != ISD::FP_ROUND)
      return SDValue();
    SDValue NextInput = IsRoundOfExtLoad ? N->getOperand(i).getOperand(0) :
      N->getOperand(i);
    if (NextInput.getOpcode() != ISD::LOAD)
      return SDValue();
    SDValue PreviousInput =
      IsRoundOfExtLoad ? N->getOperand(i-1).getOperand(0) : N->getOperand(i-1);
    LoadSDNode *LD1 = dyn_cast<LoadSDNode>(PreviousInput);
    LoadSDNode *LD2 = dyn_cast<LoadSDNode>(NextInput);
    // If any inputs are fp_round(extload), they all must be.
    if (IsRoundOfExtLoad && LD2->getExtensionType() != ISD::EXTLOAD)
      return SDValue();
    if (!isConsecutiveLS(LD2, LD1, ElemSize, 1, DAG))
      InputsAreConsecutiveLoads = false;
    if (!isConsecutiveLS(LD1, LD2, ElemSize, 1, DAG))
      InputsAreReverseConsecutive = false;
    // Exit early if the loads are neither consecutive nor reverse consecutive.
    if (!InputsAreConsecutiveLoads && !InputsAreReverseConsecutive)
      return SDValue();
  }
  assert(!(InputsAreConsecutiveLoads && InputsAreReverseConsecutive) &&
         "The loads cannot be both consecutive and reverse consecutive.");

For below if statement, if InputsAreConsecutiveLoads = 0 and InputsAreReverseConsecutive = 0, it will return SDValue(). if (!InputsAreConsecutiveLoads && !InputsAreReverseConsecutive) return SDValue();

For below 3 situations, if-statement will not return SDValue(): InputsAreConsecutiveLoads = 0 and InputsAreReverseConsecutive = 1, InputsAreConsecutiveLoads = 1 and InputsAreReverseConsecutive = 0, InputsAreConsecutiveLoads = 1 and InputsAreReverseConsecutive = 1,

For below assert-statement: assert(!(InputsAreConsecutiveLoads && InputsAreReverseConsecutive) && "The loads cannot be both consecutive and reverse consecutive.");

If InputsAreConsecutiveLoads = 1 and InputsAreReverseConsecutive = 1, this assert condtion '!(InputsAreConsecutiveLoads && InputsAreReverseConsecutive)' will get false.

So I think the right assert statement should be: assert((InputsAreConsecutiveLoads || InputsAreReverseConsecutive) && "The loads cannot be both consecutive and reverse consecutive.");

Thanks, Zhang Kang (张抗) XL Compiler Backend(TOBEY) developer, CDL Shanghai Email: shkzhang@cn.ibm.com Phone: 86-21-60928940

关注IBM中国编译器开发团队 - 新浪微博: http://www.weibo.com/ibmcompiler | developerWorks: http://ibm.co/HK0GCx

Quuxplusone commented 5 years ago

Any updates on this one? Sorry for pushing this, but just wanted to mention that this is a blocker for our efforts on building Swift toolchain on ppc64le. Would highly appreciate an early resolution. Thanks in advance!

Quuxplusone commented 5 years ago

Attached simplify.ll (5893 bytes, text/x-matlab): Narrow down the error case

Quuxplusone commented 5 years ago
Hi @nemanjai,

I saw that this part of the code was introduced by you in commit -
https://github.com/apple/swift-llvm/commit/502534bc2a23e0d8eab19ee77d7648dd65bf0667#diff-e9b0770875cf87fad4925f505fe401ae
(https://reviews.llvm.org/D26023)

Can you please tell what this piece of code is doing and if at all the assert
statement needs to be revisited?
Quuxplusone commented 5 years ago

The new patch for this bug is in https://reviews.llvm.org/D60811.

Quuxplusone commented 5 years ago
https://reviews.llvm.org/D60811 Closed by commit rL358644: [PowerPC] Fix wrong
ElemSIze when calling isConsecutiveLS()
(Link:- https://reviews.llvm.org/rL358644)