aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2015-02-04 23:38:48 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2015-02-04 23:38:48 +0100
commitde3aebffe98c425f6368c44d32e72450139176fa (patch)
treefc831ba012d14081b0a59fc329cfc207bc7d16aa
parenta6bc87d334fa5eed69acda9813cbf369dcdf9cf2 (diff)
downloadgcc-de3aebffe98c425f6368c44d32e72450139176fa.zip
gcc-de3aebffe98c425f6368c44d32e72450139176fa.tar.gz
gcc-de3aebffe98c425f6368c44d32e72450139176fa.tar.bz2
dwarf2.h (enum dwarf_source_language): Add DW_LANG_Fortran03 and DW_LANG_Fortran08.
include/ * dwarf2.h (enum dwarf_source_language): Add DW_LANG_Fortran03 and DW_LANG_Fortran08. gcc/ * dwarf2out.c (is_fortran): Also return true for DW_LANG_Fortran03 or DW_LANG_Fortran08. (lower_bound_default): Return 1 for DW_LANG_Fortran03 or DW_LANG_Fortran08. (gen_compile_unit_die): Handle "GNU Fortran2003" and "GNU Fortran2008" language strings. * dbxout.c (get_lang_number): Use lang_GNU_Fortran. * langhooks.h (lang_GNU_Fortran): New prototype. * langhooks.c (lang_GNU_Fortran): New function. * config/rs6000/rs6000.c (rs6000_output_function_epilogue): Use lang_GNU_Fortran. gcc/fortran/ * options.c: Include langhooks.h. (gfc_post_options): Change lang_hooks.name based on selected -std= mode. From-SVN: r220422
-rw-r--r--gcc/ChangeLog14
-rw-r--r--gcc/config/rs6000/rs6000.c2
-rw-r--r--gcc/dbxout.c2
-rw-r--r--gcc/dwarf2out.c23
-rw-r--r--gcc/fortran/ChangeLog6
-rw-r--r--gcc/fortran/options.c6
-rw-r--r--gcc/langhooks.c8
-rw-r--r--gcc/langhooks.h1
-rw-r--r--include/ChangeLog5
-rw-r--r--include/dwarf2.h2
10 files changed, 63 insertions, 6 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 9554bcd..b90fc40 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,17 @@
+2015-02-04 Jakub Jelinek <jakub@redhat.com>
+
+ * dwarf2out.c (is_fortran): Also return true for DW_LANG_Fortran03
+ or DW_LANG_Fortran08.
+ (lower_bound_default): Return 1 for DW_LANG_Fortran03 or
+ DW_LANG_Fortran08.
+ (gen_compile_unit_die): Handle "GNU Fortran2003" and
+ "GNU Fortran2008" language strings.
+ * dbxout.c (get_lang_number): Use lang_GNU_Fortran.
+ * langhooks.h (lang_GNU_Fortran): New prototype.
+ * langhooks.c (lang_GNU_Fortran): New function.
+ * config/rs6000/rs6000.c (rs6000_output_function_epilogue): Use
+ lang_GNU_Fortran.
+
2015-02-04 Eric Botcazou <ebotcazou@adacore.com>
* config/sparc/sparc.c (RTX_OK_FOR_OFFSET_P): Fix off-by-one error.
diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c
index 3c853dc..356955a 100644
--- a/gcc/config/rs6000/rs6000.c
+++ b/gcc/config/rs6000/rs6000.c
@@ -25537,7 +25537,7 @@ rs6000_output_function_epilogue (FILE *file,
|| ! strcmp (language_string, "libgccjit"))
i = 0;
else if (! strcmp (language_string, "GNU F77")
- || ! strcmp (language_string, "GNU Fortran"))
+ || lang_GNU_Fortran ())
i = 1;
else if (! strcmp (language_string, "GNU Pascal"))
i = 2;
diff --git a/gcc/dbxout.c b/gcc/dbxout.c
index c756f2e..758c1c4 100644
--- a/gcc/dbxout.c
+++ b/gcc/dbxout.c
@@ -967,7 +967,7 @@ get_lang_number (void)
return N_SO_CC;
else if (strcmp (language_string, "GNU F77") == 0)
return N_SO_FORTRAN;
- else if (strcmp (language_string, "GNU Fortran") == 0)
+ else if (lang_GNU_Fortran ())
return N_SO_FORTRAN90; /* CHECKME */
else if (strcmp (language_string, "GNU Pascal") == 0)
return N_SO_PASCAL;
diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c
index d9b8c42..db82710 100644
--- a/gcc/dwarf2out.c
+++ b/gcc/dwarf2out.c
@@ -4736,7 +4736,9 @@ is_fortran (void)
return (lang == DW_LANG_Fortran77
|| lang == DW_LANG_Fortran90
- || lang == DW_LANG_Fortran95);
+ || lang == DW_LANG_Fortran95
+ || lang == DW_LANG_Fortran03
+ || lang == DW_LANG_Fortran08);
}
/* Return TRUE if the language is Ada. */
@@ -16725,6 +16727,8 @@ lower_bound_default (void)
case DW_LANG_Fortran77:
case DW_LANG_Fortran90:
case DW_LANG_Fortran95:
+ case DW_LANG_Fortran03:
+ case DW_LANG_Fortran08:
return 1;
case DW_LANG_UPC:
case DW_LANG_D:
@@ -19786,8 +19790,17 @@ gen_compile_unit_die (const char *filename)
{
if (strcmp (language_string, "GNU Ada") == 0)
language = DW_LANG_Ada95;
- else if (strcmp (language_string, "GNU Fortran") == 0)
- language = DW_LANG_Fortran95;
+ else if (strncmp (language_string, "GNU Fortran", 11) == 0)
+ {
+ language = DW_LANG_Fortran95;
+ if (dwarf_version >= 5 /* || !dwarf_strict */)
+ {
+ if (strcmp (language_string, "GNU Fortran2003") == 0)
+ language = DW_LANG_Fortran03;
+ else if (strcmp (language_string, "GNU Fortran2008") == 0)
+ language = DW_LANG_Fortran08;
+ }
+ }
else if (strcmp (language_string, "GNU Java") == 0)
language = DW_LANG_Java;
else if (strcmp (language_string, "GNU Objective-C") == 0)
@@ -19801,7 +19814,7 @@ gen_compile_unit_die (const char *filename)
}
}
/* Use a degraded Fortran setting in strict DWARF2 so is_fortran works. */
- else if (strcmp (language_string, "GNU Fortran") == 0)
+ else if (strncmp (language_string, "GNU Fortran", 11) == 0)
language = DW_LANG_Fortran90;
add_AT_unsigned (die, DW_AT_language, language);
@@ -19811,6 +19824,8 @@ gen_compile_unit_die (const char *filename)
case DW_LANG_Fortran77:
case DW_LANG_Fortran90:
case DW_LANG_Fortran95:
+ case DW_LANG_Fortran03:
+ case DW_LANG_Fortran08:
/* Fortran has case insensitive identifiers and the front-end
lowercases everything. */
add_AT_unsigned (die, DW_AT_identifier_case, DW_ID_down_case);
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 8b4e687..35504e3 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,9 @@
+2015-02-04 Jakub Jelinek <jakub@redhat.com>
+
+ * options.c: Include langhooks.h.
+ (gfc_post_options): Change lang_hooks.name based on
+ selected -std= mode.
+
2015-02-03 Steven G. Kargl <kargl@gcc.gnu.org>
* intrinsic.texi (CO_ASSOCIATED): c_prt_1 should be c_ptr_1.
diff --git a/gcc/fortran/options.c b/gcc/fortran/options.c
index 60473dd..1262ccc 100644
--- a/gcc/fortran/options.c
+++ b/gcc/fortran/options.c
@@ -43,6 +43,7 @@ along with GCC; see the file COPYING3. If not see
#include "cpp.h"
#include "diagnostic.h" /* For global_dc. */
#include "tm.h"
+#include "langhooks.h"
gfc_option_t gfc_option;
@@ -398,6 +399,11 @@ gfc_post_options (const char **pfilename)
gfc_cpp_post_options ();
+ if (gfc_option.allow_std & GFC_STD_F2008)
+ lang_hooks.name = "GNU Fortran2008";
+ else if (gfc_option.allow_std & GFC_STD_F2003)
+ lang_hooks.name = "GNU Fortran2003";
+
return gfc_cpp_preprocess_only ();
}
diff --git a/gcc/langhooks.c b/gcc/langhooks.c
index f68c81c..74f8351 100644
--- a/gcc/langhooks.c
+++ b/gcc/langhooks.c
@@ -731,3 +731,11 @@ lang_GNU_CXX (void)
{
return strncmp (lang_hooks.name, "GNU C++", 7) == 0;
}
+
+/* Returns true if the current lang_hooks represents the GNU Fortran frontend. */
+
+bool
+lang_GNU_Fortran (void)
+{
+ return strncmp (lang_hooks.name, "GNU Fortran", 11) == 0;
+}
diff --git a/gcc/langhooks.h b/gcc/langhooks.h
index 17c903f..4039e8f 100644
--- a/gcc/langhooks.h
+++ b/gcc/langhooks.h
@@ -509,5 +509,6 @@ extern tree add_builtin_type (const char *name, tree type);
extern bool lang_GNU_C (void);
extern bool lang_GNU_CXX (void);
+extern bool lang_GNU_Fortran (void);
#endif /* GCC_LANG_HOOKS_H */
diff --git a/include/ChangeLog b/include/ChangeLog
index 0917d94..4f455c0 100644
--- a/include/ChangeLog
+++ b/include/ChangeLog
@@ -1,3 +1,8 @@
+2015-02-04 Jakub Jelinek <jakub@redhat.com>
+
+ * dwarf2.h (enum dwarf_source_language): Add DW_LANG_Fortran03
+ and DW_LANG_Fortran08.
+
2015-01-15 Thomas Schwinge <thomas@codesourcery.com>
Julian Brown <julian@codesourcery.com>
James Norris <jnorris@codesourcery.com>
diff --git a/include/dwarf2.h b/include/dwarf2.h
index ca440dd..e05955c 100644
--- a/include/dwarf2.h
+++ b/include/dwarf2.h
@@ -312,6 +312,8 @@ enum dwarf_source_language
DW_LANG_C_plus_plus_11 = 0x001a, /* dwarf5.20141029.pdf DRAFT */
DW_LANG_C11 = 0x001d,
DW_LANG_C_plus_plus_14 = 0x0021,
+ DW_LANG_Fortran03 = 0x0022,
+ DW_LANG_Fortran08 = 0x0023,
DW_LANG_lo_user = 0x8000, /* Implementation-defined range start. */
DW_LANG_hi_user = 0xffff, /* Implementation-defined range start. */