diff options
author | Craig Burley <burley@gnu.org> | 1998-06-03 14:12:26 +0000 |
---|---|---|
committer | Dave Love <fx@gcc.gnu.org> | 1998-06-03 14:12:26 +0000 |
commit | 6a047254ef2ce9c0952ff7e2020dc29d86227d43 (patch) | |
tree | dbe3e691d991f722e478aee162854f9bad0be783 /gcc | |
parent | f5470689a761487ff8e93d4854de75fbcf78bf9d (diff) | |
download | gcc-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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/f/com.c | 29 |
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); |