summaryrefslogtreecommitdiff
path: root/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0216-2011-05-04-Steven-G.-Kargl-kargl-gcc.gnu.org.patch
diff options
context:
space:
mode:
authorKhem Raj <raj.khem@gmail.com>2011-06-12 20:56:57 -0700
committerRichard Purdie <richard.purdie@linuxfoundation.org>2011-06-14 14:37:31 +0100
commit3968f33b6542cf20cf63cf49bfbc033bd2486295 (patch)
tree2bdb5e2f692a3bd3ecadbf2b4c7dc9f54485c737 /meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0216-2011-05-04-Steven-G.-Kargl-kargl-gcc.gnu.org.patch
parent022ca1d1357caafdfe23aa9ab82f90ba89b6942b (diff)
downloadopenembedded-core-3968f33b6542cf20cf63cf49bfbc033bd2486295.tar.gz
openembedded-core-3968f33b6542cf20cf63cf49bfbc033bd2486295.tar.bz2
openembedded-core-3968f33b6542cf20cf63cf49bfbc033bd2486295.tar.xz
openembedded-core-3968f33b6542cf20cf63cf49bfbc033bd2486295.zip
gcc-4.6.0: Bring in patches from FSF 4.6 branch
This brings in new patches from 4.6 release branch updates the comment section of existing branch to not contain patch numbers. Tested build on qemu for arm ppc mips x86 and x86_64 Signed-off-by: Khem Raj <raj.khem@gmail.com>
Diffstat (limited to 'meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0216-2011-05-04-Steven-G.-Kargl-kargl-gcc.gnu.org.patch')
-rw-r--r--meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0216-2011-05-04-Steven-G.-Kargl-kargl-gcc.gnu.org.patch189
1 files changed, 189 insertions, 0 deletions
diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0216-2011-05-04-Steven-G.-Kargl-kargl-gcc.gnu.org.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0216-2011-05-04-Steven-G.-Kargl-kargl-gcc.gnu.org.patch
new file mode 100644
index 000000000..2cae794bb
--- /dev/null
+++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0216-2011-05-04-Steven-G.-Kargl-kargl-gcc.gnu.org.patch
@@ -0,0 +1,189 @@
+From 4eae6ccb843f9ac74bd928fab5247ae8e79e0d0f Mon Sep 17 00:00:00 2001
+From: kargl <kargl@138bc75d-0d04-0410-961f-82ee72b054a4>
+Date: Wed, 4 May 2011 19:18:01 +0000
+Subject: [PATCH] 2011-05-04 Steven G. Kargl <kargl@gcc.gnu.org>
+
+ PR fortran/48720
+ * gfortran.texi: Document the 'Q' exponent-letter extension.
+ * invoke.texi: Document -Wreal-q-constant.
+ * lang.opt: Add -Wreal-q-constant option.
+ * gfortran.h: Add warn_real_q_constant to option struct.
+ * primary.c (match_real_constant): Use it. Accept 'Q' as
+ exponent-letter for REAL(16) real-literal-constant with a
+ fallback to REAL(10) or error if REAL(10) is not available.
+ * options.c (gfc_init_options, set_Wall) Set it.
+ (gfc_handle_option): Handle new option.
+
+
+git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@173392 138bc75d-0d04-0410-961f-82ee72b054a4
+
+index b64fa20..165bd2f 100644
+--- a/gcc/fortran/gfortran.h
++++ b/gcc/fortran/gfortran.h
+@@ -2190,6 +2190,7 @@ typedef struct
+ int warn_character_truncation;
+ int warn_array_temp;
+ int warn_align_commons;
++ int warn_real_q_constant;
+ int warn_unused_dummy_argument;
+ int max_errors;
+
+diff --git a/gcc/fortran/gfortran.texi b/gcc/fortran/gfortran.texi
+index 2f63bbb..88676cd 100644
+--- a/gcc/fortran/gfortran.texi
++++ b/gcc/fortran/gfortran.texi
+@@ -1237,6 +1237,7 @@ without warning.
+ * Missing period in FORMAT specifications::
+ * I/O item lists::
+ * BOZ literal constants::
++* @code{Q} exponent-letter::
+ * Real array indices::
+ * Unary operators::
+ * Implicitly convert LOGICAL and INTEGER values::
+@@ -1427,6 +1428,18 @@ To support legacy codes, GNU Fortran allows the input item list
+ of the @code{READ} statement, and the output item lists of the
+ @code{WRITE} and @code{PRINT} statements, to start with a comma.
+
++@node @code{Q} exponent-letter
++@subsection @code{Q} exponent-letter
++@cindex @code{Q} exponent-letter
++
++GNU Fortran accepts real literal constants with an exponent-letter
++of @code{Q}, for example, @code{1.23Q45}. The constant is interpreted
++as a @code{REAL(16)} entity on targets that suppports this type. If
++the target does not support @code{REAL(16)} but has a @code{REAL(10)}
++type, then the real-literal-constant will be interpreted as a
++@code{REAL(10)} entity. In the absence of @code{REAL(16)} and
++@code{REAL(10)}, an error will occur.
++
+ @node BOZ literal constants
+ @subsection BOZ literal constants
+ @cindex BOZ literal constants
+diff --git a/gcc/fortran/invoke.texi b/gcc/fortran/invoke.texi
+index 22245c9..9a286c0 100644
+--- a/gcc/fortran/invoke.texi
++++ b/gcc/fortran/invoke.texi
+@@ -692,7 +692,7 @@ we recommend avoiding and that we believe are easy to avoid.
+ This currently includes @option{-Waliasing}, @option{-Wampersand},
+ @option{-Wconversion}, @option{-Wsurprising}, @option{-Wintrinsics-std},
+ @option{-Wno-tabs}, @option{-Wintrinsic-shadow}, @option{-Wline-truncation},
+-and @option{-Wunused}.
++@option{-Wreal-q-constant} and @option{-Wunused}.
+
+ @item -Waliasing
+ @opindex @code{Waliasing}
+@@ -780,6 +780,12 @@ it as @code{EXTERNAL} procedure because of this. @option{-fall-intrinsics} can
+ be used to never trigger this behavior and always link to the intrinsic
+ regardless of the selected standard.
+
++@item -Wreal-q-constant
++@opindex @code{Wreal-q-constant}
++@cindex warnings, @code{q} exponent-letter
++Produce a warning if a real-literal-constant contains a @code{q}
++exponent-letter.
++
+ @item -Wsurprising
+ @opindex @code{Wsurprising}
+ @cindex warnings, suspicious code
+diff --git a/gcc/fortran/lang.opt b/gcc/fortran/lang.opt
+index 69b3144..02fbaeb 100644
+--- a/gcc/fortran/lang.opt
++++ b/gcc/fortran/lang.opt
+@@ -238,6 +238,10 @@ Wintrinsics-std
+ Fortran Warning
+ Warn on intrinsics not part of the selected standard
+
++Wreal-q-constant
++Fortran Warning
++Warn about real-literal-constants with 'q' exponent-letter
++
+ Wreturn-type
+ Fortran Warning
+ ; Documented in C
+diff --git a/gcc/fortran/options.c b/gcc/fortran/options.c
+index c116103..7073388 100644
+--- a/gcc/fortran/options.c
++++ b/gcc/fortran/options.c
+@@ -107,6 +107,7 @@ gfc_init_options (unsigned int decoded_options_count,
+ gfc_option.warn_intrinsic_shadow = 0;
+ gfc_option.warn_intrinsics_std = 0;
+ gfc_option.warn_align_commons = 1;
++ gfc_option.warn_real_q_constant = 0;
+ gfc_option.warn_unused_dummy_argument = 0;
+ gfc_option.max_errors = 25;
+
+@@ -445,6 +446,7 @@ set_Wall (int setting)
+ gfc_option.warn_intrinsic_shadow = setting;
+ gfc_option.warn_intrinsics_std = setting;
+ gfc_option.warn_character_truncation = setting;
++ gfc_option.warn_real_q_constant = setting;
+ gfc_option.warn_unused_dummy_argument = setting;
+
+ warn_unused = setting;
+@@ -643,6 +645,10 @@ gfc_handle_option (size_t scode, const char *arg, int value,
+ gfc_option.warn_align_commons = value;
+ break;
+
++ case OPT_Wreal_q_constant:
++ gfc_option.warn_real_q_constant = value;
++ break;
++
+ case OPT_Wunused_dummy_argument:
+ gfc_option.warn_unused_dummy_argument = value;
+ break;
+diff --git a/gcc/fortran/primary.c b/gcc/fortran/primary.c
+index 4cda7a1..22cfbc2 100644
+--- a/gcc/fortran/primary.c
++++ b/gcc/fortran/primary.c
+@@ -541,6 +541,17 @@ match_real_constant (gfc_expr **result, int signflag)
+ goto done;
+ exp_char = c;
+
++
++ if (c == 'q')
++ {
++ if (gfc_notify_std (GFC_STD_GNU, "Extension: exponent-letter 'q' in "
++ "real-literal-constant at %C") == FAILURE)
++ return MATCH_ERROR;
++ else if (gfc_option.warn_real_q_constant)
++ gfc_warning("Extension: exponent-letter 'q' in real-literal-constant "
++ "at %C");
++ }
++
+ /* Scan exponent. */
+ c = gfc_next_ascii_char ();
+ count++;
+@@ -616,6 +627,30 @@ done:
+ kind = gfc_default_double_kind;
+ break;
+
++ case 'q':
++ if (kind != -2)
++ {
++ gfc_error ("Real number at %C has a 'q' exponent and an explicit "
++ "kind");
++ goto cleanup;
++ }
++
++ /* The maximum possible real kind type parameter is 16. First, try
++ that for the kind, then fallback to trying kind=10 (Intel 80 bit)
++ extended precision. If neither value works, just given up. */
++ kind = 16;
++ if (gfc_validate_kind (BT_REAL, kind, true) < 0)
++ {
++ kind = 10;
++ if (gfc_validate_kind (BT_REAL, kind, true) < 0)
++ {
++ gfc_error ("Invalid exponent-letter 'q' in "
++ "real-literal-constant at %C");
++ goto cleanup;
++ }
++ }
++ break;
++
+ default:
+ if (kind == -2)
+ kind = gfc_default_real_kind;
+--
+1.7.0.4
+