New user self-registration is disabled due to spam. For an account please email bugs-admin@lists.llvm.org with your e-mail address and full name.

Bug 45297 - Crash when building Linux kernel's AMDGPU driver for powerpc64le
Summary: Crash when building Linux kernel's AMDGPU driver for powerpc64le
Status: RESOLVED FIXED
Alias: None
Product: libraries
Classification: Unclassified
Component: Backend: PowerPC (show other bugs)
Version: trunk
Hardware: PC Linux
: P normal
Assignee: Hal Finkel
URL:
Keywords:
Depends on:
Blocks: 4068 release-10.0.1
  Show dependency tree
 
Reported: 2020-03-24 11:57 PDT by Nathan Chancellor
Modified: 2020-04-22 15:09 PDT (History)
8 users (show)

See Also:
Fixed By Commit(s): b7d5229d789b7cb2747226d528ed016624b11cea 70f9f4dd9d1 351b1923155 26b46b67d80 8eb40e41f6e 92d5c1be9ee93850c0a8903f05f36a23ee835dc2 5086fa03334 40633cc752a 66cfbf17a18 b11ecd19654


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Nathan Chancellor 2020-03-24 11:57:21 PDT
Building Fedora's powerpc64le config crashes in the AMDGPU driver.

$ curl -LSs https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/snapshot/linux-5.6-rc7.tar.gz | tar xzf -

$ cd linux-5.6-rc7

$ curl -LSso .config 'https://git.kernel.org/pub/scm/linux/kernel/git/jwboyer/fedora.git/plain/fedora/configs/kernel-5.6.0-ppc64le.config?h=kernel-5.6.0-0.rc7.git0.2.fc32'

$ make -j$(nproc) -s ARCH=powerpc CC=clang CROSS_COMPILE=powerpc64le-linux-gnu- olddefconfig drivers/gpu/drm/amd/amdgpu/
fatal error: error in backend: Cannot select: 0x89ef540: ch = PPCISD::ST_VSR_SCAL_INT<(store 4 into %ir.1463)> 0x89dd638:1, 0x89eed88, 0x89e44b0, Constant:i64<4>, ValueType:ch:i32, drivers/gpu/drm/amd/amdgpu/../display/dc/calcs/dcn_calcs.c:1126:39
  0x89eed88: f64 = PPCISD::FP_TO_SINT_IN_VSR 0x89f4a40, drivers/gpu/drm/amd/amdgpu/../display/dc/calcs/dcn_calcs.c:1126:39
    0x89f4a40: f64 = fp_extend 0x89f1560, drivers/gpu/drm/amd/amdgpu/../display/dc/calcs/dcn_calcs.c:1126:39
      0x89f1560: f32 = fdiv 0x89f8c88, 0x89dd2f8, drivers/gpu/drm/amd/amdgpu/../display/dc/calcs/dcn_calcs.c:1126:69
        0x89f8c88: f32 = fmul 0x89ef268, 0x89f5128, drivers/gpu/drm/amd/amdgpu/../display/dc/calcs/dcn_calcs.c:1126:59
          0x89ef268: f32,ch = CopyFromReg 0x8570c28, Register:f32 %114, drivers/gpu/drm/amd/amdgpu/../display/dc/calcs/dcn_calcs.c:1126:59
            0x89f33e0: f32 = Register %114
          0x89f5128: f32,ch = load<(load 4 from constant-pool)> 0x8570c28, 0x89f0fb0, undef:i64
            0x89f0fb0: i64,ch = PPCISD::TOC_ENTRY<(load 8 from got)> TargetConstantPool:i64<float 1.000000e+06> 0, Register:i64 $x2
              0x89f4b78: i64 = TargetConstantPool<float 1.000000e+06> 0
              0x89f2f00: i64 = Register $x2
            0x89d9ee8: i64 = undef
        0x89dd2f8: f32 = fmul 0x89dd638, 0x89f9168, drivers/gpu/drm/amd/amdgpu/../display/dc/calcs/dcn_calcs.c:1127:38
          0x89dd638: f32,ch = load<(load 4 from %ir.1458)> 0x89e9ac8, 0x89f2bc0, undef:i64, drivers/gpu/drm/amd/amdgpu/../display/dc/calcs/dcn_calcs.c:1127:43
            0x89f2bc0: i64 = add nuw 0x89ef748, Constant:i64<62104>, drivers/gpu/drm/amd/amdgpu/../display/dc/calcs/dcn_calcs.c:1127:43
              0x89ef748: i64,ch = CopyFromReg 0x8570c28, Register:i64 %177, drivers/gpu/drm/amd/amdgpu/../display/dc/calcs/dcn_calcs.c:1115:7
                0x89e2220: i64 = Register %177
              0x89dd910: i64 = Constant<62104>
            0x89d9ee8: i64 = undef
          0x89f9168: f32,ch = load<(load 4 from constant-pool)> 0x8570c28, 0x89f8cf0, undef:i64
            0x89f8cf0: i64,ch = PPCISD::TOC_ENTRY<(load 8 from got)> TargetConstantPool:i64<float 1.600000e+01> 0, Register:i64 $x2
              0x89f1838: i64 = TargetConstantPool<float 1.600000e+01> 0
              0x89f2f00: i64 = Register $x2
            0x89d9ee8: i64 = undef
  0x89e44b0: i64 = add 0x89ef748, Constant:i64<7644>, drivers/gpu/drm/amd/amdgpu/../display/dc/calcs/dcn_calcs.c:1126:30
    0x89ef748: i64,ch = CopyFromReg 0x8570c28, Register:i64 %177, drivers/gpu/drm/amd/amdgpu/../display/dc/calcs/dcn_calcs.c:1115:7
      0x89e2220: i64 = Register %177
    0x89f1288: i64 = Constant<7644>
  0x89f9648: i64 = Constant<4>
