summaryrefslogtreecommitdiff
path: root/gcc/config/aarch64
diff options
context:
space:
mode:
authorktkachov <ktkachov@138bc75d-0d04-0410-961f-82ee72b054a4>2013-11-07 11:44:04 +0000
committerktkachov <ktkachov@138bc75d-0d04-0410-961f-82ee72b054a4>2013-11-07 11:44:04 +0000
commitce071c3cdd9db5272dd1343957403e7963ff9d94 (patch)
tree0ea72cf5820d538b1090730f6873e404c61aa46a /gcc/config/aarch64
parentf5faab844106d746903455717a480387ae1f0083 (diff)
downloadgcc-ce071c3cdd9db5272dd1343957403e7963ff9d94.tar.gz
* config/aarch64/aarch64.c (aarch64_legitimize_reload_address):
Explain why plus_constant is not used. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@204507 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config/aarch64')
-rw-r--r--gcc/config/aarch64/aarch64.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c
index 30c8eb00805..8458cac34f2 100644
--- a/gcc/config/aarch64/aarch64.c
+++ b/gcc/config/aarch64/aarch64.c
@@ -4033,7 +4033,11 @@ aarch64_legitimize_reload_address (rtx *x_p,
cst = force_const_mem (xmode, cst);
/* Reload high part into base reg, leaving the low part
- in the mem instruction. */
+ in the mem instruction.
+ Note that replacing this gen_rtx_PLUS with plus_constant is
+ wrong in this case because we rely on the
+ (plus (plus reg c1) c2) structure being preserved so that
+ XEXP (*p, 0) in push_reload below uses the correct term. */
x = gen_rtx_PLUS (xmode,
gen_rtx_PLUS (xmode, XEXP (x, 0), cst),
GEN_INT (low));