diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 4612f032fa7..1cb0b5c87c1 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2012-10-02 Alexandre Oliva + + PR debug/54177 + * var-tracking.c (vt_add_function_parameter): Bail if + var_lowpart fails. + 2012-10-02 H.J. Lu PR target/54741 diff --git a/gcc/var-tracking.c b/gcc/var-tracking.c index 9f5bc126114..bbd2f4b6923 100644 --- a/gcc/var-tracking.c +++ b/gcc/var-tracking.c @@ -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