From d13c6b70cbbd9b29e0dc776b6b0ae724cd286c9f Mon Sep 17 00:00:00 2001 From: Evgeny Gavrin Date: Fri, 13 Sep 2013 22:36:42 +0000 Subject: [PATCH] dwarf2out.c (should_emit_struct_debug): Add check for type_decl variable is not NULL. 2013-09-13 Evgeny Gavrin 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 --- gcc/ChangeLog | 5 +++ gcc/dwarf2out.c | 12 ++++--- gcc/testsuite/ChangeLog | 5 +++ gcc/testsuite/g++.dg/debug/dwarf2/omp-fesdr.C | 35 +++++++++++++++++++ gcc/testsuite/gcc.dg/debug/dwarf2/omp-fesdr.c | 35 +++++++++++++++++++ 5 files changed, 88 insertions(+), 4 deletions(-) create mode 100644 gcc/testsuite/g++.dg/debug/dwarf2/omp-fesdr.C create mode 100644 gcc/testsuite/gcc.dg/debug/dwarf2/omp-fesdr.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 6413fe37299..0224228f253 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2013-09-13 Evgeny Gavrin + + * dwarf2out.c (should_emit_struct_debug): Add check + for type_decl variable is not NULL. + 2013-09-13 Jacek Caban * config.gcc: Use new winnt-c.c target hooks diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c index 7bf739d154f..95049e4d184 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 179dfe279d3..aeff6d08b8a 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2013-09-13 Evgeny Gavrin + + * gcc.dg/debug/dwarf2/omp-fesdr.c: Add test. + * g++.dg/debug/dwarf2/omp-fesdr.C: Add test. + 2013-09-13 Jacek Caban * 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 00000000000..005acdf0865 --- /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 00000000000..005acdf0865 --- /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; +} -- 2.30.2