diff options
author | Alexandre Oliva <aoliva@redhat.com> | 2012-10-02 19:58:37 +0000 |
---|---|---|
committer | Alexandre Oliva <aoliva@gcc.gnu.org> | 2012-10-02 19:58:37 +0000 |
commit | 75a5b7dd3341004a8e68dcdfa8c926f119a66a33 (patch) | |
tree | 884bab9f92cf8c65b4ba3b8887f5e1af42a22680 | |
parent | a91529c4eb62ef76365f45cd08287f6a91c76512 (diff) | |
download | gcc-75a5b7dd3341004a8e68dcdfa8c926f119a66a33.zip gcc-75a5b7dd3341004a8e68dcdfa8c926f119a66a33.tar.gz gcc-75a5b7dd3341004a8e68dcdfa8c926f119a66a33.tar.bz2 |
re PR debug/54177 (Segfault in cselib_lookup due to NULL_RTX passed from vt_add_function_parameter)
PR debug/54177
* var-tracking.c (vt_add_function_parameter): Bail if
var_lowpart fails.
From-SVN: r191999
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/var-tracking.c | 7 |
2 files changed, 12 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 4612f03..1cb0b5c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2012-10-02 Alexandre Oliva <aoliva@redhat.com> + + PR debug/54177 + * var-tracking.c (vt_add_function_parameter): Bail if + var_lowpart fails. + 2012-10-02 H.J. Lu <hongjiu.lu@intel.com> PR target/54741 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 |