aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/simplify.c
diff options
context:
space:
mode:
authorMark Eggleston <mark.eggleston@codethink.com>2019-11-08 14:28:57 +0000
committerMark Eggleston <markeggleston@gcc.gnu.org>2019-11-08 14:28:57 +0000
commit2afeb1ca38dbb7c8708272452417426e46b4d6ed (patch)
tree64a5d856971870bc05da3d569128a278bcffa3a5 /gcc/fortran/simplify.c
parent4e9d58d16767b1bc686f0c4b3bd2da25dc71e8f3 (diff)
downloadgcc-2afeb1ca38dbb7c8708272452417426e46b4d6ed.zip
gcc-2afeb1ca38dbb7c8708272452417426e46b4d6ed.tar.gz
gcc-2afeb1ca38dbb7c8708272452417426e46b4d6ed.tar.bz2
Allow CHARACTER literals in assignments and data statements.
Allows character literals to used to assign values to non-character variables in the same way that Hollerith constants are used. In addition character literals can be used in data statements just like Hollerith constants. Warnings of such use are output to discourage this usage as it is a non-standard legacy feature and must be explicitly enabled. Enabled by -fdec and -fdec-char-conversions. Co-Authored-By: Jim MacArthur <jim.macarthur@codethink.co.uk> From-SVN: r277975
Diffstat (limited to 'gcc/fortran/simplify.c')
-rw-r--r--gcc/fortran/simplify.c29
1 files changed, 25 insertions, 4 deletions
diff --git a/gcc/fortran/simplify.c b/gcc/fortran/simplify.c
index fa5aefe..2eb1943 100644
--- a/gcc/fortran/simplify.c
+++ b/gcc/fortran/simplify.c
@@ -8522,10 +8522,31 @@ gfc_convert_constant (gfc_expr *e, bt type, int kind)
break;
case BT_CHARACTER:
- if (type == BT_CHARACTER)
- f = gfc_character2character;
- else
- goto oops;
+ switch (type)
+ {
+ case BT_INTEGER:
+ f = gfc_character2int;
+ break;
+
+ case BT_REAL:
+ f = gfc_character2real;
+ break;
+
+ case BT_COMPLEX:
+ f = gfc_character2complex;
+ break;
+
+ case BT_CHARACTER:
+ f = gfc_character2character;
+ break;
+
+ case BT_LOGICAL:
+ f = gfc_character2logical;
+ break;
+
+ default:
+ goto oops;
+ }
break;
default: