Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
DISCONTINUED:openSUSE:11.2
gcc41
nov415378.diff
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File nov415378.diff of Package gcc41
Index: gcc/testsuite/gcc.c-torture/compile/20080805-1.c =================================================================== *** /dev/null 1970-01-01 00:00:00.000000000 +0000 --- gcc/testsuite/gcc.c-torture/compile/20080805-1.c 2008-08-06 08:43:04.000000000 +0200 *************** *** 0 **** --- 1,33 ---- + int gl2; + typedef __SIZE_TYPE__ size_t; + + extern void *memcpy (void *dest, const void *src, size_t n); + + void + f1 () + { + int i2; + unsigned char bf[64 * 1024 + 4]; + + for (i2 = 0; i2 < 3; i2++) + { + unsigned char *p2 = bf; + unsigned char *p3 = ((void *) 0); + unsigned short ctf2; + + p2 += sizeof (short); + + for (ctf2 = 0; ctf2 < 3; ctf2++) + { + if (ctf2 == 1) + { + unsigned short of = p2 - bf - 6; + unsigned short *ofp = (unsigned short *) &of; + memcpy (p3, ofp, sizeof (short)); + } + + if (gl2 == 1) + p2 += 3; + } + } + } Index: gcc/reload.c =================================================================== *** gcc/reload.c.orig 2008-08-06 08:42:35.000000000 +0200 --- gcc/reload.c 2008-08-06 08:47:48.000000000 +0200 *************** find_reloads (rtx insn, int replace, int *** 3824,3870 **** ? RELOAD_FOR_INSN : RELOAD_OTHER); } ! /* Any constants that aren't allowed and can't be reloaded ! into registers are here changed into memory references. */ ! for (i = 0; i < noperands; i++) ! if (! goal_alternative_win[i] ! && CONST_POOL_OK_P (recog_data.operand[i]) ! && ((PREFERRED_RELOAD_CLASS (recog_data.operand[i], ! (enum reg_class) goal_alternative[i]) ! == NO_REGS) ! || no_input_reloads) ! && operand_mode[i] != VOIDmode) ! { ! substed_operand[i] = recog_data.operand[i] ! = find_reloads_toplev (force_const_mem (operand_mode[i], ! recog_data.operand[i]), ! i, address_type[i], ind_levels, 0, insn, ! NULL); ! if (alternative_allows_memconst (recog_data.constraints[i], goal_alternative_number)) ! goal_alternative_win[i] = 1; ! } ! ! /* Likewise any invalid constants appearing as operand of a PLUS ! that is to be reloaded. */ ! for (i = 0; i < noperands; i++) ! if (! goal_alternative_win[i] ! && GET_CODE (recog_data.operand[i]) == PLUS ! && CONST_POOL_OK_P (XEXP (recog_data.operand[i], 1)) ! && (PREFERRED_RELOAD_CLASS (XEXP (recog_data.operand[i], 1), ! (enum reg_class) goal_alternative[i]) ! == NO_REGS) ! && operand_mode[i] != VOIDmode) ! { ! rtx tem = force_const_mem (operand_mode[i], ! XEXP (recog_data.operand[i], 1)); ! tem = gen_rtx_PLUS (operand_mode[i], ! XEXP (recog_data.operand[i], 0), tem); ! ! substed_operand[i] = recog_data.operand[i] ! = find_reloads_toplev (tem, i, address_type[i], ! ind_levels, 0, insn, NULL); ! } /* Record the values of the earlyclobber operands for the caller. */ if (goal_earlyclobber) --- 3824,3885 ---- ? RELOAD_FOR_INSN : RELOAD_OTHER); } ! /* Any constants that aren't allowed and can't be reloaded ! into registers are here changed into memory references. */ ! for (i = 0; i < noperands; i++) ! if (! goal_alternative_win[i]) ! { ! rtx op = recog_data.operand[i]; ! rtx subreg = NULL_RTX; ! rtx plus = NULL_RTX; ! enum machine_mode mode = operand_mode[i]; ! ! /* Reloads of SUBREGs of CONSTANT RTXs are handled later in ! push_reload so we have to let them pass here. */ ! if (GET_CODE (op) == SUBREG) ! { ! subreg = op; ! op = SUBREG_REG (op); ! mode = GET_MODE (op); ! } ! ! if (GET_CODE (op) == PLUS) ! { ! plus = op; ! op = XEXP (op, 1); ! } ! ! if (CONST_POOL_OK_P (op) ! && ((PREFERRED_RELOAD_CLASS (op, ! (enum reg_class) goal_alternative[i]) ! == NO_REGS) ! || no_input_reloads) ! && mode != VOIDmode) ! { ! int this_address_reloaded; ! rtx tem = force_const_mem (mode, op); ! ! /* If we stripped a SUBREG or a PLUS above add it back. */ ! if (plus != NULL_RTX) ! tem = gen_rtx_PLUS (mode, XEXP (plus, 0), tem); ! ! if (subreg != NULL_RTX) ! tem = gen_rtx_SUBREG (operand_mode[i], tem, SUBREG_BYTE (subreg)); ! ! this_address_reloaded = 0; ! substed_operand[i] = recog_data.operand[i] ! = find_reloads_toplev (tem, i, address_type[i], ind_levels, ! 0, insn, &this_address_reloaded); ! ! /* If the alternative accepts constant pool refs directly ! there will be no reload needed at all. */ ! if (plus == NULL_RTX ! && subreg == NULL_RTX ! && alternative_allows_memconst (recog_data.constraints[i], goal_alternative_number)) ! goal_alternative_win[i] = 1; ! } ! } /* Record the values of the earlyclobber operands for the caller. */ if (goal_earlyclobber)
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor