llvm / llvm-project

The LLVM Project is a collection of modular and reusable compiler and toolchain technologies.
http://llvm.org
Other
28.97k stars 11.94k forks source link

RegP Delta Mismatch, UNREACHABLE executed at ../lib/CodeGen/RegisterPressure.cpp:1124! #38777

Open karka228 opened 6 years ago

karka228 commented 6 years ago
Bugzilla Link 39429
Version trunk
OS Linux
Attachments llc -verify-misched -O1 -filetype=obj -mtriple x86_64-unknown-linux-gnu -mcpu=x86-64 regpressure.ll
CC @atrick,@jayfoad,@RKSimon,@MatzeB,@JonPsson,@uweigand

Extended Description

The alternate algorithm for getMaxUpwardPressureDelta() do not yields the same result.

$ ./llc -verify-misched -O1 -filetype=obj -mtriple x86_64-unknown-linux-gnu -mcpu=x86-64 regpressure.ll PDiff: GR32_BSI -1 GR8_ABCD_L+GR32_BSI -1 GR8_NOREX -1 GR32_TC -1 GR32_BPSP+GR32_TC -1 GR64_NOREX -1 GR64_TCW64 -1 GR32_BPSP+GR64_TCW64 -1 GR8 -1 GR8+GR32_DIBP -1 GR8+GR32_BSI -1 GR64_TC+GR64_TCW64 -1 GR8+LOW32_ADDR_ACCESS_with_sub_32bit -1 GR8+GR64_NOREX -1 GR64_TC -1 GR8+GR64_TCW64 -1 DELTA: $cl = COPY %4.sub_8bit:gr32 CurrMx1 GR16 1 RegP Delta Mismatch UNREACHABLE executed at ../lib/CodeGen/RegisterPressure.cpp:1124! Stack dump:

  1. Program arguments: ./llc -verify-misched -O1 -filetype=obj -mtriple x86_64-unknown-linux-gnu -mcpu=x86-64 regpressure.ll
  2. Running pass 'Function Pass Manager' on module 'regpressure.ll'.
  3. Running pass 'Machine Instruction Scheduler' on function '@test'

    ​0 0x000000000212be34 PrintStackTraceSignalHandler(void*) (./llc+0x212be34)

    ​1 0x0000000002129f90 llvm::sys::RunSignalHandlers() (./llc+0x2129f90)

    ​2 0x000000000212c198 SignalHandler(int) (./llc+0x212c198)

    ​3 0x00007f684a74c330 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x10330)

    ​4 0x00007f684933bc37 gsignal /build/eglibc-ripdx6/eglibc-2.19/signal/../nptl/sysdeps/unix/sysv/linux/raise.c:56:0

    ​5 0x00007f684933f028 abort /build/eglibc-ripdx6/eglibc-2.19/stdlib/abort.c:91:0

    ​6 0x00000000020dcf7d llvm::llvm_unreachable_internal(char const, char const, unsigned int) (./llc+0x20dcf7d)

    ​7 0x0000000001927256 (./llc+0x1927256)

    ​8 0x000000000189c9f4 llvm::GenericScheduler::initCandidate(llvm::GenericSchedulerBase::SchedCandidate&, llvm::SUnit*, bool, llvm::RegPressureTracker const&, llvm::RegPressureTracker&) (./llc+0x189c9f4)

    ​9 0x000000000189d062 llvm::GenericScheduler::pickNodeFromQueue(llvm::SchedBoundary&, llvm::GenericSchedulerBase::CandPolicy const&, llvm::RegPressureTracker const&, llvm::GenericSchedulerBase::SchedCandidate&) (./llc+0x189d062)

    ​10 0x000000000189dbb1 llvm::GenericScheduler::pickNode(bool&) (./llc+0x189dbb1)

    ​11 0x00000000018962f2 llvm::ScheduleDAGMILive::schedule() (./llc+0x18962f2)

    ​12 0x00000000018a67a4 (anonymous namespace)::MachineSchedulerBase::scheduleRegions(llvm::ScheduleDAGInstrs&, bool) (./llc+0x18a67a4)

    ​13 0x00000000018a6eb8 (anonymous namespace)::MachineScheduler::runOnMachineFunction(llvm::MachineFunction&) (./llc+0x18a6eb8)

    ​14 0x00000000018139dd llvm::MachineFunctionPass::runOnFunction(llvm::Function&) (./llc+0x18139dd)

    ​15 0x0000000001b49b0d llvm::FPPassManager::runOnFunction(llvm::Function&) (./llc+0x1b49b0d)

    ​16 0x0000000001b49dc8 llvm::FPPassManager::runOnModule(llvm::Module&) (./llc+0x1b49dc8)

    ​17 0x0000000001b4a22a llvm::legacy::PassManagerImpl::run(llvm::Module&) (./llc+0x1b4a22a)

    ​18 0x00000000007279de compileModule(char**, llvm::LLVMContext&) (./llc+0x7279de)

    ​19 0x00000000007251c0 main (./llc+0x7251c0)

    ​20 0x00007f6849326f45 __libc_start_main /build/eglibc-ripdx6/eglibc-2.19/csu/libc-start.c:321:0

    ​21 0x000000000072324a _start (./llc+0x72324a)

    Aborted (core dumped)

jayfoad commented 5 years ago

I've noticed the same error on an AArch64 test:

bin/llc < test/CodeGen/AArch64/postra-mi-sched.ll -O3 -mtriple=aarch64-eabi -mcpu=cortex-a53 -verify-misched

JonPsson commented 5 years ago

I am also seeing this on a SystemZ test:

./bin/llvm-lit -Dllc="llc -verify-misched" test/CodeGen/SystemZ/tls-07.ll -v-- Testing: 1 tests, 1 threads -- FAIL: LLVM :: CodeGen/SystemZ/tls-07.ll (1 of 1) **** TEST 'LLVM :: CodeGen/SystemZ/tls-07.ll' FAILED **** Script:

: 'RUN: at line 6'; llc -verify-misched < llvm/test/CodeGen/SystemZ/tls-07.ll -mcpu=z10 -mtriple=s390x-linux-gnu -relocation-model=pic | grep "__tls_get_offset" | build/bin/count 1

Exit Code: 1

Command Output (stderr):

PDiff: GR32Bit 1 GRH32Bit 1 DELTA: %4:addr64bit = COPY $r2d CurrMx2 GRH32Bit 1 RegP Delta Mismatch UNREACHABLE executed at llvm/lib/CodeGen/RegisterPressure.cpp:1123!