[Bug target/78362] [7 Regression] ICE: RTL check: expected code 'reg', have 'subreg' in rhs_regno, at rtl.h:1804 during libgomp build
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78362 ktkachov at gcc dot gnu.org changed: What|Removed |Added Status|ASSIGNED|RESOLVED Resolution|--- |FIXED --- Comment #5 from ktkachov at gcc dot gnu.org --- Fixed.
[Bug target/78362] [7 Regression] ICE: RTL check: expected code 'reg', have 'subreg' in rhs_regno, at rtl.h:1804 during libgomp build
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78362 --- Comment #4 from ktkachov at gcc dot gnu.org --- Author: ktkachov Date: Wed Nov 30 12:18:47 2016 New Revision: 243011 URL: https://gcc.gnu.org/viewcvs?rev=243011=gcc=rev Log: [AArch64] PR target/78362: Make sure to only take REGNO of a register PR target/78362 * config/aarch64/aarch64.md (add3): Extract inner expression from a subreg in operands[1] and don't call REGNO on a non-reg expression when deciding to force operands[2] into a reg. * gcc.c-torture/compile/pr78362.c: New test. Added: trunk/gcc/testsuite/gcc.c-torture/compile/pr78362.c Modified: trunk/gcc/ChangeLog trunk/gcc/config/aarch64/aarch64.md trunk/gcc/testsuite/ChangeLog
[Bug target/78362] [7 Regression] ICE: RTL check: expected code 'reg', have 'subreg' in rhs_regno, at rtl.h:1804 during libgomp build
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78362 Jakub Jelinek changed: What|Removed |Added CC||jakub at gcc dot gnu.org --- Comment #3 from Jakub Jelinek --- Any progress on this? if (!aarch64_plus_immediate (operands[2], mode) && can_create_pseudo_p () && !REGNO_PTR_FRAME_P (REGNO (operands[1]))) is indeed wrong, because register_operand allows not just REG, but also SUBREG of either REG, or MEM (last case only before reload). I bet for SUBREG with SUBREG_REG being a REG you want to use REGNO_PTR_FRAME_P similarly on the SUBREG_REG, for SUBREG of MEM I think the final regno is unlikely going to be REGNO_PTR_FRAME_P. So: rtx op1 = operands[1]; if (GET_CODE (op1) == SUBREG) op1 = SUBREG_REG (op1); if (!aarch64_plus_immediate (operands[2], mode) && can_create_pseudo_p () && (!REG_P (op1) || !REGNO_PTR_FRAME_P (REGNO (op1))) ?
[Bug target/78362] [7 Regression] ICE: RTL check: expected code 'reg', have 'subreg' in rhs_regno, at rtl.h:1804 during libgomp build
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78362 ktkachov at gcc dot gnu.org changed: What|Removed |Added Status|NEW |ASSIGNED Assignee|unassigned at gcc dot gnu.org |ktkachov at gcc dot gnu.org --- Comment #2 from ktkachov at gcc dot gnu.org --- Testing a patch.
[Bug target/78362] [7 Regression] ICE: RTL check: expected code 'reg', have 'subreg' in rhs_regno, at rtl.h:1804 during libgomp build
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78362 ktkachov at gcc dot gnu.org changed: What|Removed |Added Status|UNCONFIRMED |NEW Last reconfirmed||2016-11-15 CC||ktkachov at gcc dot gnu.org Target Milestone|--- |7.0 Ever confirmed|0 |1 --- Comment #1 from ktkachov at gcc dot gnu.org --- Confirmed while trying to build an RTL checking cross compiler