aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/cfgexpand.cc4
-rw-r--r--gcc/testsuite/gcc.dg/pr105630.c22
2 files changed, 26 insertions, 0 deletions
diff --git a/gcc/cfgexpand.cc b/gcc/cfgexpand.cc
index 49b9182..bb33c1b 100644
--- a/gcc/cfgexpand.cc
+++ b/gcc/cfgexpand.cc
@@ -4575,6 +4575,10 @@ expand_debug_expr (tree exp)
|| SYMBOL_REF_DECL (XEXP (op0, 0)) != exp)
return NULL;
}
+ else if (VAR_P (exp)
+ && is_global_var (exp)
+ && symtab_node::get (exp) == NULL)
+ return NULL;
else
op0 = copy_rtx (op0);
diff --git a/gcc/testsuite/gcc.dg/pr105630.c b/gcc/testsuite/gcc.dg/pr105630.c
new file mode 100644
index 0000000..c39ca7d
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr105630.c
@@ -0,0 +1,22 @@
+/* PR debug/105630 */
+/* { dg-do compile { target pthread } } */
+/* { dg-options "-O1 -ftree-parallelize-loops=2 -fcompare-debug" } */
+
+int m;
+static int n;
+
+void
+foo (void)
+{
+ int *arr[] = { &n, &n, &n };
+ int unused = n;
+
+ m = 0;
+}
+
+void
+bar (int *arr, int i)
+{
+ while (i < 1)
+ arr[i++] = 1;
+}