diff options
author | Tobias Burnus <burnus@net-b.de> | 2010-09-28 21:51:38 +0200 |
---|---|---|
committer | Tobias Burnus <burnus@gcc.gnu.org> | 2010-09-28 21:51:38 +0200 |
commit | 41804a5be02d8d811e5189a9cca9060f41cea765 (patch) | |
tree | f3feddbb7172dda121a8dcfbdba67d925fe2b5df /gcc/fortran/simplify.c | |
parent | 770a498aeea017024d45dded87022d3f05bb27c9 (diff) | |
download | gcc-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.c | 20 |
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); } |