[gcc r11-4165] [Ada] Fix bootstrap with old GCC
Pierre-Marie de Rodat
pmderodat@gcc.gnu.org
Wed Oct 21 07:25:07 GMT 2020
https://gcc.gnu.org/g:3c2d338129a5c77a95b1b6d165db0ec328fb1938
commit r11-4165-g3c2d338129a5c77a95b1b6d165db0ec328fb1938
Author: Dmitriy Anisimkov <anisimko@adacore.com>
Date: Thu Aug 6 11:54:48 2020 +0600
[Ada] Fix bootstrap with old GCC
gcc/ada/
* adaint.c (__gnat_file_time): Use regular arithmetic instead of
__builtin_*_overflow routines if GCC version 4 or less and
compiler is g++.
Diff:
---
gcc/ada/adaint.c | 12 +++++++++++-
1 file changed, 11 insertions(+), 1 deletion(-)
diff --git a/gcc/ada/adaint.c b/gcc/ada/adaint.c
index 9ef02438308..b7406a03c31 100644
--- a/gcc/ada/adaint.c
+++ b/gcc/ada/adaint.c
@@ -1503,6 +1503,9 @@ extern long long __gnat_file_time(char* name)
t_write.ft_time = fad.ftLastWriteTime;
+#if defined(__GNUG__) && __GNUG__ <= 4
+ result = (t_write.ll_time - w32_epoch_offset) * 100;
+#else
/* Next code similar to (t_write.ll_time - w32_epoch_offset) * 100
but on overflow returns LLONG_MIN value. */
@@ -1513,6 +1516,7 @@ extern long long __gnat_file_time(char* name)
if (__builtin_smulll_overflow(result, 100, &result)) {
return LLONG_MIN;
}
+#endif
#else
@@ -1521,6 +1525,12 @@ extern long long __gnat_file_time(char* name)
return LLONG_MIN;
}
+#if defined(__GNUG__) && __GNUG__ <= 4
+ result = (sb.st_mtime - ada_epoch_offset) * 1E9;
+#if defined(st_mtime)
+ result += sb.st_mtim.tv_nsec;
+#endif
+#else
/* Next code similar to
(sb.st_mtime - ada_epoch_offset) * 1E9 + sb.st_mtim.tv_nsec
but on overflow returns LLONG_MIN value. */
@@ -1538,7 +1548,7 @@ extern long long __gnat_file_time(char* name)
return LLONG_MIN;
}
#endif
-
+#endif
#endif
return result;
}
More information about the Gcc-cvs
mailing list