Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
devel:gcc
gcc43
s390-symref-preferredreload
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File s390-symref-preferredreload of Package gcc43
Index: gcc/config/s390/s390.c =================================================================== *** gcc/config/s390/s390.c.orig --- gcc/config/s390/s390.c *************** s390_preferred_reload_class (rtx op, enu *** 2859,2870 **** it is most likely being used as an address, so prefer ADDR_REGS. If 'class' is not a superset of ADDR_REGS, e.g. FP_REGS, reject this reload. */ - case PLUS: case LABEL_REF: case SYMBOL_REF: case CONST: if (reg_class_subset_p (ADDR_REGS, class)) ! return ADDR_REGS; else return NO_REGS; --- 2859,2874 ---- it is most likely being used as an address, so prefer ADDR_REGS. If 'class' is not a superset of ADDR_REGS, e.g. FP_REGS, reject this reload. */ case LABEL_REF: case SYMBOL_REF: case CONST: + if (!legitimate_reload_constant_p (op)) + return NO_REGS; + /* fallthrough */ + case PLUS: + /* load address will be used. */ if (reg_class_subset_p (ADDR_REGS, class)) ! return ADDR_REGS; else return NO_REGS; *************** s390_secondary_reload (bool in_p, rtx x, *** 2980,2991 **** if (TARGET_Z10) { /* On z10 several optimizer steps may generate larl operands with an odd addend. */ if (in_p ! && s390_symref_operand_p (x, NULL, NULL) && mode == Pmode ! && !s390_check_symref_alignment (x, 2)) sri->icode = ((mode == DImode) ? CODE_FOR_reloaddi_larl_odd_addend_z10 : CODE_FOR_reloadsi_larl_odd_addend_z10); --- 2984,2999 ---- if (TARGET_Z10) { + HOST_WIDE_INT offset; + rtx symref; + /* On z10 several optimizer steps may generate larl operands with an odd addend. */ if (in_p ! && s390_symref_operand_p (x, &symref, &offset) && mode == Pmode ! && !SYMBOL_REF_ALIGN1_P (symref) ! && (offset & 1) == 1) sri->icode = ((mode == DImode) ? CODE_FOR_reloaddi_larl_odd_addend_z10 : CODE_FOR_reloadsi_larl_odd_addend_z10);
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