S/390: PR79904: Disallow reg + sym_ref literal pool addresses.
commit58ad9b54f93eddad347a8af5c6d297d246a57c10
authorkrebbel <krebbel@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 24 Mar 2017 13:52:30 +0000 (24 13:52 +0000)
committerkrebbel <krebbel@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 24 Mar 2017 13:52:30 +0000 (24 13:52 +0000)
treeb131b32e8a988e3abb690c01244ae7791152812e
parent476109c1da606a9711dd2ed00c46d341826d2100
S/390: PR79904: Disallow reg + sym_ref literal pool addresses.

We accept reg + sym_ref as valid address if sym_ref is a literal pool
reference knowing that it will be rewritten as r13 + reg + offset.
However, annotate_constant_pool_refs was never able to handle that.

With the patch only single sym_refs are accepted.

Regression tested on s390x.

2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>

PR target/79904
* config/s390/s390.c (s390_decompose_address): Reject reg +
sym_ref literal pool references.

gcc/testsuite/ChangeLog:

2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>

* gcc.dg/ubsan/pr79904-2.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@246443 138bc75d-0d04-0410-961f-82ee72b054a4
gcc/config/s390/s390.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/ubsan/pr79904-2.c [new file with mode: 0644]