Add DWARF2_LINENO_DEBUGGING_INFO, and use it for nvptx
authorThomas Schwinge <thomas@codesourcery.com>
Fri, 14 Aug 2015 10:37:14 +0000 (12:37 +0200)
committerThomas Schwinge <tschwinge@gcc.gnu.org>
Fri, 14 Aug 2015 10:37:14 +0000 (12:37 +0200)
gcc/
* config/nvptx/nvptx.c (nvptx_option_override): Don't override
debug options.
* config/nvptx/nvptx.h (DWARF2_LINENO_DEBUGGING_INFO): Define.
(DWARF2_DEBUGGING_INFO): Don't define.
* debug.h (dwarf2_lineno_debug_hooks): Declare.
* toplev.c (process_options): Add a case for it.
* dwarf2out.c (dwarf2_lineno_debug_hooks): New variable.
(dwarf2out_init): Skip most initializations if
DWARF2_LINENO_DEBUGGING_INFO, but set cur_line_info_table in that
case.
* defaults.h (PREFERRED_DEBUGGING_TYPE): Also use DWARF2_DEBUG if
DWARF2_LINENO_DEBUGGING_INFO.
* opts.c (set_debug_level): Likewise.

Co-Authored-By: Bernd Schmidt <bernds@codesourcery.com>
From-SVN: r226890

gcc/ChangeLog
gcc/config/nvptx/nvptx.c
gcc/config/nvptx/nvptx.h
gcc/debug.h
gcc/defaults.h
gcc/dwarf2out.c
gcc/opts.c
gcc/toplev.c

index af5e73c6d59982cebe44c5cac4aabb292b0a238c..154c0778c536cd7f9dcc435afbc64675b066a1dd 100644 (file)
@@ -1,3 +1,20 @@
+2015-08-14  Thomas Schwinge  <thomas@codesourcery.com>
+           Bernd Schmidt  <bernds@codesourcery.com>
+
+       * config/nvptx/nvptx.c (nvptx_option_override): Don't override
+       debug options.
+       * config/nvptx/nvptx.h (DWARF2_LINENO_DEBUGGING_INFO): Define.
+       (DWARF2_DEBUGGING_INFO): Don't define.
+       * debug.h (dwarf2_lineno_debug_hooks): Declare.
+       * toplev.c (process_options): Add a case for it.
+       * dwarf2out.c (dwarf2_lineno_debug_hooks): New variable.
+       (dwarf2out_init): Skip most initializations if
+       DWARF2_LINENO_DEBUGGING_INFO, but set cur_line_info_table in that
+       case.
+       * defaults.h (PREFERRED_DEBUGGING_TYPE): Also use DWARF2_DEBUG if
+       DWARF2_LINENO_DEBUGGING_INFO.
+       * opts.c (set_debug_level): Likewise.
+
 2015-08-14  James Greenhalgh  <james.greenhalgh@arm.com>
 
        * config/arm/types.md (is_neon_type): Add missing types.
index 5d9b41fb2b66160f24c9df1ee4275da75ec278c7..a3569670d62615255ceb1b8cfc8d02d50fcc60b4 100644 (file)
@@ -103,8 +103,6 @@ nvptx_option_override (void)
   flag_toplevel_reorder = 1;
   /* Assumes that it will see only hard registers.  */
   flag_var_tracking = 0;
-  write_symbols = NO_DEBUG;
-  debug_info_level = DINFO_LEVEL_NONE;
 
   declared_fndecls_htab = hash_table<tree_hasher>::create_ggc (17);
   needed_fndecls_htab = hash_table<tree_hasher>::create_ggc (17);
index 9cb46cc0b8faebc93386bbf8471338a414d4124c..afe4fcdd361fbbd2ecdb758cf85f4bf0ab87bc73 100644 (file)
@@ -339,7 +339,7 @@ struct GTY(()) machine_function
 
 /* Misc.  */
 
-#define DWARF2_DEBUGGING_INFO 1
+#define DWARF2_LINENO_DEBUGGING_INFO 1
 
 #define CLZ_DEFINED_VALUE_AT_ZERO(MODE, VALUE) \
   ((VALUE) = GET_MODE_BITSIZE ((MODE)), 2)
index 269c4d83f171da31a124e771e7f2bb6f86775c7a..9784300d748b31f2bf0914dbc3d2bfb70723b8ab 100644 (file)
@@ -207,6 +207,7 @@ extern const struct gcc_debug_hooks dbx_debug_hooks;
 extern const struct gcc_debug_hooks sdb_debug_hooks;
 extern const struct gcc_debug_hooks xcoff_debug_hooks;
 extern const struct gcc_debug_hooks dwarf2_debug_hooks;
+extern const struct gcc_debug_hooks dwarf2_lineno_debug_hooks;
 extern const struct gcc_debug_hooks vmsdbg_debug_hooks;
 
 /* Dwarf2 frame information.  */
index 9d38ba18ff417d3e76413b1102fb7cc5a2a7b2cd..713ca077c79f8beea605aa23bfad26d769c3f2fa 100644 (file)
@@ -932,7 +932,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 #elif defined SDB_DEBUGGING_INFO
 #define PREFERRED_DEBUGGING_TYPE SDB_DEBUG
 
