Fix INTEGER*8 conversion bugs
From-SVN: r25746
This commit is contained in:
parent
fe3ab6bd3f
commit
f8e1d0a169
@ -1,3 +1,15 @@
|
||||
Sat Mar 13 17:51:55 1999 Craig Burley <craig@jcb-sc.com>
|
||||
|
||||
Fix 19990313-0.f, 19990313-1.f, 19990313-2.f, 19990313-3.f:
|
||||
* bad.def (FFEBAD_NOCANDO): New error code for internal use only.
|
||||
* expr.c (ffeexpr_collapse_convert): If FFEBAD_NOCANDO returned
|
||||
by convertor, just return original expr.
|
||||
* target.h: Return FFEBAD_NOCANDO for (usually) 64-bit
|
||||
conversions that aren't yet working properly.
|
||||
* news.texi: Explain.
|
||||
|
||||
* version.c: Bump version.
|
||||
|
||||
Sat Mar 13 14:26:55 1999 Craig Burley <craig@jcb-sc.com>
|
||||
|
||||
* RELEASE-PREP: New file, lists things to do for a release.
|
||||
|
@ -702,6 +702,8 @@ FFEBAD_MSGS1 (FFEBAD_SFUNC_UNUSED, WARN,
|
||||
"Statement function `%A' defined at %0 is not used")
|
||||
FFEBAD_MSGS1 (FFEBAD_INTRINSIC_Y2KBAD, WARN,
|
||||
"Intrinsic `%A', invoked at %0, known to be non-Y2K-compliant [info -f g77 M Y2KBAD]")
|
||||
FFEBAD_MSGS1 (FFEBAD_NOCANDO, DISASTER,
|
||||
"Internal compiler error -- cannot perform operation")
|
||||
|
||||
#undef INFORM
|
||||
#undef TRIVIAL
|
||||
|
64
gcc/f/expr.c
64
gcc/f/expr.c
@ -633,6 +633,10 @@ ffeexpr_collapse_convert (ffebld expr, ffelexToken t)
|
||||
break;
|
||||
}
|
||||
|
||||
/* If conversion operation is not implemented, return original expr. */
|
||||
if (error == FFEBAD_NOCANDO)
|
||||
return expr;
|
||||
|
||||
expr = ffebld_new_conter_with_orig
|
||||
(ffebld_constant_new_integer1_val
|
||||
(ffebld_cu_val_integer1 (u)), expr);
|
||||
@ -822,6 +826,10 @@ ffeexpr_collapse_convert (ffebld expr, ffelexToken t)
|
||||
break;
|
||||
}
|
||||
|
||||
/* If conversion operation is not implemented, return original expr. */
|
||||
if (error == FFEBAD_NOCANDO)
|
||||
return expr;
|
||||
|
||||
expr = ffebld_new_conter_with_orig
|
||||
(ffebld_constant_new_integer2_val
|
||||
(ffebld_cu_val_integer2 (u)), expr);
|
||||
@ -1011,6 +1019,10 @@ ffeexpr_collapse_convert (ffebld expr, ffelexToken t)
|
||||
break;
|
||||
}
|
||||
|
||||
/* If conversion operation is not implemented, return original expr. */
|
||||
if (error == FFEBAD_NOCANDO)
|
||||
return expr;
|
||||
|
||||
expr = ffebld_new_conter_with_orig
|
||||
(ffebld_constant_new_integer3_val
|
||||
(ffebld_cu_val_integer3 (u)), expr);
|
||||
@ -1200,6 +1212,10 @@ ffeexpr_collapse_convert (ffebld expr, ffelexToken t)
|
||||
break;
|
||||
}
|
||||
|
||||
/* If conversion operation is not implemented, return original expr. */
|
||||
if (error == FFEBAD_NOCANDO)
|
||||
return expr;
|
||||
|
||||
expr = ffebld_new_conter_with_orig
|
||||
(ffebld_constant_new_integer4_val
|
||||
(ffebld_cu_val_integer4 (u)), expr);
|
||||
@ -1317,6 +1333,10 @@ ffeexpr_collapse_convert (ffebld expr, ffelexToken t)
|
||||
break;
|
||||
}
|
||||
|
||||
/* If conversion operation is not implemented, return original expr. */
|
||||
if (error == FFEBAD_NOCANDO)
|
||||
return expr;
|
||||
|
||||
expr = ffebld_new_conter_with_orig
|
||||
(ffebld_constant_new_logical1_val
|
||||
(ffebld_cu_val_logical1 (u)), expr);
|
||||
@ -1424,6 +1444,10 @@ ffeexpr_collapse_convert (ffebld expr, ffelexToken t)
|
||||
break;
|
||||
}
|
||||
|
||||
/* If conversion operation is not implemented, return original expr. */
|
||||
if (error == FFEBAD_NOCANDO)
|
||||
return expr;
|
||||
|
||||
expr = ffebld_new_conter_with_orig
|
||||
(ffebld_constant_new_logical2_val
|
||||
(ffebld_cu_val_logical2 (u)), expr);
|
||||
@ -1531,6 +1555,10 @@ ffeexpr_collapse_convert (ffebld expr, ffelexToken t)
|
||||
break;
|
||||
}
|
||||
|
||||
/* If conversion operation is not implemented, return original expr. */
|
||||
if (error == FFEBAD_NOCANDO)
|
||||
return expr;
|
||||
|
||||
expr = ffebld_new_conter_with_orig
|
||||
(ffebld_constant_new_logical3_val
|
||||
(ffebld_cu_val_logical3 (u)), expr);
|
||||
@ -1638,6 +1666,10 @@ ffeexpr_collapse_convert (ffebld expr, ffelexToken t)
|
||||
break;
|
||||
}
|
||||
|
||||
/* If conversion operation is not implemented, return original expr. */
|
||||
if (error == FFEBAD_NOCANDO)
|
||||
return expr;
|
||||
|
||||
expr = ffebld_new_conter_with_orig
|
||||
(ffebld_constant_new_logical4_val
|
||||
(ffebld_cu_val_logical4 (u)), expr);
|
||||
@ -1796,6 +1828,10 @@ ffeexpr_collapse_convert (ffebld expr, ffelexToken t)
|
||||
break;
|
||||
}
|
||||
|
||||
/* If conversion operation is not implemented, return original expr. */
|
||||
if (error == FFEBAD_NOCANDO)
|
||||
return expr;
|
||||
|
||||
expr = ffebld_new_conter_with_orig
|
||||
(ffebld_constant_new_real1_val
|
||||
(ffebld_cu_val_real1 (u)), expr);
|
||||
@ -1944,6 +1980,10 @@ ffeexpr_collapse_convert (ffebld expr, ffelexToken t)
|
||||
break;
|
||||
}
|
||||
|
||||
/* If conversion operation is not implemented, return original expr. */
|
||||
if (error == FFEBAD_NOCANDO)
|
||||
return expr;
|
||||
|
||||
expr = ffebld_new_conter_with_orig
|
||||
(ffebld_constant_new_real2_val
|
||||
(ffebld_cu_val_real2 (u)), expr);
|
||||
@ -2092,6 +2132,10 @@ ffeexpr_collapse_convert (ffebld expr, ffelexToken t)
|
||||
break;
|
||||
}
|
||||
|
||||
/* If conversion operation is not implemented, return original expr. */
|
||||
if (error == FFEBAD_NOCANDO)
|
||||
return expr;
|
||||
|
||||
expr = ffebld_new_conter_with_orig
|
||||
(ffebld_constant_new_real3_val
|
||||
(ffebld_cu_val_real3 (u)), expr);
|
||||
@ -2240,6 +2284,10 @@ ffeexpr_collapse_convert (ffebld expr, ffelexToken t)
|
||||
break;
|
||||
}
|
||||
|
||||
/* If conversion operation is not implemented, return original expr. */
|
||||
if (error == FFEBAD_NOCANDO)
|
||||
return expr;
|
||||
|
||||
expr = ffebld_new_conter_with_orig
|
||||
(ffebld_constant_new_real4_val
|
||||
(ffebld_cu_val_real4 (u)), expr);
|
||||
@ -2398,6 +2446,10 @@ ffeexpr_collapse_convert (ffebld expr, ffelexToken t)
|
||||
break;
|
||||
}
|
||||
|
||||
/* If conversion operation is not implemented, return original expr. */
|
||||
if (error == FFEBAD_NOCANDO)
|
||||
return expr;
|
||||
|
||||
expr = ffebld_new_conter_with_orig
|
||||
(ffebld_constant_new_complex1_val
|
||||
(ffebld_cu_val_complex1 (u)), expr);
|
||||
@ -2546,6 +2598,10 @@ ffeexpr_collapse_convert (ffebld expr, ffelexToken t)
|
||||
break;
|
||||
}
|
||||
|
||||
/* If conversion operation is not implemented, return original expr. */
|
||||
if (error == FFEBAD_NOCANDO)
|
||||
return expr;
|
||||
|
||||
expr = ffebld_new_conter_with_orig
|
||||
(ffebld_constant_new_complex2_val
|
||||
(ffebld_cu_val_complex2 (u)), expr);
|
||||
@ -2694,6 +2750,10 @@ ffeexpr_collapse_convert (ffebld expr, ffelexToken t)
|
||||
break;
|
||||
}
|
||||
|
||||
/* If conversion operation is not implemented, return original expr. */
|
||||
if (error == FFEBAD_NOCANDO)
|
||||
return expr;
|
||||
|
||||
expr = ffebld_new_conter_with_orig
|
||||
(ffebld_constant_new_complex3_val
|
||||
(ffebld_cu_val_complex3 (u)), expr);
|
||||
@ -2842,6 +2902,10 @@ ffeexpr_collapse_convert (ffebld expr, ffelexToken t)
|
||||
break;
|
||||
}
|
||||
|
||||
/* If conversion operation is not implemented, return original expr. */
|
||||
if (error == FFEBAD_NOCANDO)
|
||||
return expr;
|
||||
|
||||
expr = ffebld_new_conter_with_orig
|
||||
(ffebld_constant_new_complex4_val
|
||||
(ffebld_cu_val_complex4 (u)), expr);
|
||||
|
@ -153,6 +153,17 @@ The following information was last updated on @value{last-update-news}:
|
||||
|
||||
@heading In @code{egcs} 1.2 (versus 1.1.2):
|
||||
@itemize @bullet
|
||||
@ifclear USERVISONLY
|
||||
@item
|
||||
@code{g77} no longer generates bad code for assignments,
|
||||
or other conversions,
|
||||
of @code{REAL} or @code{COMPLEX} constant expressions
|
||||
to type @code{INTEGER(KIND=2)}
|
||||
(often referred to as @code{INTEGER*8}).
|
||||
|
||||
For example, @samp{INTEGER*8 J; J = 4E10} now works as documented.
|
||||
@end ifclear
|
||||
|
||||
@ifclear USERVISONLY
|
||||
@item
|
||||
Fix @code{g77} so it no longer crashes when compiling
|
||||
|
@ -989,7 +989,11 @@ void *ffetarget_memcpy_ (void *dst, void *src, size_t len);
|
||||
#define ffetarget_convert_complex1_integer1 ffetarget_convert_complex1_integer
|
||||
#define ffetarget_convert_complex1_integer2 ffetarget_convert_complex1_integer
|
||||
#define ffetarget_convert_complex1_integer3 ffetarget_convert_complex1_integer
|
||||
#ifdef REAL_ARITHMETIC
|
||||
#define ffetarget_convert_complex1_integer4(res,l) FFEBAD_NOCANDO
|
||||
#else
|
||||
#define ffetarget_convert_complex1_integer4 ffetarget_convert_complex1_integer
|
||||
#endif
|
||||
#ifdef REAL_ARITHMETIC
|
||||
#define ffetarget_convert_complex1_real1(res,l) \
|
||||
((res)->real = (l), \
|
||||
@ -1041,7 +1045,11 @@ void *ffetarget_memcpy_ (void *dst, void *src, size_t len);
|
||||
#define ffetarget_convert_complex2_integer1 ffetarget_convert_complex2_integer
|
||||
#define ffetarget_convert_complex2_integer2 ffetarget_convert_complex2_integer
|
||||
#define ffetarget_convert_complex2_integer3 ffetarget_convert_complex2_integer
|
||||
#ifdef REAL_ARITHMETIC
|
||||
#define ffetarget_convert_complex2_integer4(res,l) FFEBAD_NOCANDO
|
||||
#else
|
||||
#define ffetarget_convert_complex2_integer4 ffetarget_convert_complex2_integer
|
||||
#endif
|
||||
#ifdef REAL_ARITHMETIC
|
||||
#define ffetarget_convert_complex2_real1(res,l) \
|
||||
({ REAL_VALUE_TYPE lr; \
|
||||
@ -1111,10 +1119,15 @@ void *ffetarget_memcpy_ (void *dst, void *src, size_t len);
|
||||
ffetarget_convert_integer1_typeless(res,l)
|
||||
#define ffetarget_convert_integer4_character1(res,l) \
|
||||
ffetarget_convert_integer1_character1(res,l)
|
||||
#ifdef REAL_ARITHMETIC
|
||||
#define ffetarget_convert_integer4_complex1(res,l) FFEBAD_NOCANDO
|
||||
#define ffetarget_convert_integer4_complex2(res,l) FFEBAD_NOCANDO
|
||||
#else
|
||||
#define ffetarget_convert_integer4_complex1(res,l) \
|
||||
ffetarget_convert_integer1_complex1(res,l)
|
||||
#define ffetarget_convert_integer4_complex2(res,l) \
|
||||
ffetarget_convert_integer1_complex2(res,l)
|
||||
#endif
|
||||
#define ffetarget_convert_integer4_hollerith(res,l) \
|
||||
ffetarget_convert_integer1_hollerith(res,l)
|
||||
#define ffetarget_convert_integer4_integer1(res,l) (*(res) = (l), FFEBAD)
|
||||
@ -1128,10 +1141,15 @@ void *ffetarget_memcpy_ (void *dst, void *src, size_t len);
|
||||
ffetarget_convert_integer1_logical1(res,l)
|
||||
#define ffetarget_convert_integer4_logical4(res,l) \
|
||||
ffetarget_convert_integer1_logical1(res,l)
|
||||
#ifdef REAL_ARITHMETIC
|
||||
#define ffetarget_convert_integer4_real1(res,l) FFEBAD_NOCANDO
|
||||
#define ffetarget_convert_integer4_real2(res,l) FFEBAD_NOCANDO
|
||||
#else
|
||||
#define ffetarget_convert_integer4_real1(res,l) \
|
||||
ffetarget_convert_integer1_real1(res,l)
|
||||
#define ffetarget_convert_integer4_real2(res,l) \
|
||||
ffetarget_convert_integer1_real2(res,l)
|
||||
#endif
|
||||
#define ffetarget_convert_integer4_typeless(res,l) \
|
||||
ffetarget_convert_integer1_typeless(res,l)
|
||||
#define ffetarget_convert_logical1_character1(res,l) \
|
||||
@ -1238,8 +1256,12 @@ void *ffetarget_memcpy_ (void *dst, void *src, size_t len);
|
||||
ffetarget_convert_real1_integer1(res,l)
|
||||
#define ffetarget_convert_real1_integer3(res,l) \
|
||||
ffetarget_convert_real1_integer1(res,l)
|
||||
#ifdef REAL_ARITHMETIC
|
||||
#define ffetarget_convert_real1_integer4(res,l) FFEBAD_NOCANDO
|
||||
#else
|
||||
#define ffetarget_convert_real1_integer4(res,l) \
|
||||
ffetarget_convert_real1_integer1(res,l)
|
||||
#endif
|
||||
#define ffetarget_convert_real1_typeless(res,l) \
|
||||
ffetarget_convert_any_typeless_ ((char *) (res), sizeof(*(res)), l)
|
||||
#define ffetarget_convert_real1_complex1(res,l) (*(res) = (l).real, FFEBAD)
|
||||
@ -1272,8 +1294,12 @@ void *ffetarget_memcpy_ (void *dst, void *src, size_t len);
|
||||
ffetarget_convert_real2_integer1(res,l)
|
||||
#define ffetarget_convert_real2_integer3(res,l) \
|
||||
ffetarget_convert_real2_integer1(res,l)
|
||||
#ifdef REAL_ARITHMETIC
|
||||
#define ffetarget_convert_real2_integer4(res,l) FFEBAD_NOCANDO
|
||||
#else
|
||||
#define ffetarget_convert_real2_integer4(res,l) \
|
||||
ffetarget_convert_real2_integer1(res,l)
|
||||
#endif
|
||||
#define ffetarget_convert_real2_typeless(res,l) \
|
||||
ffetarget_convert_any_typeless_ ((char *) (res), sizeof(*(res)), l)
|
||||
#define ffetarget_convert_real2_complex1(res,l) \
|
||||
|
@ -1 +1 @@
|
||||
char *ffe_version_string = "0.5.24-19990306";
|
||||
char *ffe_version_string = "0.5.24-19990313";
|
||||
|
Loading…
Reference in New Issue
Block a user