aarch64: PR target/95526: Fix gimplification of varargs
authorRichard Biener <rguenther@suse.de>
Thu, 4 Jun 2020 15:26:36 +0000 (16:26 +0100)
committerAlex Coplan <alex.coplan@arm.com>
Thu, 4 Jun 2020 15:33:36 +0000 (16:33 +0100)
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.

gcc/config/aarch64/aarch64.c

index 6352d4ff78ad183d5e7de86e62b267803347ddfe..97da60762390db81df9cffaf316b909cd1609130 100644 (file)
@@ -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);