aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorAlexandre Oliva <aoliva@redhat.com>2012-10-02 19:58:37 +0000
committerAlexandre Oliva <aoliva@gcc.gnu.org>2012-10-02 19:58:37 +0000
commit75a5b7dd3341004a8e68dcdfa8c926f119a66a33 (patch)
tree884bab9f92cf8c65b4ba3b8887f5e1af42a22680 /gcc
parenta91529c4eb62ef76365f45cd08287f6a91c76512 (diff)
downloadgcc-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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/var-tracking.c7
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