Deal with var_lowpart failure in function parameters.
From: Alexandre Oliva <aoliva@redhat.com>
for gcc/ChangeLog
* var-tracking.c (vt_add_function_parameter): Bail if
var_lowpart fails.
---
gcc/var-tracking.c | 7 ++++++-
1 files changed, 6 insertions(+), 1 deletions(-)
@@ -9428,6 +9428,7 @@ vt_add_function_parameter (tree parm)
&& GET_CODE (incoming) != PARALLEL)
{
cselib_val *val;
+ rtx lowpart;
/* ??? We shouldn't ever hit this, but it may happen because
arguments passed by invisible reference aren't dealt with
@@ -9436,7 +9437,11 @@ vt_add_function_parameter (tree parm)
if (offset)
return;
- val = cselib_lookup_from_insn (var_lowpart (mode, incoming), mode, true,
+ lowpart = var_lowpart (mode, incoming);
+ if (!lowpart)
+ return;
+
+ val = cselib_lookup_from_insn (lowpart, mode, true,
VOIDmode, get_insns ());
/* ??? Float-typed values in memory are not handled by