diff options
author | Christophe Lyon <christophe.lyon@linaro.org> | 2020-11-02 14:40:10 +0000 |
---|---|---|
committer | Christophe Lyon <christophe.lyon@linaro.org> | 2020-11-02 14:40:10 +0000 |
commit | 637aeb6b8da36a621cf076068498adc5322be069 (patch) | |
tree | a4ea4dd47a42902f893a1bbe0ef5adca2f25fc03 /libcpp/expr.c | |
parent | c7f49e0579329961c49ece7f9a048914bcc106d0 (diff) | |
download | gcc-637aeb6b8da36a621cf076068498adc5322be069.zip gcc-637aeb6b8da36a621cf076068498adc5322be069.tar.gz gcc-637aeb6b8da36a621cf076068498adc5322be069.tar.bz2 |
arm: Fix multiple inheritance thunks for thumb-1 with -mpure-code
When -mpure-code is used, we cannot load delta from code memory (like
we do without -mpure-code).
This patch builds the value of mi_delta into r3 with a series of
movs/adds/lsls.
We also do some cleanup by not emitting the function address and delta
via .word directives at the end of the thunk since we don't use them
with -mpure-code.
No need for new testcases, this bug was already identified by:
g++.dg/ipa/pr46287-3.C
g++.dg/ipa/pr46984.C
g++.dg/opt/thunk1.C
g++.dg/torture/pr46287.C
g++.dg/torture/pr45699.C
2020-11-02 Christophe Lyon <christophe.lyon@linaro.org>
gcc/
* config/arm/arm.c (arm_thumb1_mi_thunk): Build mi_delta in r3 and
do not emit function address and delta when -mpure-code is used.
Diffstat (limited to 'libcpp/expr.c')
0 files changed, 0 insertions, 0 deletions