diff options
author | meissner <meissner@138bc75d-0d04-0410-961f-82ee72b054a4> | 2019-10-15 23:13:28 +0000 |
---|---|---|
committer | meissner <meissner@138bc75d-0d04-0410-961f-82ee72b054a4> | 2019-10-15 23:13:28 +0000 |
commit | 1027a9a38e9b6973613cbf6cad1d912690f08d0d (patch) | |
tree | 79eeb234a53daaaf9d42e5b041360642eb2268ae /gcc | |
parent | 09b435e8a68dab65884b471eb22e93be4af3b61a (diff) |
Redo patch #3
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/ibm/pcrel-trunk@277020 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/config/rs6000/predicates.md | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/gcc/config/rs6000/predicates.md b/gcc/config/rs6000/predicates.md index 345d9c337af..5ef505bb1c4 100644 --- a/gcc/config/rs6000/predicates.md +++ b/gcc/config/rs6000/predicates.md @@ -932,6 +932,14 @@ return false; addr = XEXP (inner, 0); + + /* The LWA instruction uses the DS-form instruction format which requires + that the bottom two bits of the offset must be 0. The prefixed PLWA does + not have this restriction. While the actual load from memory is 32-bits, + we pass in DImode here to test for using a DS instruction. */ + if (address_is_prefixed (addr, DImode, NON_PREFIXED_DS)) + return true; + if (GET_CODE (addr) == PRE_INC || GET_CODE (addr) == PRE_DEC || (GET_CODE (addr) == PRE_MODIFY |