Commit e47aebb3 by Jakub Jelinek Committed by Jakub Jelinek

re PR debug/84252 (ICE in get_tracked_reg_offset when building libvpx for aarch64)

	PR debug/84252
	* var-tracking.c (vt_add_function_parameter): Punt for non-onepart
	PARALLEL incoming that failed vt_get_decl_and_offset check.

	* gcc.target/aarch64/pr84252.c: New test.

From-SVN: r257514
parent ebd06e5c
2018-02-09 Jakub Jelinek <jakub@redhat.com> 2018-02-09 Jakub Jelinek <jakub@redhat.com>
PR debug/84252
* var-tracking.c (vt_add_function_parameter): Punt for non-onepart
PARALLEL incoming that failed vt_get_decl_and_offset check.
PR middle-end/84237 PR middle-end/84237
* output.h (bss_initializer_p): Add NAMED argument, defaulted to false. * output.h (bss_initializer_p): Add NAMED argument, defaulted to false.
* varasm.c (bss_initializer_p): Add NAMED argument, if true, ignore * varasm.c (bss_initializer_p): Add NAMED argument, if true, ignore
......
2018-02-09 Jakub Jelinek <jakub@redhat.com> 2018-02-09 Jakub Jelinek <jakub@redhat.com>
PR debug/84252
* gcc.target/aarch64/pr84252.c: New test.
PR middle-end/84237 PR middle-end/84237
* gcc.dg/pr84237.c: New test. * gcc.dg/pr84237.c: New test.
......
/* PR debug/84252 */
/* { dg-do compile } */
/* { dg-options "-g -O2" } */
struct S { __Int32x4_t b[2]; };
void
foo (struct S x)
{
}
...@@ -9653,6 +9653,7 @@ vt_add_function_parameter (tree parm) ...@@ -9653,6 +9653,7 @@ vt_add_function_parameter (tree parm)
poly_int64 offset; poly_int64 offset;
dataflow_set *out; dataflow_set *out;
decl_or_value dv; decl_or_value dv;
bool incoming_ok = true;
if (TREE_CODE (parm) != PARM_DECL) if (TREE_CODE (parm) != PARM_DECL)
return; return;
...@@ -9743,6 +9744,7 @@ vt_add_function_parameter (tree parm) ...@@ -9743,6 +9744,7 @@ vt_add_function_parameter (tree parm)
if (!vt_get_decl_and_offset (incoming, &decl, &offset)) if (!vt_get_decl_and_offset (incoming, &decl, &offset))
{ {
incoming_ok = false;
if (MEM_P (incoming)) if (MEM_P (incoming))
{ {
/* This means argument is passed by invisible reference. */ /* This means argument is passed by invisible reference. */
...@@ -9861,6 +9863,10 @@ vt_add_function_parameter (tree parm) ...@@ -9861,6 +9863,10 @@ vt_add_function_parameter (tree parm)
{ {
int i; int i;
/* The following code relies on vt_get_decl_and_offset returning true for
incoming, which might not be always the case. */
if (!incoming_ok)
return;
for (i = 0; i < XVECLEN (incoming, 0); i++) for (i = 0; i < XVECLEN (incoming, 0); i++)
{ {
rtx reg = XEXP (XVECEXP (incoming, 0, i), 0); rtx reg = XEXP (XVECEXP (incoming, 0, i), 0);
......
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