cudcv@warwick.ac.uk (Rob McMahon) (09/26/88)
GCC 1.28, Gould PN6000 When find_reloads calls force_const_mem to change an integer constant into a memory reference, it uses the mode of the constant, which is usually VOIDmode, rather than the mode the instruction wants. As a result the memory reference points to the wrong part of the constant. This seems to fix the problem: RCS file: reload.c,v retrieving revision 1.9.1.2 diff -c -r1.9.1.2 reload.c *** /tmp/,RCSt1a03369 Sun Sep 25 19:28:12 1988 --- reload.c Sun Sep 25 00:55:19 1988 *************** *** 1539,1545 **** (enum reg_class) goal_alternative[i]) == NO_REGS)) { ! enum machine_mode mode = GET_MODE (recog_operand[i]); *recog_operand_loc[i] = recog_operand[i] = (GET_CODE (recog_operand[i]) == CONST_DOUBLE ? force_const_double_mem (recog_operand[i]) --- 1539,1545 ---- (enum reg_class) goal_alternative[i]) == NO_REGS)) { ! enum machine_mode mode = operand_mode[i]; *recog_operand_loc[i] = recog_operand[i] = (GET_CODE (recog_operand[i]) == CONST_DOUBLE ? force_const_double_mem (recog_operand[i]) Rob -- UUCP: ...!mcvax!ukc!warwick!cudcv PHONE: +44 203 523037 JANET: cudcv@uk.ac.warwick ARPA: cudcv@warwick.ac.uk Rob McMahon, Computing Services, Warwick University, Coventry CV4 7AL, England