Commit 65d5e454 by Jakub Jelinek Committed by Jakub Jelinek

re PR middle-end/83185 (ICE with -fsanitize=address in build_simple_mem_ref_loc, at tree.c:4696)

	PR middle-end/83185
	* tree.c (build_simple_mem_ref_loc): Handle
	get_addr_base_and_unit_offset returning a MEM_REF.

	* gcc.dg/asan/pr83185.c: New test.

From-SVN: r255229
parent cedd8ca5
2017-11-29 Jakub Jelinek <jakub@redhat.com> 2017-11-29 Jakub Jelinek <jakub@redhat.com>
PR middle-end/83185
* tree.c (build_simple_mem_ref_loc): Handle
get_addr_base_and_unit_offset returning a MEM_REF.
PR middle-end/80929 PR middle-end/80929
* rtlanal.c (seq_cost): For non-single_set insns try to use insn_cost. * rtlanal.c (seq_cost): For non-single_set insns try to use insn_cost.
2017-11-29 Jakub Jelinek <jakub@redhat.com> 2017-11-29 Jakub Jelinek <jakub@redhat.com>
PR middle-end/83185
* gcc.dg/asan/pr83185.c: New test.
PR target/80819 PR target/80819
* gcc.target/i386/pr80819-1.c: New test. * gcc.target/i386/pr80819-1.c: New test.
* gcc.target/i386/pr80819-2.c: New test. * gcc.target/i386/pr80819-2.c: New test.
......
/* PR middle-end/83185 */
/* { dg-do compile } */
#include <stdarg.h>
int bar (void);
void
foo (int i, ...)
{
va_list aps[bar()];
va_start (aps[4], i);
va_end (aps[4]);
}
...@@ -4692,7 +4692,13 @@ build_simple_mem_ref_loc (location_t loc, tree ptr) ...@@ -4692,7 +4692,13 @@ build_simple_mem_ref_loc (location_t loc, tree ptr)
{ {
ptr = get_addr_base_and_unit_offset (TREE_OPERAND (ptr, 0), &offset); ptr = get_addr_base_and_unit_offset (TREE_OPERAND (ptr, 0), &offset);
gcc_assert (ptr); gcc_assert (ptr);
ptr = build_fold_addr_expr (ptr); if (TREE_CODE (ptr) == MEM_REF)
{
offset += mem_ref_offset (ptr).to_short_addr ();
ptr = TREE_OPERAND (ptr, 0);
}
else
ptr = build_fold_addr_expr (ptr);
gcc_assert (is_gimple_reg (ptr) || is_gimple_min_invariant (ptr)); gcc_assert (is_gimple_reg (ptr) || is_gimple_min_invariant (ptr));
} }
tem = build2 (MEM_REF, TREE_TYPE (ptype), tem = build2 (MEM_REF, TREE_TYPE (ptype),
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment