aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2020-06-04 16:26:36 +0100
committerAlex Coplan <alex.coplan@arm.com>2020-06-04 16:33:36 +0100
commitab56390384cd5168b548ff07e6f0c9c4d41420fb (patch)
tree3762fc509d08eb15184841a8ddd6d315bf7c73a8 /gcc
parent1980ffec48c6fa41396bea66366f2e591798e1e1 (diff)
downloadgcc-ab56390384cd5168b548ff07e6f0c9c4d41420fb.zip
gcc-ab56390384cd5168b548ff07e6f0c9c4d41420fb.tar.gz
gcc-ab56390384cd5168b548ff07e6f0c9c4d41420fb.tar.bz2
aarch64: PR target/95526: Fix gimplification of varargs
This patch fixes a latent bug exposed by eb72dc663e9070b281be83a80f6f838a3a878822 in the aarch64 backend that was causing wrong codegen and several testsuite failures. See the discussion on the bug for details. Bootstrapped and regtested on aarch64-linux-gnu. Cleaned up several failing tests and no new fails introduced. 2020-06-04 Richard Biener <rguenther@suse.de> gcc/: * config/aarch64/aarch64.c (aarch64_gimplify_va_arg_expr): Ensure that tmp_ha is marked TREE_ADDRESSABLE.
Diffstat (limited to 'gcc')
-rw-r--r--gcc/config/aarch64/aarch64.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c
index 6352d4f..97da607 100644
--- a/gcc/config/aarch64/aarch64.c
+++ b/gcc/config/aarch64/aarch64.c
@@ -16370,6 +16370,7 @@ aarch64_gimplify_va_arg_expr (tree valist, tree type, gimple_seq *pre_p,
}
/* *(field_ptr_t)&ha = *((field_ptr_t)vr_saved_area */
+ TREE_ADDRESSABLE (tmp_ha) = 1;
tmp_ha = build1 (ADDR_EXPR, field_ptr_t, tmp_ha);
addr = t;
t = fold_convert (field_ptr_t, addr);