In function: dcn_validate_bandwidth
clang-11: error: clang frontend command failed with exit code 70 (use -v to see invocation)
ClangBuiltLinux clang version 11.0.0 (git://github.com/llvm/llvm-project ae37e2285d233f28217e4e95a3ff71059c7ee8c7)
Target: powerpc64le-unknown-linux-gnu
Thread model: posix
InstalledDir: /home/nathan/cbl/toolchains/llvm-tot/bin
clang-11: note: diagnostic msg: PLEASE submit a bug report to https://bugs.llvm.org/ and include the crash backtrace, preprocessed source, and associated run script.
clang-11: note: diagnostic msg:
********************

PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:
Preprocessed source(s) and associated run script(s) are located at:
clang-11: note: diagnostic msg: /tmp/dcn_calcs-42bba4.c
clang-11: note: diagnostic msg: /tmp/dcn_calcs-42bba4.sh
clang-11: note: diagnostic msg:

********************
make[5]: *** [scripts/Makefile.build:268: drivers/gpu/drm/amd/amdgpu/../display/dc/calcs/dcn_calcs.o] Error 70
make[5]: *** Waiting for unfinished jobs....

creduce spits out with the linked interestingness test from the full preprocessed source:

float a;
int b;
void c() { b = a; }

https://github.com/nathanchance/creduce-files/blob/05085a2632d31a4f44ab4434dbbe1f21e9d19ef4/fedora-ppc64le-amdgpu/test.sh

https://github.com/nathanchance/creduce-files/blob/05085a2632d31a4f44ab4434dbbe1f21e9d19ef4/fedora-ppc64le-amdgpu/dcn_calcs.i.orig

I can reproduce this back to LLVM 8.0.1 so does not seem like a recent regression.
Comment 1 Kai Luo 2020-03-25 07:06:26 PDT
https://reviews.llvm.org/D76773 is submitted to solve this issue.
Comment 2 Nathan Chancellor 2020-03-25 14:23:31 PDT
Thank you for the patch! I can confirm that the backend error is fixed but I now appear to be hitting an assertion when building the same file:

clang-11: /home/nathan/cbl/git/tc-build-master/llvm-project/llvm/lib/CodeGen/MachineOperand.cpp:1017: llvm::MachineMemOperand::MachineMemOperand(llvm::MachinePointerInfo, llvm::MachineMemOperand::Flags, uint64_t, uint64_t, const llvm::AAMDNodes &, const llvm::MDNode *, SyncScope::ID, llvm::AtomicOrdering, llvm::AtomicOrdering): Assertion `getBaseAlignment() == a && a != 0 && "Alignment is not a power of 2!"' failed.
Stack dump:
0.	Program arguments: /home/nathan/cbl/git/tc-build-master/llvm-5a19c418361b37a6df90b2bf8562038d6bdde54a-assertions/bin/clang-11 -cc1 -triple powerpc64le-unknown-linux-gnu -S -disable-free -main-file-name dcn_calcs.c -mrelocation-model static -mthread-model posix -fno-delete-null-pointer-checks -mllvm -warn-stack-size=2048 -mframe-pointer=all -relaxed-aliasing -fmath-errno -fno-rounding-math -masm-verbose -no-integrated-as -mconstructor-aliases -mcmodel=large -target-cpu pwr8 -target-feature -vsx -target-feature -spe -target-feature +altivec -mfloat-abi hard -target-abi elfv2 -dwarf-column-info -fno-split-dwarf-inlining -debug-info-kind=limited -dwarf-version=4 -debugger-tuning=gdb -nostdsysteminc -nobuiltininc -resource-dir /home/nathan/cbl/git/tc-build-master/llvm-5a19c418361b37a6df90b2bf8562038d6bdde54a-assertions/lib/clang/11.0.0 -dependency-file drivers/gpu/drm/amd/amdgpu/../display/dc/calcs/.dcn_calcs.o.d -MT drivers/gpu/drm/amd/amdgpu/../display/dc/calcs/dcn_calcs.o -sys-header-deps -isystem /home/nathan/cbl/git/tc-build-master/llvm-5a19c418361b37a6df90b2bf8562038d6bdde54a-assertions/lib/clang/11.0.0/include -include /home/nathan/src/linux-next/include/linux/kconfig.h -include /home/nathan/src/linux-next/include/linux/compiler_types.h -I /home/nathan/src/linux-next/arch/powerpc/include -I ./arch/powerpc/include/generated -I /home/nathan/src/linux-next/include -I ./include -I /home/nathan/src/linux-next/arch/powerpc/include/uapi -I ./arch/powerpc/include/generated/uapi -I /home/nathan/src/linux-next/include/uapi -I ./include/generated/uapi -D __KERNEL__ -I /home/nathan/src/linux-next/arch/powerpc -D HAVE_AS_ATHIGH=1 -D _TASK_CPU=300 -I /home/nathan/src/linux-next/drivers/gpu/drm/amd/amdgpu/../powerplay/inc/ -I /home/nathan/src/linux-next/drivers/gpu/drm/amd/amdgpu/../include/asic_reg -I /home/nathan/src/linux-next/drivers/gpu/drm/amd/amdgpu/../include -I /home/nathan/src/linux-next/drivers/gpu/drm/amd/amdgpu/../powerplay/smumgr -I /home/nathan/src/linux-next/drivers/gpu/drm/amd/amdgpu/../powerplay/hwmgr -I /home/nathan/src/linux-next/drivers/gpu/drm/amd/amdgpu/../display/dc/inc/ -I /home/nathan/src/linux-next/drivers/gpu/drm/amd/amdgpu/../display/dc/inc/hw -I /home/nathan/src/linux-next/drivers/gpu/drm/amd/amdgpu/../display/dc/clk_mgr -I /home/nathan/src/linux-next/drivers/gpu/drm/amd/amdgpu/../display/modules/inc -I /home/nathan/src/linux-next/drivers/gpu/drm/amd/amdgpu/../display/modules/freesync -I /home/nathan/src/linux-next/drivers/gpu/drm/amd/amdgpu/../display/modules/color -I /home/nathan/src/linux-next/drivers/gpu/drm/amd/amdgpu/../display/modules/info_packet -I /home/nathan/src/linux-next/drivers/gpu/drm/amd/amdgpu/../display/modules/power -I /home/nathan/src/linux-next/drivers/gpu/drm/amd/amdgpu/../display/dmub/inc -I /home/nathan/src/linux-next/drivers/gpu/drm/amd/amdgpu/../display/modules/hdcp -D BUILD_FEATURE_TIMING_SYNC=0 -I /home/nathan/src/linux-next/drivers/gpu/drm/amd/amdgpu/../display/dc -I /home/nathan/src/linux-next/drivers/gpu/drm/amd/amdgpu/../include/asic_reg -I /home/nathan/src/linux-next/drivers/gpu/drm/amd/amdgpu/../include -I /home/nathan/src/linux-next/drivers/gpu/drm/amd/amdgpu/../amdgpu -I /home/nathan/src/linux-next/drivers/gpu/drm/amd/amdgpu/../powerplay/inc -I /home/nathan/src/linux-next/drivers/gpu/drm/amd/amdgpu/../acp/include -I /home/nathan/src/linux-next/drivers/gpu/drm/amd/amdgpu/../display -I /home/nathan/src/linux-next/drivers/gpu/drm/amd/amdgpu/../display/include -I /home/nathan/src/linux-next/drivers/gpu/drm/amd/amdgpu/../display/dc -I /home/nathan/src/linux-next/drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm -I /home/nathan/src/linux-next/drivers/gpu/drm/amd/amdgpu/../amdkfd -I /home/nathan/src/linux-next/drivers/gpu/drm/amd/amdgpu -I ./drivers/gpu/drm/amd/amdgpu -D MODULE -D KBUILD_BASENAME="dcn_calcs" -D KBUILD_MODNAME="amdgpu" -fmacro-prefix-map=/home/nathan/src/linux-next/= -O2 -Wall -Wundef -Werror=strict-prototypes -Wno-trigraphs -Werror=implicit-function-declaration -Werror=implicit-int -Wno-format-security -Werror=unknown-warning-option -Wno-frame-address -Wno-address-of-packed-member -Wno-format-invalid-specifier -Wno-gnu -Wno-tautological-compare -Wno-unused-const-variable -Wdeclaration-after-statement -Wvla -Wno-pointer-sign -Werror=date-time -Werror=incompatible-pointer-types -Wno-initializer-overrides -Wno-format -Wno-sign-compare -Wno-format-zero-length -Wno-pointer-to-enum-cast -std=gnu89 -fno-dwarf-directory-asm -fdebug-compilation-dir /home/nathan/src/linux-next/out/ppc64le -ferror-limit 19 -fmessage-length 0 -pg -fwrapv -fno-signed-char -fwchar-type=short -fno-signed-wchar -fgnuc-version=4.2.1 -fobjc-runtime=gcc -fdiagnostics-show-option -vectorize-loops -vectorize-slp -o /tmp/dcn_calcs-9cbb8e.s -x c /home/nathan/src/linux-next/drivers/gpu/drm/amd/amdgpu/../display/dc/calcs/dcn_calcs.c 
1.	<eof> parser at end of file
2.	Code generation
3.	Running pass 'Function Pass Manager' on module '/home/nathan/src/linux-next/drivers/gpu/drm/amd/amdgpu/../display/dc/calcs/dcn_calcs.c'.
4.	Running pass 'PowerPC DAG->DAG Pattern Instruction Selection' on function '@dcn_bw_calc_rq_dlg_ttu'
 #0 0x0000000002724b74 PrintStackTraceSignalHandler(void*) (/home/nathan/cbl/git/tc-build-master/llvm-5a19c418361b37a6df90b2bf8562038d6bdde54a-assertions/bin/clang-11+0x2724b74)
 #1 0x00000000027228ee llvm::sys::RunSignalHandlers() (/home/nathan/cbl/git/tc-build-master/llvm-5a19c418361b37a6df90b2bf8562038d6bdde54a-assertions/bin/clang-11+0x27228ee)
 #2 0x0000000002724f75 SignalHandler(int) (/home/nathan/cbl/git/tc-build-master/llvm-5a19c418361b37a6df90b2bf8562038d6bdde54a-assertions/bin/clang-11+0x2724f75)
 #3 0x00007f5d84a27890 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x12890)
 #4 0x00007f5d836fae97 raise (/lib/x86_64-linux-gnu/libc.so.6+0x3ee97)
 #5 0x00007f5d836fc801 abort (/lib/x86_64-linux-gnu/libc.so.6+0x40801)
 #6 0x00007f5d836ec39a (/lib/x86_64-linux-gnu/libc.so.6+0x3039a)
 #7 0x00007f5d836ec412 (/lib/x86_64-linux-gnu/libc.so.6+0x30412)
 #8 0x0000000001d41840 llvm::MachineMemOperand::MachineMemOperand(llvm::MachinePointerInfo, llvm::MachineMemOperand::Flags, unsigned long, unsigned long, llvm::AAMDNodes const&, llvm::MDNode const*, unsigned char, llvm::AtomicOrdering, llvm::AtomicOrdering) (/home/nathan/cbl/git/tc-build-master/llvm-5a19c418361b37a6df90b2bf8562038d6bdde54a-assertions/bin/clang-11+0x1d41840)
 #9 0x0000000001d17629 llvm::MachineFunction::getMachineMemOperand(llvm::MachinePointerInfo, llvm::MachineMemOperand::Flags, unsigned long, unsigned int, llvm::AAMDNodes const&, llvm::MDNode const*, unsigned char, llvm::AtomicOrdering, llvm::AtomicOrdering) (/home/nathan/cbl/git/tc-build-master/llvm-5a19c418361b37a6df90b2bf8562038d6bdde54a-assertions/bin/clang-11+0x1d17629)
#10 0x00000000016b12ab llvm::PPCTargetLowering::LowerINT_TO_FP(llvm::SDValue, llvm::SelectionDAG&) const (/home/nathan/cbl/git/tc-build-master/llvm-5a19c418361b37a6df90b2bf8562038d6bdde54a-assertions/bin/clang-11+0x16b12ab)
#11 0x00000000016bca29 llvm::PPCTargetLowering::LowerOperation(llvm::SDValue, llvm::SelectionDAG&) const (/home/nathan/cbl/git/tc-build-master/llvm-5a19c418361b37a6df90b2bf8562038d6bdde54a-assertions/bin/clang-11+0x16bca29)
#12 0x00000000034161cf (anonymous namespace)::SelectionDAGLegalize::LegalizeOp(llvm::SDNode*) (/home/nathan/cbl/git/tc-build-master/llvm-5a19c418361b37a6df90b2bf8562038d6bdde54a-assertions/bin/clang-11+0x34161cf)
#13 0x000000000341552a llvm::SelectionDAG::Legalize() (/home/nathan/cbl/git/tc-build-master/llvm-5a19c418361b37a6df90b2bf8562038d6bdde54a-assertions/bin/clang-11+0x341552a)
#14 0x00000000034e928d llvm::SelectionDAGISel::CodeGenAndEmitDAG() (/home/nathan/cbl/git/tc-build-master/llvm-5a19c418361b37a6df90b2bf8562038d6bdde54a-assertions/bin/clang-11+0x34e928d)
#15 0x00000000034e7450 llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&) (/home/nathan/cbl/git/tc-build-master/llvm-5a19c418361b37a6df90b2bf8562038d6bdde54a-assertions/bin/clang-11+0x34e7450)
#16 0x00000000034e39e4 llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&) (/home/nathan/cbl/git/tc-build-master/llvm-5a19c418361b37a6df90b2bf8562038d6bdde54a-assertions/bin/clang-11+0x34e39e4)
#17 0x00000000016defe1 (anonymous namespace)::PPCDAGToDAGISel::runOnMachineFunction(llvm::MachineFunction&) (/home/nathan/cbl/git/tc-build-master/llvm-5a19c418361b37a6df90b2bf8562038d6bdde54a-assertions/bin/clang-11+0x16defe1)
#18 0x0000000001d1eb0e llvm::MachineFunctionPass::runOnFunction(llvm::Function&) (/home/nathan/cbl/git/tc-build-master/llvm-5a19c418361b37a6df90b2bf8562038d6bdde54a-assertions/bin/clang-11+0x1d1eb0e)
#19 0x00000000020e6cc4 llvm::FPPassManager::runOnFunction(llvm::Function&) (/home/nathan/cbl/git/tc-build-master/llvm-5a19c418361b37a6df90b2bf8562038d6bdde54a-assertions/bin/clang-11+0x20e6cc4)
#20 0x00000000020e6fb8 llvm::FPPassManager::runOnModule(llvm::Module&) (/home/nathan/cbl/git/tc-build-master/llvm-5a19c418361b37a6df90b2bf8562038d6bdde54a-assertions/bin/clang-11+0x20e6fb8)
#21 0x00000000020e76e4 llvm::legacy::PassManagerImpl::run(llvm::Module&) (/home/nathan/cbl/git/tc-build-master/llvm-5a19c418361b37a6df90b2bf8562038d6bdde54a-assertions/bin/clang-11+0x20e76e4)
#22 0x00000000028fce2a clang::EmitBackendOutput(clang::DiagnosticsEngine&, clang::HeaderSearchOptions const&, clang::CodeGenOptions const&, clang::TargetOptions const&, clang::LangOptions const&, llvm::DataLayout const&, llvm::Module*, clang::BackendAction, std::unique_ptr<llvm::raw_pwrite_stream, std::default_delete<llvm::raw_pwrite_stream> >) (/home/nathan/cbl/git/tc-build-master/llvm-5a19c418361b37a6df90b2bf8562038d6bdde54a-assertions/bin/clang-11+0x28fce2a)
#23 0x00000000030dd133 clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&) (/home/nathan/cbl/git/tc-build-master/llvm-5a19c418361b37a6df90b2bf8562038d6bdde54a-assertions/bin/clang-11+0x30dd133)
#24 0x000000000377dd33 clang::ParseAST(clang::Sema&, bool, bool) (/home/nathan/cbl/git/tc-build-master/llvm-5a19c418361b37a6df90b2bf8562038d6bdde54a-assertions/bin/clang-11+0x377dd33)
#25 0x00000000030423a0 clang::FrontendAction::Execute() (/home/nathan/cbl/git/tc-build-master/llvm-5a19c418361b37a6df90b2bf8562038d6bdde54a-assertions/bin/clang-11+0x30423a0)
#26 0x0000000002f9e093 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/home/nathan/cbl/git/tc-build-master/llvm-5a19c418361b37a6df90b2bf8562038d6bdde54a-assertions/bin/clang-11+0x2f9e093)
#27 0x00000000030d7084 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/home/nathan/cbl/git/tc-build-master/llvm-5a19c418361b37a6df90b2bf8562038d6bdde54a-assertions/bin/clang-11+0x30d7084)
#28 0x000000000164e141 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/home/nathan/cbl/git/tc-build-master/llvm-5a19c418361b37a6df90b2bf8562038d6bdde54a-assertions/bin/clang-11+0x164e141)
#29 0x000000000164c20c ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&) (/home/nathan/cbl/git/tc-build-master/llvm-5a19c418361b37a6df90b2bf8562038d6bdde54a-assertions/bin/clang-11+0x164c20c)
#30 0x000000000164a012 main (/home/nathan/cbl/git/tc-build-master/llvm-5a19c418361b37a6df90b2bf8562038d6bdde54a-assertions/bin/clang-11+0x164a012)
#31 0x00007f5d836ddb97 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x21b97)
#32 0x00000000016490ea _start (/home/nathan/cbl/git/tc-build-master/llvm-5a19c418361b37a6df90b2bf8562038d6bdde54a-assertions/bin/clang-11+0x16490ea)
clang-11: error: unable to execute command: Aborted
clang-11: error: clang frontend command failed due to signal (use -v to see invocation)

Is it related to that fix or should I file a separate bug?

Here are the creduce files again: https://github.com/nathanchance/creduce-files/tree/1d9476449468e989e3f215b782cf806b8be9218f/fedora-ppc64le-amdgpu-assertion

  
float a;
b, c;
d() {
  for (; b; b++)
    c += a;
}
Comment 3 Kai Luo 2020-03-25 19:07:58 PDT
> Is it related to that fix or should I file a separate bug?

It should be related, cuz backend without the patch is able compile the reduced case. I'll investigate more on it.
Comment 4 Nathan Chancellor 2020-03-26 13:26:18 PDT
I would like to see the fix for this backported to 10.0.1 (whatever that ends up being) so that we get more build coverage of the Linux kernel with the release version of clang so adding this as a blocker for release-10.0.1. Feel free to remove it if you disagree with that request.
Comment 5 Kai Luo 2020-03-31 19:53:10 PDT
Fixed in https://github.com/llvm/llvm-project/commit/8eb40e41f6ec99985a292e342ec303a0bd6f5f41

@Nathan, would you mind create a new PR for the subsequent failure for which I already have a fix in https://reviews.llvm.org/D76982
Comment 6 Kai Luo 2020-03-31 20:14:17 PDT
Ok, the alignment crash issue looks having been fixed in https://reviews.llvm.org/D77138 @Nathan
Comment 8 Nathan Chancellor 2020-03-31 21:13:29 PDT
I guess this cannot be fully fixed in 10.0.1 with -DLLVM_ENABLE_ASSERTIONS=ON then because 998118c3d3bd6a394c1da35f7570cce1a3145ea3 is a part of a series :/

Oh well, LLVM 11 it is, thanks for the fix!
Comment 9 Nick Desaulniers 2020-04-01 10:21:39 PDT
Clang 10 is still going to have a point release; either the entire series should be picked up for the 10.1 release, or an additional patch should be created.
Comment 10 Nathan Chancellor 2020-04-02 15:23:06 PDT
Reopening for proper 10.0.1 tracking.

Just for clarity, I can confirm on top of llvmorg-10.0.0, the following commits

70f9f4dd9d1 ("[PowerPC] Pre-commit reduced test case for PR45297. NFC.")
351b1923155 ("[PowerPC] Enhance test for PR45297. NFC.")
26b46b67d80 ("[PowerPC] Fix test for PR45297 to adapt build without asserts. NFC.")
8eb40e41f6e ("[PowerPC] Don't generate ST_VSR_SCAL_INT if power8-vector is disabled")

along with https://reviews.llvm.org/D76982?id=253326 fixes all crashes.

From an outsider perspective, it seems like taking that Phabricator patch in LLVM 10 is going have less of a regression risk compared to taking the alignment series in, which looks to be fairly numerous in terms of commits: https://github.com/llvm/llvm-project/commits/96cae168fa2d72d6693b60a13d0c8b2d82c64bed/llvm?author=gchatelet.

I am not sure what the policy is around patches in stable branches not in master. I'll leave that up to Tom and the PowerPC owners.
Comment 11 Tom Stellard 2020-04-14 18:10:17 PDT
(In reply to Nathan Chancellor from comment #10)
> Reopening for proper 10.0.1 tracking.
> 
> Just for clarity, I can confirm on top of llvmorg-10.0.0, the following
> commits
> 
> 70f9f4dd9d1 ("[PowerPC] Pre-commit reduced test case for PR45297. NFC.")
> 351b1923155 ("[PowerPC] Enhance test for PR45297. NFC.")
> 26b46b67d80 ("[PowerPC] Fix test for PR45297 to adapt build without asserts.
> NFC.")
> 8eb40e41f6e ("[PowerPC] Don't generate ST_VSR_SCAL_INT if power8-vector is
> disabled")
> 
> along with https://reviews.llvm.org/D76982?id=253326 fixes all crashes.
> 

Has this fifth patch been committed?  If so, what is the git hash?
Comment 12 Nathan Chancellor 2020-04-14 18:11:59 PDT
Yes, it is b7d5229d789b7cb2747226d528ed016624b11cea.

I think it will need some changes since it uses some of the Align stuff that has happened in master but not release/10.x but I do not know what that is. Kai, could you take a look?
Comment 13 Kai Luo 2020-04-14 19:46:47 PDT
Yes, the commit b7d5229d789b7cb2747226d528ed016624b11cea is using `Align` introduced in master. I can prepare a patch that doesn't need `Align`. @Tom do you have any suggestion on how I can backport it to release/10.x?
Comment 14 Tom Stellard 2020-04-14 19:53:56 PDT
(In reply to Kai Luo from comment #13)
> Yes, the commit b7d5229d789b7cb2747226d528ed016624b11cea is using `Align`
> introduced in master. I can prepare a patch that doesn't need `Align`. @Tom
> do you have any suggestion on how I can backport it to release/10.x?

If you push all the fixes to a branch in your local fork of LLVM on github, then I will review it and merge it to the release/10.x branch.
Comment 15 Tom Stellard 2020-04-14 19:54:34 PDT
(In reply to Tom Stellard from comment #14)
> (In reply to Kai Luo from comment #13)
> > Yes, the commit b7d5229d789b7cb2747226d528ed016624b11cea is using `Align`
> > introduced in master. I can prepare a patch that doesn't need `Align`. @Tom
> > do you have any suggestion on how I can backport it to release/10.x?
> 
> If you push all the fixes to a branch in your local fork of LLVM on github,
> then I will review it and merge it to the release/10.x branch.

Actually, I'll have Hal review it since he is the PPC code owner.
Comment 16 Kai Luo 2020-04-14 20:17:54 PDT
After I finish backporting the patches in my fork, I should create a pull request targeting release/10.x of github.com/llvm/llvm-project, right?
Comment 17 Tom Stellard 2020-04-14 20:20:42 PDT
(In reply to Kai Luo from comment #16)
> After I finish backporting the patches in my fork, I should create a pull
> request targeting release/10.x of github.com/llvm/llvm-project, right?

No, we don't do pull requests yet for the LLVM project (it will get automatically closed), but you could open a pull request against my personal fork: tstellar/llvm-project release/10.x.  This is what I have been doing for other fixes.
Comment 18 Tom Stellard 2020-04-16 16:04:01 PDT
Hal, is this OK to merge?

https://github.com/tstellar/llvm-project/pull/91/files
Comment 19 Hal Finkel 2020-04-16 18:22:46 PDT
(In reply to Tom Stellard from comment #18)
> Hal, is this OK to merge?
> 
> https://github.com/tstellar/llvm-project/pull/91/files

Looks okay to me.
Comment 20 Tom Stellard 2020-04-16 22:01:28 PDT
Merged: 92d5c1be9ee93850c0a8903f05f36a23ee835dc2
Comment 21 Nathan Chancellor 2020-04-16 22:08:23 PDT
Tom, please note that you also need

70f9f4dd9d1 ("[PowerPC] Pre-commit reduced test case for PR45297. NFC.")
351b1923155 ("[PowerPC] Enhance test for PR45297. NFC.")
26b46b67d80 ("[PowerPC] Fix test for PR45297 to adapt build without asserts. NFC.")
8eb40e41f6e ("[PowerPC] Don't generate ST_VSR_SCAL_INT if power8-vector is disabled")

to fully resolve the original issue (not sure if you were still planning to grab them or not).

b7d5229d789b7cb2747226d528ed016624b11cea was needed to resolve an issue seen after 8eb40e41f6ec99985a292e342ec303a0bd6f5f41 but 8eb40e41f6ec99985a292e342ec303a0bd6f5f41 is still needed. The first three commits are needed to add the test.
Comment 22 Tom Stellard 2020-04-17 08:00:30 PDT
(In reply to Nathan Chancellor from comment #21)
> Tom, please note that you also need
> 
> 70f9f4dd9d1 ("[PowerPC] Pre-commit reduced test case for PR45297. NFC.")
> 351b1923155 ("[PowerPC] Enhance test for PR45297. NFC.")
> 26b46b67d80 ("[PowerPC] Fix test for PR45297 to adapt build without asserts.
> NFC.")
> 8eb40e41f6e ("[PowerPC] Don't generate ST_VSR_SCAL_INT if power8-vector is
> disabled")
> 
> to fully resolve the original issue (not sure if you were still planning to
> grab them or not).
> 
> b7d5229d789b7cb2747226d528ed016624b11cea was needed to resolve an issue seen
> after 8eb40e41f6ec99985a292e342ec303a0bd6f5f41 but
> 8eb40e41f6ec99985a292e342ec303a0bd6f5f41 is still needed. The first three
> commits are needed to add the test.

Ok, my mistake.  I thought all the patches had been squashed together.  Kai, can you help backport the other patches?
Comment 23 Kai Luo 2020-04-17 08:44:33 PDT
With pleasure. I have a question, shall I modified the commit message by adding `(cherry picked from ...)` like other commit?
Comment 24 Kai Luo 2020-04-17 08:47:34 PDT
Ok, looks like I have to add `-x` option.
Comment 25 Kai Luo 2020-04-19 19:52:52 PDT
Hi Tom, would you take a look at https://github.com/tstellar/llvm-project/pull/97 ? Thx.
Comment 26 Tom Stellard 2020-04-20 18:30:32 PDT
Hal, do these changes look OK too: https://github.com/tstellar/llvm-project/pull/97/files
Comment 27 Hal Finkel 2020-04-21 12:58:44 PDT
(In reply to Tom Stellard from comment #26)
> Hal, do these changes look OK too:
> https://github.com/tstellar/llvm-project/pull/97/files

Yes.
Comment 28 Tom Stellard 2020-04-22 15:09:09 PDT
Merged: b11ecd19654