aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEvgeny Gavrin <e.gavrin@samsung.com>2013-09-13 22:36:42 +0000
committerCary Coutant <ccoutant@gcc.gnu.org>2013-09-13 15:36:42 -0700
commitd13c6b70cbbd9b29e0dc776b6b0ae724cd286c9f (patch)
tree0e097fead708e49c8767b756bf9a39bffaa4f5a4
parent6e5e985e1e99e39513f9172845296e6aa7e1a9a7 (diff)
downloadgcc-d13c6b70cbbd9b29e0dc776b6b0ae724cd286c9f.zip
gcc-d13c6b70cbbd9b29e0dc776b6b0ae724cd286c9f.tar.gz
gcc-d13c6b70cbbd9b29e0dc776b6b0ae724cd286c9f.tar.bz2
dwarf2out.c (should_emit_struct_debug): Add check for type_decl variable is not NULL.
2013-09-13 Evgeny Gavrin <e.gavrin@samsung.com> gcc/ * dwarf2out.c (should_emit_struct_debug): Add check for type_decl variable is not NULL. gcc/testsuite * gcc.dg/debug/dwarf2/omp-fesdr.c: Add test. * g++.dg/debug/dwarf2/omp-fesdr.C: Add test. From-SVN: r202582
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/dwarf2out.c12
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/g++.dg/debug/dwarf2/omp-fesdr.C35
-rw-r--r--gcc/testsuite/gcc.dg/debug/dwarf2/omp-fesdr.c35
5 files changed, 88 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 6413fe3..0224228 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2013-09-13 Evgeny Gavrin <e.gavrin@samsung.com>
+
+ * dwarf2out.c (should_emit_struct_debug): Add check
+ for type_decl variable is not NULL.
+
2013-09-13 Jacek Caban <jacek@codeweavers.com>
* config.gcc: Use new winnt-c.c target hooks
diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c
index 7bf739d..95049e4 100644
--- a/gcc/dwarf2out.c
+++ b/gcc/dwarf2out.c
@@ -365,11 +365,15 @@ should_emit_struct_debug (tree type, enum debug_info_usage usage)
type_decl = TYPE_STUB_DECL (TYPE_MAIN_VARIANT (type));
- if (criterion == DINFO_STRUCT_FILE_SYS && DECL_IN_SYSTEM_HEADER (type_decl))
- return DUMP_GSTRUCT (type, usage, criterion, generic, false, true);
+ if (type_decl != NULL)
+ {
+ if (criterion == DINFO_STRUCT_FILE_SYS && DECL_IN_SYSTEM_HEADER (type_decl))
+ return DUMP_GSTRUCT (type, usage, criterion, generic, false, true);
+
+ if (matches_main_base (DECL_SOURCE_FILE (type_decl)))
+ return DUMP_GSTRUCT (type, usage, criterion, generic, true, true);
+ }
- if (matches_main_base (DECL_SOURCE_FILE (type_decl)))
- return DUMP_GSTRUCT (type, usage, criterion, generic, true, true);
return DUMP_GSTRUCT (type, usage, criterion, generic, false, false);
}
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 179dfe2..aeff6d0 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2013-09-13 Evgeny Gavrin <e.gavrin@samsung.com>
+
+ * gcc.dg/debug/dwarf2/omp-fesdr.c: Add test.
+ * g++.dg/debug/dwarf2/omp-fesdr.C: Add test.
+
2013-09-13 Jacek Caban <jacek@codeweavers.com>
* g++.dg/abi/main.C: Added implicit C linkage tests
diff --git a/gcc/testsuite/g++.dg/debug/dwarf2/omp-fesdr.C b/gcc/testsuite/g++.dg/debug/dwarf2/omp-fesdr.C
new file mode 100644
index 0000000..005acdf
--- /dev/null
+++ b/gcc/testsuite/g++.dg/debug/dwarf2/omp-fesdr.C
@@ -0,0 +1,35 @@
+/* { dg-do compile } */
+/* { dg-options "-g -fopenmp -gdwarf-2 -femit-struct-debug-reduced" } */
+
+struct aa
+{
+ int a;
+};
+
+int
+f7 (void)
+{
+ int v7i = 6, v7j = 7, v7k = 9, v7l = 0, v7n = 0, v7o = 1;
+
+ #pragma omp parallel
+ {
+ #pragma omp master
+ v7o++;
+ #pragma omp for private (v7i) firstprivate (v7k) reduction (+:v7l)
+ for (v7n = 0; v7n < 3; v7n++)
+ {
+ int v7m = v7j + v7k;
+ v7i = 8;
+ v7l++;
+ }
+ }
+
+ return v7i + v7j + v7k + v7l + v7n;
+}
+
+int
+main (void)
+{
+ f7 ();
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/debug/dwarf2/omp-fesdr.c b/gcc/testsuite/gcc.dg/debug/dwarf2/omp-fesdr.c
new file mode 100644
index 0000000..005acdf
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/debug/dwarf2/omp-fesdr.c
@@ -0,0 +1,35 @@
+/* { dg-do compile } */
+/* { dg-options "-g -fopenmp -gdwarf-2 -femit-struct-debug-reduced" } */
+
+struct aa
+{
+ int a;
+};
+
+int
+f7 (void)
+{
+ int v7i = 6, v7j = 7, v7k = 9, v7l = 0, v7n = 0, v7o = 1;
+
+ #pragma omp parallel
+ {
+ #pragma omp master
+ v7o++;
+ #pragma omp for private (v7i) firstprivate (v7k) reduction (+:v7l)
+ for (v7n = 0; v7n < 3; v7n++)
+ {
+ int v7m = v7j + v7k;
+ v7i = 8;
+ v7l++;
+ }
+ }
+
+ return v7i + v7j + v7k + v7l + v7n;
+}
+
+int
+main (void)
+{
+ f7 ();
+ return 0;
+}