Shifting by more than the size of a SUBREG_REG doesn't work, so we either need to disable splits if an input is paradoxical, or else we need to generate a clean temporary for intermediate results. Jakub wrote the first version of this patch, so gets primary credit for it. gcc/ PR target/91635 * config/riscv/riscv.md (zero_extendsidi2, zero_extendhi<GPR:mode>2, extend<SHORT:mode><SUPERQI:mode>2): Don't split if paradoxical_subreg_p (operands[0]). (*lshrsi3_zero_extend_3+1, *lshrsi3_zero_extend_3+2): Add clobber and use as intermediate value. gcc/testsuite/ PR target/91635 * gcc.c-torture/execute/pr91635.c: New test. * gcc.target/riscv/shift-shift-4.c: New test. * gcc.target/riscv/shift-shift-5.c: New test. Co-Authored-By: Jim Wilson <jimw@sifive.com> From-SVN: r275444
| Name |
Last commit
|
Last update |
|---|---|---|
| .. | ||
| arch-1.c | Loading commit data... | |
| arch-2.c | Loading commit data... | |
| arch-3.c | Loading commit data... | |
| arch-4.c | Loading commit data... | |
| attribute-1.c | Loading commit data... | |
| attribute-10.c | Loading commit data... | |
| attribute-2.c | Loading commit data... | |
| attribute-3.c | Loading commit data... | |
| attribute-4.c | Loading commit data... | |
| attribute-5.c | Loading commit data... | |
| attribute-6.c | Loading commit data... | |
| attribute-7.c | Loading commit data... | |
| attribute-8.c | Loading commit data... | |
| attribute-9.c | Loading commit data... | |
| flattened-struct-abi-1.c | Loading commit data... | |
| flattened-struct-abi-2.c | Loading commit data... | |
| interrupt-1.c | Loading commit data... | |
| interrupt-2.c | Loading commit data... | |
| interrupt-3.c | Loading commit data... | |
| interrupt-4.c | Loading commit data... | |
| interrupt-5.c | Loading commit data... | |
| interrupt-conflict-mode.c | Loading commit data... | |
| interrupt-debug.c | Loading commit data... | |
| interrupt-mmode.c | Loading commit data... | |
| interrupt-smode.c | Loading commit data... | |
| interrupt-umode.c | Loading commit data... | |
| li.c | Loading commit data... | |
| load-immediate.c | Loading commit data... | |
| losum-overflow.c | Loading commit data... | |
| pr84660.c | Loading commit data... | |
| pr91441.c | Loading commit data... | |
| predef-1.c | Loading commit data... | |
| predef-2.c | Loading commit data... | |
| predef-3.c | Loading commit data... | |
| predef-4.c | Loading commit data... | |
| predef-5.c | Loading commit data... | |
| predef-6.c | Loading commit data... | |
| predef-7.c | Loading commit data... | |
| predef-8.c | Loading commit data... | |
| promote-type-for-libcall.c | Loading commit data... | |
| riscv.exp | Loading commit data... | |
| save-restore-1.c | Loading commit data... | |
| shift-and-1.c | Loading commit data... | |
| shift-and-2.c | Loading commit data... | |
| shift-shift-1.c | Loading commit data... | |
| shift-shift-2.c | Loading commit data... | |
| shift-shift-3.c | Loading commit data... | |
| shift-shift-4.c | Loading commit data... | |
| shift-shift-5.c | Loading commit data... | |
| switch-qi.c | Loading commit data... | |
| switch-si.c | Loading commit data... | |
| weak-1.c | Loading commit data... | |
| zero-extend-1.c | Loading commit data... | |
| zero-extend-2.c | Loading commit data... | |
| zero-extend-3.c | Loading commit data... | |
| zero-extend-4.c | Loading commit data... |