From patchwork Tue Oct 2 18:56:58 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [PR54177] Deal with var_lowpart failure in function parameters Date: Tue, 02 Oct 2012 08:56:58 -0000 From: Alexandre Oliva X-Patchwork-Id: 188618 Message-Id: To: gcc-patches@gcc.gnu.org Uros has already taken care of the main patch for the problem, but I feel it's appropriate to protect vt_add_function_parameter should val_lowpart actually return NULL. I'm checking this in as obvious. Regstrapped on x86_64-linux-gnu and i686-linux-gnu. Deal with var_lowpart failure in function parameters. From: Alexandre Oliva 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(-) diff --git a/gcc/var-tracking.c b/gcc/var-tracking.c index 9f5bc12..bbd2f4b 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