Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[compiler-rt][builtins][PPC] Compiler-rt builtins divtc3 compilation crashes compiler backend #76402

Closed
Ubsefor opened this issue Dec 26, 2023 · 6 comments · Fixed by #77412
Closed
Assignees
Labels
crash Prefer [crash-on-valid] or [crash-on-invalid] llvm:SelectionDAG SelectionDAGISel as well

Comments

@Ubsefor
Copy link

Ubsefor commented Dec 26, 2023

PowerPC DAG->DAG Pattern Instruction Selection fails to run on __divtc3 function (code example below) with PowerPC targets

After changes, applied in 696ea67

Broken after changes by 7d6c2e1

example of code (from divtc3.c):

long double _Complex __divtc3_test(long double __a, long double __b,
                                  long double __c, long double __d) {
  int __ilogbw = 0;
  long double __logbw =
      __builtin_logbl(__builtin_fmaxl(__builtin_fabsl(__c), __builtin_fabsl(__d)));
  if (__builtin_isfinite(__logbw)) {
    __ilogbw = (int)__logbw;
    __c = __builtin_scalbnl(__c, -__ilogbw);
    __d = __builtin_scalbnl(__d, -__ilogbw);
  }
  return 0;
}

Compile command:

clang -O3 -std=gnu99 -ffreestanding -fno-short-enums -nostdlib -target powerpc-gnu-linux-eabi -mcpu=e500mc -msoft-float -ffp-contract=off -v -c divtc3.c -o divtc3.o

Full compiler log:

clang -O3 -std=gnu99 -ffreestanding -fno-short-enums -nostdlib -target powerpc-gnu-linux-eabi -mcpu=e500mc -msoft-float -ffp-contract=off -v -I./crtextra -c src/llvm-project-17.0.6.src/compiler-rt/lib/builtins/divtc3.c -o divtc3.o
clang version 17.0.6
Target: powerpc-gnu-linux-eabi
Thread model: posix
InstalledDir: /bin
 (in-process)
 "/bin/clang-17" -cc1 -triple powerpc-gnu-linux-eabi -emit-obj -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name divtc3.c -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=none -fmath-errno -ffp-contract=off -fno-rounding-math -mconstructor-aliases -ffreestanding -target-cpu e500mc -target-feature -hard-float -msoft-float -mfloat-abi soft -debugger-tuning=gdb -target-linker-version 1022.1 -v -fcoverage-compilation-dir=./ -resource-dir /lib/clang/17 -I ./crtextra -internal-isystem /lib/clang/17/include/ppc_wrappers -internal-isystem /lib/clang/17/include -internal-isystem /usr/local/include -internal-externc-isystem /include -internal-externc-isystem /usr/include -O3 -std=gnu99 -fdebug-compilation-dir=./ -ferror-limit 19 -fno-signed-char -fgnuc-version=4.2.1 -fcolor-diagnostics -vectorize-loops -vectorize-slp -faddrsig -o divtc3.o -x c src/llvm-project-17.0.6.src/compiler-rt/lib/builtins/divtc3.c
clang -cc1 version 17.0.6 based upon LLVM 17.0.6 default target arm64-apple-darwin23.2.0
ignoring nonexistent directory "/include"
ignoring nonexistent directory "/usr/include"
#include "..." search starts here:
#include <...> search starts here:
 ./crtextra
 /lib/clang/17/include/ppc_wrappers
 /lib/clang/17/include
 /usr/local/include