-#elif defined DWARF2_DEBUGGING_INFO
+#elif defined DWARF2_DEBUGGING_INFO || defined DWARF2_LINENO_DEBUGGING_INFO
 #define PREFERRED_DEBUGGING_TYPE DWARF2_DEBUG
 
 #elif defined VMS_DEBUGGING_INFO
index 2c7dc710daea60c1133751459e13683fb25c4a8b..92903f89638e633ed943f66f482c2d5ada810315 100644 (file)
@@ -2489,6 +2489,43 @@ const struct gcc_debug_hooks dwarf2_debug_hooks =
   1,                            /* start_end_main_source_file */
   TYPE_SYMTAB_IS_DIE            /* tree_type_symtab_field */
 };
+
+const struct gcc_debug_hooks dwarf2_lineno_debug_hooks =
+{
+  dwarf2out_init,
+  debug_nothing_charstar,
+  debug_nothing_void,
+  debug_nothing_void,
+  debug_nothing_int_charstar,
+  debug_nothing_int_charstar,
+  debug_nothing_int_charstar,
+  debug_nothing_int,
+  debug_nothing_int_int,                /* begin_block */
+  debug_nothing_int_int,                /* end_block */
+  debug_true_const_tree,                /* ignore_block */
+  dwarf2out_source_line,        /* source_line */
+  debug_nothing_int_charstar,           /* begin_prologue */
+  debug_nothing_int_charstar,           /* end_prologue */
+  debug_nothing_int_charstar,           /* begin_epilogue */
+  debug_nothing_int_charstar,           /* end_epilogue */
+  debug_nothing_tree,                   /* begin_function */
+  debug_nothing_int,                    /* end_function */
+  debug_nothing_tree,                   /* register_main_translation_unit */
+  debug_nothing_tree,                   /* function_decl */
+  debug_nothing_tree,                   /* early_global_decl */
+  debug_nothing_tree,                   /* late_global_decl */
+  debug_nothing_tree_int,               /* type_decl */
+  debug_nothing_tree_tree_tree_bool,    /* imported_module_or_decl */
+  debug_nothing_tree,                   /* deferred_inline_function */
+  debug_nothing_tree,                   /* outlining_inline_function */
+  debug_nothing_rtx_code_label,                 /* label */
+  debug_nothing_int,                    /* handle_pch */
+  debug_nothing_rtx_insn,               /* var_location */
+  debug_nothing_void,                    /* switch_text_section */
+  debug_nothing_tree_tree,              /* set_name */
+  0,                                     /* start_end_main_source_file */
+  TYPE_SYMTAB_IS_ADDRESS                 /* tree_type_symtab_field */
+};
 \f
 /* NOTE: In the comments in this file, many references are made to
    "Debugging Information Entries".  This term is abbreviated as `DIE'
@@ -23183,6 +23220,7 @@ dwarf2out_init (const char *filename ATTRIBUTE_UNUSED)
   /* Allocate the file_table.  */
   file_table = hash_table<dwarf_file_hasher>::create_ggc (50);
 
+#ifndef DWARF2_LINENO_DEBUGGING_INFO
   /* Allocate the decl_die_table.  */
   decl_die_table = hash_table<decl_die_hasher>::create_ggc (10);
 
@@ -23298,11 +23336,16 @@ dwarf2out_init (const char *filename ATTRIBUTE_UNUSED)
 
   switch_to_section (text_section);
   ASM_OUTPUT_LABEL (asm_out_file, text_section_label);
+#endif
 
   /* Make sure the line number table for .text always exists.  */
   text_section_line_info = new_line_info_table ();
   text_section_line_info->end_label = text_end_label;
 
+#ifdef DWARF2_LINENO_DEBUGGING_INFO
+  cur_line_info_table = text_section_line_info;
+#endif
+
   /* If front-ends already registered a main translation unit but we were not
      ready to perform the association, do this now.  */
   if (main_translation_unit != NULL_TREE)
index 468a802250ed755da7f0a433fbfc01a9ed5d85b5..9d5de96f3f360de8f9e0bf0f955978a149af432d 100644 (file)
@@ -2223,7 +2223,7 @@ set_debug_level (enum debug_info_type type, int extended, const char *arg,
 
          if (extended == 2)
            {
-#ifdef DWARF2_DEBUGGING_INFO
+#if defined DWARF2_DEBUGGING_INFO || defined DWARF2_LINENO_DEBUGGING_INFO
              opts->x_write_symbols = DWARF2_DEBUG;
 #elif defined DBX_DEBUGGING_INFO
              opts->x_write_symbols = DBX_DEBUG;
index 0b0c7f1da766737f1bff03b62f166a1194f8bbd0..d6efd0e7d17a6e700b3005b063b3bf36768d4f2d 100644 (file)
@@ -1481,6 +1481,10 @@ process_options (void)
 #ifdef VMS_DEBUGGING_INFO
   else if (write_symbols == VMS_DEBUG || write_symbols == VMS_AND_DWARF2_DEBUG)
     debug_hooks = &vmsdbg_debug_hooks;
+#endif
+#ifdef DWARF2_LINENO_DEBUGGING_INFO
+  else if (write_symbols == DWARF2_DEBUG)
+    debug_hooks = &dwarf2_lineno_debug_hooks;
 #endif
   else
     error ("target system does not support the %qs debug format",