aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCraig Burley <burley@gnu.org>1998-06-03 14:12:26 +0000
committerDave Love <fx@gcc.gnu.org>1998-06-03 14:12:26 +0000
commit6a047254ef2ce9c0952ff7e2020dc29d86227d43 (patch)
treedbe3e691d991f722e478aee162854f9bad0be783
parentf5470689a761487ff8e93d4854de75fbcf78bf9d (diff)
downloadgcc-6a047254ef2ce9c0952ff7e2020dc29d86227d43.zip
gcc-6a047254ef2ce9c0952ff7e2020dc29d86227d43.tar.gz
gcc-6a047254ef2ce9c0952ff7e2020dc29d86227d43.tar.bz2
(ffecom_expr_): Fix D**I and Z**I cases to not convert (DOUBLE PRECISION) D and (DOUBLE COMPLEX) Z to INTEGER.
(ffecom_expr_): Fix D**I and Z**I cases to not convert (DOUBLE PRECISION) D and (DOUBLE COMPLEX) Z to INTEGER. (This is dead code here anyway.) From-SVN: r20211
-rw-r--r--gcc/f/com.c29
1 files changed, 22 insertions, 7 deletions
diff --git a/gcc/f/com.c b/gcc/f/com.c
index 9d4e9d6..286d0c7 100644
--- a/gcc/f/com.c
+++ b/gcc/f/com.c
@@ -3086,7 +3086,6 @@ ffecom_expr_ (ffebld expr, tree dest_tree, ffebld dest,
return item;
}
- ltkt = FFEINFO_kindtypeINTEGER1;
rtkt = FFEINFO_kindtypeINTEGER1;
switch (ffeinfo_basictype (ffebld_info (left)))
{
@@ -3101,33 +3100,49 @@ ffecom_expr_ (ffebld expr, tree dest_tree, ffebld dest,
rtkt = FFEINFO_kindtypeINTEGER4;
}
else
- code = FFECOM_gfrtPOW_II;
+ {
+ code = FFECOM_gfrtPOW_II;
+ ltkt = FFEINFO_kindtypeINTEGER1;
+ }
break;
case FFEINFO_basictypeREAL:
if (ffeinfo_kindtype (ffebld_info (left))
== FFEINFO_kindtypeREAL1)
- code = FFECOM_gfrtPOW_RI;
+ {
+ code = FFECOM_gfrtPOW_RI;
+ ltkt = FFEINFO_kindtypeREAL1;
+ }
else
- code = FFECOM_gfrtPOW_DI;
+ {
+ code = FFECOM_gfrtPOW_DI;
+ ltkt = FFEINFO_kindtypeREAL2;
+ }
break;
case FFEINFO_basictypeCOMPLEX:
if (ffeinfo_kindtype (ffebld_info (left))
== FFEINFO_kindtypeREAL1)
- code = FFECOM_gfrtPOW_CI; /* Overlapping result okay. */
+ {
+ code = FFECOM_gfrtPOW_CI; /* Overlapping result okay. */
+ ltkt = FFEINFO_kindtypeREAL1;
+ }
else
- code = FFECOM_gfrtPOW_ZI; /* Overlapping result okay. */
+ {
+ code = FFECOM_gfrtPOW_ZI; /* Overlapping result okay. */
+ ltkt = FFEINFO_kindtypeREAL2;
+ }
break;
default:
assert ("bad pow_*i" == NULL);
code = FFECOM_gfrtPOW_CI; /* Overlapping result okay. */
+ ltkt = FFEINFO_kindtypeREAL1;
break;
}
if (ffeinfo_kindtype (ffebld_info (left)) != ltkt)
left = ffeexpr_convert (left, NULL, NULL,
- FFEINFO_basictypeINTEGER,
+ ffeinfo_basictype (ffebld_info (left)),
ltkt, 0,
FFETARGET_charactersizeNONE,
FFEEXPR_contextLET);