End of search list.
fatal error: error in backend: Do not know how to soften the result of this operator!
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace, preprocessed source, and associated run script.
Stack dump:
0.	Program arguments: clang -O3 -std=gnu99 -ffreestanding -fno-short-enums -nostdlib -target powerpc-gnu-linux-eabi -mcpu=e500mc -msoft-float -ffp-contract=off -v -I./crtextra -c src/llvm-project-17.0.6.src/compiler-rt/lib/builtins/divtc3.c -o divtc3.o
1.	<eof> parser at end of file
2.	Code generation
3.	Running pass 'Function Pass Manager' on module 'src/llvm-project-17.0.6.src/compiler-rt/lib/builtins/divtc3.c'.
4.	Running pass 'PowerPC DAG->DAG Pattern Instruction Selection' on function '@__divtc3'
 #0 0x0000000105b03acc (/bin/clang-17+0x10121bacc)
 #1 0x0000000105b03508 (/bin/clang-17+0x10121b508)
 #2 0x0000000105a90bc8 (/bin/clang-17+0x1011a8bc8)
 #3 0x0000000105a90b78 (/bin/clang-17+0x1011a8b78)
 #4 0x0000000105b004c8 (/bin/clang-17+0x1012184c8)
 #5 0x00000001048eeb80 (/bin/clang-17+0x100006b80)
 #6 0x0000000105a96f74 (/bin/clang-17+0x1011aef74)
 #7 0x0000000105a96e48 (/bin/clang-17+0x1011aee48)
 #8 0x0000000106434ce8 (/bin/clang-17+0x101b4cce8)
 #9 0x000000010645bc4c (/bin/clang-17+0x101b73c4c)
#10 0x000000010645db70 (/bin/clang-17+0x101b75b70)
#11 0x00000001064fb6f4 (/bin/clang-17+0x101c136f4)
#12 0x00000001064fb3f8 (/bin/clang-17+0x101c133f8)
#13 0x00000001064f9ebc (/bin/clang-17+0x101c11ebc)
#14 0x0000000104ce6520 (/bin/clang-17+0x1003fe520)
#15 0x000000010532b75c (/bin/clang-17+0x100a4375c)
#16 0x00000001055c2768 (/bin/clang-17+0x100cda768)
#17 0x00000001055c5e98 (/bin/clang-17+0x100cdde98)
#18 0x00000001055c2b40 (/bin/clang-17+0x100cdab40)
#19 0x0000000105d48468 (/bin/clang-17+0x101460468)
#20 0x0000000105f8c378 (/bin/clang-17+0x1016a4378)
#21 0x0000000106bfdf90 (/bin/clang-17+0x102315f90)
#22 0x00000001061b76c4 (/bin/clang-17+0x1018cf6c4)
#23 0x0000000106170fb4 (/bin/clang-17+0x101888fb4)
#24 0x0000000106206914 (/bin/clang-17+0x10191e914)
#25 0x00000001048ee7c4 (/bin/clang-17+0x1000067c4)
#26 0x00000001048ec6e4 (/bin/clang-17+0x1000046e4)
#27 0x000000010606d9b0 (/bin/clang-17+0x1017859b0)
#28 0x0000000105a90b50 (/bin/clang-17+0x1011a8b50)
#29 0x000000010606d428 (/bin/clang-17+0x101785428)
#30 0x00000001060496e4 (/bin/clang-17+0x1017616e4)
#31 0x0000000106049800 (/bin/clang-17+0x101761800)
#32 0x0000000106058df0 (/bin/clang-17+0x101770df0)
#33 0x00000001048ec1a4 (/bin/clang-17+0x1000041a4)
#34 0x00000001048f5f74 (/bin/clang-17+0x10000df74)
#35 0x00000001814150e0
clang: error: clang frontend command failed with exit code 70 (use -v to see invocation)
clang version 17.0.6
Target: powerpc-gnu-linux-eabi
Thread model: posix
InstalledDir: /bin
clang: note: diagnostic msg:
********************

PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:
Preprocessed source(s) and associated run script(s) are located at:
clang: note: diagnostic msg: /tmp/divtc3-784c30.c
clang: note: diagnostic msg: /tmp/divtc3-784c30.sh
clang: note: diagnostic msg: Crash backtrace is located in
clang: note: diagnostic msg: /Users/USER/Library/Logs/DiagnosticReports/clang-17_<YYYY-MM-DD-HHMMSS>_<hostname>.crash
clang: note: diagnostic msg: (choose the .crash file that corresponds to your crash)
clang: note: diagnostic msg:

********************

Note: Shorter version of diagnostic files is attached above, some paths are trimmed

@ecnelises
Copy link
Member

It seems I got different failure message (maybe another bug):

Assertion failed: (isMachineOpcode() && "Not a MachineInstr opcode!"), function getMachineOpcode, file SelectionDAGNodes.h, line 714.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace, preprocessed source, and associated run script.
Stack dump:
0.	Program arguments: clang -O3 -std=gnu99 -ffreestanding -fno-short-enums -nostdlib -target powerpc-gnu-linux-eabi -mcpu=e500mc -ffp-contract=off -msoft-float -c test.c
1.	<eof> parser at end of file
2.	Code generation
3.	Running pass 'Function Pass Manager' on module 'test.c'.
4.	Running pass 'PowerPC DAG->DAG Pattern Instruction Selection' on function '@__divtc3_test'
Stack dump without symbol names (ensure you have llvm-symbolizer in your PATH or set the environment var `LLVM_SYMBOLIZER_PATH` to point to it):
0  clang-18                 0x000000010215adb8 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) + 56
1  clang-18                 0x0000000102158ed8 llvm::sys::RunSignalHandlers() + 112
2  clang-18                 0x000000010215a388 llvm::sys::CleanupOnSignal(unsigned long) + 232
3  clang-18                 0x00000001020b26f4 CrashRecoverySignalHandler(int) + 156
4  libsystem_platform.dylib 0x0000000181a09a24 _sigtramp + 56
5  libsystem_pthread.dylib  0x00000001819d9cc0 pthread_kill + 288
6  libsystem_c.dylib        0x00000001818e5a40 abort + 180
7  libsystem_c.dylib        0x00000001818e4d30 err + 0
8  clang-18                 0x00000001052dbca4 (anonymous namespace)::PPCDAGToDAGISel::PostprocessISelDAG() (.cold.38) + 0
9  clang-18                 0x000000010074e888 (anonymous namespace)::PPCDAGToDAGISel::PostprocessISelDAG() + 4612
10 clang-18                 0x0000000103116470 llvm::SelectionDAGISel::DoInstructionSelection() + 1668
11 clang-18                 0x0000000103115420 llvm::SelectionDAGISel::CodeGenAndEmitDAG() + 5572
12 clang-18                 0x000000010311336c llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&) + 5332
13 clang-18                 0x0000000103110e98 llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&) + 1788
14 clang-18                 0x000000010074c294 (anonymous namespace)::PPCDAGToDAGISel::runOnMachineFunction(llvm::MachineFunction&) + 108
15 clang-18                 0x0000000101461a38 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) + 852
16 clang-18                 0x00000001018b51a8 llvm::FPPassManager::runOnFunction(llvm::Function&) + 1260
17 clang-18                 0x00000001018bc778 llvm::FPPassManager::runOnModule(llvm::Module&) + 60
18 clang-18                 0x00000001018b5a98 llvm::legacy::PassManagerImpl::run(llvm::Module&) + 1764
19 clang-18                 0x0000000102509a60 clang::EmitBackendOutput(clang::DiagnosticsEngine&, clang::HeaderSearchOptions const&, clang::CodeGenOptions const&, clang::TargetOptions const&, clang::LangOptions const&, llvm::StringRef, llvm::Module*, clang::BackendAction, llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>, std::__1::unique_ptr<llvm::raw_pwrite_stream, std::__1::default_delete<llvm::raw_pwrite_stream>>, clang::BackendConsumer*) + 3796
20 clang-18                 0x000000010288f5bc clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&) + 1440
21 clang-18                 0x0000000103cb66a0 clang::ParseAST(clang::Sema&, bool, bool) + 536
22 clang-18                 0x0000000102bf7048 clang::FrontendAction::Execute() + 112
23 clang-18                 0x0000000102b90b0c clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) + 852
24 clang-18                 0x0000000102c7e17c clang::ExecuteCompilerInvocation(clang::CompilerInstance*) + 504
25 clang-18                 0x00000001000785dc cc1_main(llvm::ArrayRef<char const*>, char const*, void*) + 3344
26 clang-18                 0x0000000100075dc0 ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&, llvm::ToolContext const&) + 1188
27 clang-18                 0x00000001029ef74c void llvm::function_ref<void ()>::callback_fn<clang::driver::CC1Command::Execute(llvm::ArrayRef<std::__1::optional<llvm::StringRef>>, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>*, bool*) const::$_1>(long) + 32
28 clang-18                 0x00000001020b2400 llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) + 176
29 clang-18                 0x00000001029ef10c clang::driver::CC1Command::Execute(llvm::ArrayRef<std::__1::optional<llvm::StringRef>>, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>*, bool*) const + 228
30 clang-18                 0x00000001029bcddc clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const + 536
31 clang-18                 0x00000001029bd140 clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::__1::pair<int, clang::driver::Command const*>>&, bool) const + 120
32 clang-18                 0x00000001029d5940 clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::__1::pair<int, clang::driver::Command const*>>&) + 336
clang: error: clang frontend command failed with exit code 134 (use -v to see invocation)
clang version 18.0.0git (https://github.com/llvm/llvm-project.git)
Target: powerpc-gnu-linux-eabi
Thread model: posix
********************

Also for this code:

_Bool mytest(long double a) { return __builtin_isfpclass(a, 100); }

@Ubsefor
Copy link
Author

Ubsefor commented Dec 27, 2023

It seems I got different failure message (maybe another bug)

I get the same failure message on your code example (with the same flags I used to compile mine), weird

Although, my clang version is 17.0.6, downloaded from github releases, compiled under Darwin 23.2.0 arm64

@vit9696
Copy link

vit9696 commented Dec 27, 2023

@spavloff, could you please comment on the matter?

@EugeneZelenko, this a bug in is either clang front-end or llvm powerpc backend (more likely), but not in the builtins.

@llvmbot
Copy link
Collaborator

llvmbot commented Dec 27, 2023

@llvm/issue-subscribers-backend-powerpc

Author: None (Ubsefor)

PowerPC DAG->DAG Pattern Instruction Selection fails to run on __divtc3 function (code example below) with PowerPC targets

After changes, applied in 696ea67

Broken after changes by 7d6c2e1

example of code (from divtc3.c):

long double _Complex __divtc3_test(long double __a, long double __b,
                                  long double __c, long double __d) {
  int __ilogbw = 0;
  long double __logbw =
      __builtin_logbl(__builtin_fmaxl(__builtin_fabsl(__c), __builtin_fabsl(__d)));
  if (__builtin_isfinite(__logbw)) {
    __ilogbw = (int)__logbw;
    __c = __builtin_scalbnl(__c, -__ilogbw);
    __d = __builtin_scalbnl(__d, -__ilogbw);
  }
  return 0;
}

Compile command:

clang -O3 -std=gnu99 -ffreestanding -fno-short-enums -nostdlib -target powerpc-gnu-linux-eabi -mcpu=e500mc -msoft-float -ffp-contract=off -v -c divtc3.c -o divtc3.o

Full compiler log:
<details>

clang -O3 -std=gnu99 -ffreestanding -fno-short-enums -nostdlib -target powerpc-gnu-linux-eabi -mcpu=e500mc -msoft-float -ffp-contract=off -v -I./crtextra -c src/llvm-project-17.0.6.src/compiler-rt/lib/builtins/divtc3.c -o divtc3.o
clang version 17.0.6
Target: powerpc-gnu-linux-eabi
Thread model: posix
InstalledDir: /bin
 (in-process)
 "/bin/clang-17" -cc1 -triple powerpc-gnu-linux-eabi -emit-obj -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name divtc3.c -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=none -fmath-errno -ffp-contract=off -fno-rounding-math -mconstructor-aliases -ffreestanding -target-cpu e500mc -target-feature -hard-float -msoft-float -mfloat-abi soft -debugger-tuning=gdb -target-linker-version 1022.1 -v -fcoverage-compilation-dir=./ -resource-dir /lib/clang/17 -I ./crtextra -internal-isystem /lib/clang/17/include/ppc_wrappers -internal-isystem /lib/clang/17/include -internal-isystem /usr/local/include -internal-externc-isystem /include -internal-externc-isystem /usr/include -O3 -std=gnu99 -fdebug-compilation-dir=./ -ferror-limit 19 -fno-signed-char -fgnuc-version=4.2.1 -fcolor-diagnostics -vectorize-loops -vectorize-slp -faddrsig -o divtc3.o -x c src/llvm-project-17.0.6.src/compiler-rt/lib/builtins/divtc3.c
clang -cc1 version 17.0.6 based upon LLVM 17.0.6 default target arm64-apple-darwin23.2.0
ignoring nonexistent directory "/include"
ignoring nonexistent directory "/usr/include"
#include "..." search starts here:
#include &lt;...&gt; search starts here:
 ./crtextra
 /lib/clang/17/include/ppc_wrappers
 /lib/clang/17/include
 /usr/local/include
End of search list.
fatal error: error in backend: Do not know how to soften the result of this operator!
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace, preprocessed source, and associated run script.
Stack dump:
0.	Program arguments: clang -O3 -std=gnu99 -ffreestanding -fno-short-enums -nostdlib -target powerpc-gnu-linux-eabi -mcpu=e500mc -msoft-float -ffp-contract=off -v -I./crtextra -c src/llvm-project-17.0.6.src/compiler-rt/lib/builtins/divtc3.c -o divtc3.o
1.	&lt;eof&gt; parser at end of file
2.	Code generation
3.	Running pass 'Function Pass Manager' on module 'src/llvm-project-17.0.6.src/compiler-rt/lib/builtins/divtc3.c'.
4.	Running pass 'PowerPC DAG-&gt;DAG Pattern Instruction Selection' on function '@<!-- -->__divtc3'
 #<!-- -->0 0x0000000105b03acc (/bin/clang-17+0x10121bacc)
 #<!-- -->1 0x0000000105b03508 (/bin/clang-17+0x10121b508)
 #<!-- -->2 0x0000000105a90bc8 (/bin/clang-17+0x1011a8bc8)
 #<!-- -->3 0x0000000105a90b78 (/bin/clang-17+0x1011a8b78)
 #<!-- -->4 0x0000000105b004c8 (/bin/clang-17+0x1012184c8)
 #<!-- -->5 0x00000001048eeb80 (/bin/clang-17+0x100006b80)
 #<!-- -->6 0x0000000105a96f74 (/bin/clang-17+0x1011aef74)
 #<!-- -->7 0x0000000105a96e48 (/bin/clang-17+0x1011aee48)
 #<!-- -->8 0x0000000106434ce8 (/bin/clang-17+0x101b4cce8)
 #<!-- -->9 0x000000010645bc4c (/bin/clang-17+0x101b73c4c)
#<!-- -->10 0x000000010645db70 (/bin/clang-17+0x101b75b70)
#<!-- -->11 0x00000001064fb6f4 (/bin/clang-17+0x101c136f4)
#<!-- -->12 0x00000001064fb3f8 (/bin/clang-17+0x101c133f8)
#<!-- -->13 0x00000001064f9ebc (/bin/clang-17+0x101c11ebc)
#<!-- -->14 0x0000000104ce6520 (/bin/clang-17+0x1003fe520)
#<!-- -->15 0x000000010532b75c (/bin/clang-17+0x100a4375c)
#<!-- -->16 0x00000001055c2768 (/bin/clang-17+0x100cda768)
#<!-- -->17 0x00000001055c5e98 (/bin/clang-17+0x100cdde98)
#<!-- -->18 0x00000001055c2b40 (/bin/clang-17+0x100cdab40)
#<!-- -->19 0x0000000105d48468 (/bin/clang-17+0x101460468)
#<!-- -->20 0x0000000105f8c378 (/bin/clang-17+0x1016a4378)
#<!-- -->21 0x0000000106bfdf90 (/bin/clang-17+0x102315f90)
#<!-- -->22 0x00000001061b76c4 (/bin/clang-17+0x1018cf6c4)
#<!-- -->23 0x0000000106170fb4 (/bin/clang-17+0x101888fb4)
#<!-- -->24 0x0000000106206914 (/bin/clang-17+0x10191e914)
#<!-- -->25 0x00000001048ee7c4 (/bin/clang-17+0x1000067c4)
#<!-- -->26 0x00000001048ec6e4 (/bin/clang-17+0x1000046e4)
#<!-- -->27 0x000000010606d9b0 (/bin/clang-17+0x1017859b0)
#<!-- -->28 0x0000000105a90b50 (/bin/clang-17+0x1011a8b50)
#<!-- -->29 0x000000010606d428 (/bin/clang-17+0x101785428)
#<!-- -->30 0x00000001060496e4 (/bin/clang-17+0x1017616e4)
#<!-- -->31 0x0000000106049800 (/bin/clang-17+0x101761800)
#<!-- -->32 0x0000000106058df0 (/bin/clang-17+0x101770df0)
#<!-- -->33 0x00000001048ec1a4 (/bin/clang-17+0x1000041a4)
#<!-- -->34 0x00000001048f5f74 (/bin/clang-17+0x10000df74)
#<!-- -->35 0x00000001814150e0
clang: error: clang frontend command failed with exit code 70 (use -v to see invocation)
clang version 17.0.6
Target: powerpc-gnu-linux-eabi
Thread model: posix
InstalledDir: /bin
clang: note: diagnostic msg:
********************

PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:
Preprocessed source(s) and associated run script(s) are located at:
clang: note: diagnostic msg: /tmp/divtc3-784c30.c
clang: note: diagnostic msg: /tmp/divtc3-784c30.sh
clang: note: diagnostic msg: Crash backtrace is located in
clang: note: diagnostic msg: /Users/USER/Library/Logs/DiagnosticReports/clang-17_&lt;YYYY-MM-DD-HHMMSS&gt;_&lt;hostname&gt;.crash
clang: note: diagnostic msg: (choose the .crash file that corresponds to your crash)
clang: note: diagnostic msg:

********************

Note: Shorter version of diagnostic files is attached above, some paths are trimmed
</details>

@spavloff
Copy link
Collaborator

The crash occurs during type legalization:

Legalizing node: t108: f64 = extract_element t98, Constant:i32<1>
Analyzing result type: f64
Soften float result 0: t108: f64 = extract_element t98, Constant:i32<1>

SoftenFloatResult #0: t108: f64 = extract_element t98, Constant:i32<1>

fatal error: error in backend: Do not know how to soften the result of this operator!

ToT version does not crash. The DAGs before type legalization is almost identical except the lines:

              t98: ppcf128 = bitcast t97
            t108: f64 = extract_element t98, Constant:i32<1>
          t109: i64 = bitcast t108
        t115: i64 = and t109, Constant:i64<9223372036854775807>

in clang-17, and:

          t119: i128 = and t97, Constant:i128<170141183460469231731687303715884105727>
        t120: ppcf128 = bitcast t119

in clang-18.
This code is originated from llvm.is_fpclass lowering, it clears sign bit in ppc128 value. Both variants look correct.

It looks like the crash is a result of some changes in PPC backend. Advice from PPC developers is necessary.

@thesamesam thesamesam added the crash Prefer [crash-on-valid] or [crash-on-invalid] label Dec 31, 2023
@ecnelises
Copy link
Member

This issue should exist for all targets with soft-float (although only PPC uses ppc_fp128). Since SoftenFloatRes_* guarantees soft-float enabled, we can implement a SoftFloatRes_EXTRACT_ELEMENT.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
crash Prefer [crash-on-valid] or [crash-on-invalid] llvm:SelectionDAG SelectionDAGISel as well
Projects
None yet
Development

Successfully merging a pull request may close this issue.

7 participants