summaryrefslogtreecommitdiff
path: root/gcc/c-family/c-opts.c
diff options
context:
space:
mode:
authormark <mark@138bc75d-0d04-0410-961f-82ee72b054a4>2014-11-21 16:00:06 +0000
committermark <mark@138bc75d-0d04-0410-961f-82ee72b054a4>2014-11-21 16:00:06 +0000
commit3a4a2292e079def50a96321ec2fb7faadcc6b8f1 (patch)
treec8584e5b3baab5f7a57b97d1119bfefc9b0fe7da /gcc/c-family/c-opts.c
parent741c191bb152e02fccc82db724d2f8480d71fa1e (diff)
downloadgcc-3a4a2292e079def50a96321ec2fb7faadcc6b8f1.tar.gz
PR debug/38757 gcc does not emit DW_LANG_C99.
For C and C++ add the language standard version in use to lang_hooks.name. Change users of lang_hook.name to check with new functions lang_GNU_C or lang_GNU_CXX. In dwarf2out.c output the DW_LANG_C version from the lang_hooks.name and merge any LTO TRANSLATION_UNIT_LANGUAGE found. Adds two testcases to dwarf2.exp to check the right DWARF DW_AT_language is set on the compile_unit depending on the -std=c89 or -std=c99 setting. gcc/c-family/ChangeLog PR debug/38757 * c-opts.c (set_std_c89): Set lang_hooks.name. (set_std_c99): Likewise. (set_std_c11): Likewise. (set_std_cxx98): Likewise. (set_std_cxx11): Likewise. (set_std_cxx14): Likewise. (set_std_cxx1z): Likewise. gcc/ChangeLog PR debug/38757 * config/avr/avr-c.c (avr_cpu_cpp_builtins): Use lang_GNU_C. * config/darwin.c (darwin_file_end): Use lang_GNU_CXX. (darwin_override_options): Likewise. * config/ia64/ia64.c (ia64_struct_retval_addr_is_first_parm_p): Likewise. * config/rs6000/rs6000.c (rs6000_output_function_epilogue): Likewise. * dbxout.c (get_lang_number): Likewise. (dbxout_type): Likewise. (dbxout_symbol_location): Likewise. * dwarf2out.c (add_prototyped_attribute): Add DW_AT_prototype also for DW_LANG_{C,C99,ObjC}. (highest_c_language): New function. (gen_compile_unit_die): Call highest_c_language to merge LTO TRANSLATION_UNIT_LANGUAGE. Use strncmp language_string to determine if DW_LANG_C99 or DW_LANG_C89 should be returned. * fold-const.c (fold_cond_expr_with_comparison): Use lang_GNU_CXX. * langhooks.h (struct lang_hooks): Add version comment to name. (lang_GNU_C): New function declaration. (lang_GNU_CXX): Likewise. * langhooks.c (lang_GNU_C): New function. (lang_GNU_CXX): Likewise. * vmsdbgout.c (vmsdbgout_init): Use lang_GNU_C and lang_GNU_CXX. gcc/testsuite/ChangeLog PR debug/38757 * gcc.dg/debug/dwarf2/lang-c89.c: New test. * gcc.dg/debug/dwarf2/lang-c99.c: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@217934 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/c-family/c-opts.c')
-rw-r--r--gcc/c-family/c-opts.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/gcc/c-family/c-opts.c b/gcc/c-family/c-opts.c
index 000fdd2bd52..08a36f03c8c 100644
--- a/gcc/c-family/c-opts.c
+++ b/gcc/c-family/c-opts.c
@@ -1450,6 +1450,7 @@ set_std_c89 (int c94, int iso)
flag_isoc94 = c94;
flag_isoc99 = 0;
flag_isoc11 = 0;
+ lang_hooks.name = "GNU C89";
}
/* Set the C 99 standard (without GNU extensions if ISO). */
@@ -1463,6 +1464,7 @@ set_std_c99 (int iso)
flag_isoc11 = 0;
flag_isoc99 = 1;
flag_isoc94 = 1;
+ lang_hooks.name = "GNU C99";
}
/* Set the C 11 standard (without GNU extensions if ISO). */
@@ -1476,6 +1478,7 @@ set_std_c11 (int iso)
flag_isoc11 = 1;
flag_isoc99 = 1;
flag_isoc94 = 1;
+ lang_hooks.name = "GNU C11";
}
/* Set the C++ 98 standard (without GNU extensions if ISO). */
@@ -1487,6 +1490,7 @@ set_std_cxx98 (int iso)
flag_no_nonansi_builtin = iso;
flag_iso = iso;
cxx_dialect = cxx98;
+ lang_hooks.name = "GNU C++98";
}
/* Set the C++ 2011 standard (without GNU extensions if ISO). */
@@ -1501,6 +1505,7 @@ set_std_cxx11 (int iso)
flag_isoc94 = 1;
flag_isoc99 = 1;
cxx_dialect = cxx11;
+ lang_hooks.name = "GNU C++11";
}
/* Set the C++ 2014 draft standard (without GNU extensions if ISO). */
@@ -1515,6 +1520,7 @@ set_std_cxx14 (int iso)
flag_isoc94 = 1;
flag_isoc99 = 1;
cxx_dialect = cxx14;
+ lang_hooks.name = "GNU C++14";
}
/* Set the C++ 201z draft standard (without GNU extensions if ISO). */
@@ -1530,6 +1536,7 @@ set_std_cxx1z (int iso)
flag_isoc99 = 1;
flag_isoc11 = 1;
cxx_dialect = cxx1z;
+ lang_hooks.name = "GNU C++14"; /* Pretend C++14 till standarization. */
}
/* Args to -d specify what to dump. Silently ignore