aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/simplify.c
diff options
context:
space:
mode:
authorTobias Burnus <burnus@net-b.de>2010-09-28 21:51:38 +0200
committerTobias Burnus <burnus@gcc.gnu.org>2010-09-28 21:51:38 +0200
commit41804a5be02d8d811e5189a9cca9060f41cea765 (patch)
treef3feddbb7172dda121a8dcfbdba67d925fe2b5df /gcc/fortran/simplify.c
parent770a498aeea017024d45dded87022d3f05bb27c9 (diff)
downloadgcc-41804a5be02d8d811e5189a9cca9060f41cea765.zip
gcc-41804a5be02d8d811e5189a9cca9060f41cea765.tar.gz
gcc-41804a5be02d8d811e5189a9cca9060f41cea765.tar.bz2
re PR fortran/40569 (F2008: Support COMPILER_OPTIONS() / COMPILER_VERSION())
gcc/ 2010-09-28 Tobias Burnus <burnus@net-b.de> PR fortran/40569 PR fortran/40568 * toplev.h (save_decoded_options, save_decoded_options_count): New global variables. * toplev.c (save_decoded_options, save_decoded_options_count): export variables. gcc/fortran/ 2010-09-28 Tobias Burnus <burnus@net-b.de> PR fortran/40569 PR fortran/40568 * intrinsic.c (add_functions): Make compiler_version and compiler_options CLASS_INQUIRY. * gfortran.h (gfc_get_option_string): New prototype. * intrinsic.texi (COMPILER_VERSION, COMPILER_OPTIONS): Add documentation. (C_SIZEOF): Mark as inquiry function of ISO_C_BINDING. (ISO_FORTRAN_ENV): Refer to COMPILER_VERSION and COMPILER_OPTIONS. (ISO_C_BINDING): Refer to C_SIZEOF. * options.c (gfc_get_option_string): New function. * simplify.c (gfc_simplify_compiler_options): Use it. (gfc_simplify_compiler_version): Include compiler name. From-SVN: r164698
Diffstat (limited to 'gcc/fortran/simplify.c')
-rw-r--r--gcc/fortran/simplify.c20
1 files changed, 15 insertions, 5 deletions
diff --git a/gcc/fortran/simplify.c b/gcc/fortran/simplify.c
index 8748ecf..cdefcb5 100644
--- a/gcc/fortran/simplify.c
+++ b/gcc/fortran/simplify.c
@@ -6739,16 +6739,26 @@ gfc_convert_char_constant (gfc_expr *e, bt type ATTRIBUTE_UNUSED, int kind)
gfc_expr *
gfc_simplify_compiler_options (void)
{
- /* FIXME: PR40569 - return the proper compiler arguments. */
- return gfc_get_character_expr (gfc_default_character_kind,
- &gfc_current_locus, "", 0);
+ char *str;
+ gfc_expr *result;
+
+ str = gfc_get_option_string ();
+ result = gfc_get_character_expr (gfc_default_character_kind,
+ &gfc_current_locus, str, strlen (str));
+ gfc_free (str);
+ return result;
}
gfc_expr *
gfc_simplify_compiler_version (void)
{
+ char *buffer;
+ size_t len;
+
+ len = strlen ("GCC version ") + strlen (version_string) + 1;
+ buffer = (char*) alloca (len);
+ snprintf (buffer, len, "GCC version %s", version_string);
return gfc_get_character_expr (gfc_default_character_kind,
- &gfc_current_locus, version_string,
- strlen (version_string));
+ &gfc_current_locus, buffer, len);
}