* [Patch, libgfortran] Silence compiler warnings on MinGW(64)
@ 2012-05-31 21:05 Tobias Burnus
2012-06-01 5:42 ` Janne Blomqvist
0 siblings, 1 reply; 2+ messages in thread
From: Tobias Burnus @ 2012-05-31 21:05 UTC (permalink / raw)
To: Janne Blomqvist, gcc patches, gfortran
[-- Attachment #1: Type: text/plain, Size: 371 bytes --]
This patch tries to silence most warnings reported for MinGW64 by
Nightstrike at http://pastebin.mozilla.org/1652586
One item is a true bug. I didn't fix the coarray-related warnings as the
ABI will still change. And I ignored the last ones as rstride is set.
(The compiler cannot see that "dim" is always >= 0.)
Build on x86-64-gnu-linux.
OK for the trunk?
Tobias
[-- Attachment #2: libgfortran-warnfix.diff --]
[-- Type: text/x-patch, Size: 3505 bytes --]
2012-06-01 Tobias Burnus <burnus@net-b.de>
* intrinsics/chmod.c (chmod_func): On MinGW, don't set is_dir and
fix octal-mode handling.
* io/unit.c (get_internal_unit): Add cast.
* io/unix.c (min): Undef "min" before defining it.
* runtime/backtrace.c (show_backtrace): Move label into
ifndef __MINGW__ block.
diff --git a/libgfortran/intrinsics/chmod.c b/libgfortran/intrinsics/chmod.c
index e8a81d5..43b8de2 100644
--- a/libgfortran/intrinsics/chmod.c
+++ b/libgfortran/intrinsics/chmod.c
@@ -74,7 +74,10 @@ chmod_func (char *name, char *mode, gfc_charlen_type name_len,
bool ugo[3];
bool rwxXstugo[9];
int set_mode, part;
- bool is_dir, honor_umask, continue_clause = false;
+ bool honor_umask, continue_clause = false;
+#ifndef __MINGW32__
+ bool is_dir;
+#endif
mode_t mode_mask, file_mode, new_mode;
struct stat stat_buf;
@@ -93,10 +96,10 @@ chmod_func (char *name, char *mode, gfc_charlen_type name_len,
if (mode[0] >= '0' && mode[0] <= '9')
{
#ifdef __MINGW32__
- unsigned mode;
- if (sscanf (mode, "%o", &mode) != 1)
+ unsigned fmode;
+ if (sscanf (mode, "%o", &fmode) != 1)
return 1;
- file_mode = (mode_t) mode;
+ file_mode = (mode_t) fmode;
#else
if (sscanf (mode, "%o", &file_mode) != 1)
return 1;
@@ -109,7 +112,9 @@ chmod_func (char *name, char *mode, gfc_charlen_type name_len,
return 1;
file_mode = stat_buf.st_mode & ~S_IFMT;
+#ifndef __MINGW32__
is_dir = stat_buf.st_mode & S_IFDIR;
+#endif
#ifdef HAVE_UMASK
/* Obtain the umask without distroying the setting. */
diff --git a/libgfortran/io/unit.c b/libgfortran/io/unit.c
index 911521d..8b0926d 100644
--- a/libgfortran/io/unit.c
+++ b/libgfortran/io/unit.c
@@ -430,7 +430,8 @@ get_internal_unit (st_parameter_dt *dtp)
else
{
dtp->internal_unit_len =
- string_len_trim_char4 (dtp->internal_unit_len, dtp->internal_unit);
+ string_len_trim_char4 (dtp->internal_unit_len,
+ (const gfc_char4_t*) dtp->internal_unit);
iunit->recl = dtp->internal_unit_len;
}
}
diff --git a/libgfortran/io/unix.c b/libgfortran/io/unix.c
index c81163f..1a9faea 100644
--- a/libgfortran/io/unix.c
+++ b/libgfortran/io/unix.c
@@ -41,13 +41,6 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
#include <errno.h>
-/* min macro that evaluates its arguments only once. */
-#define min(a,b) \
- ({ typeof (a) _a = (a); \
- typeof (b) _b = (b); \
- _a < _b ? _a : _b; })
-
-
/* For mingw, we don't identify files by their inode number, but by a
64-bit identifier created from a BY_HANDLE_FILE_INFORMATION. */
#ifdef __MINGW32__
@@ -106,8 +99,19 @@ id_from_fd (const int fd)
return id_from_handle ((HANDLE) _get_osfhandle (fd));
}
+#endif /* HAVE_WORKING_STAT */
+#endif /* __MINGW32__ */
+
+
+/* min macro that evaluates its arguments only once. */
+#ifdef min
+#undef min
#endif
-#endif
+
+#define min(a,b) \
+ ({ typeof (a) _a = (a); \
+ typeof (b) _b = (b); \
+ _a < _b ? _a : _b; })
#ifndef PATH_MAX
#define PATH_MAX 1024
diff --git a/libgfortran/runtime/backtrace.c b/libgfortran/runtime/backtrace.c
index 6bfc560..9d88d13 100644
--- a/libgfortran/runtime/backtrace.c
+++ b/libgfortran/runtime/backtrace.c
@@ -270,9 +270,9 @@ fallback:
}
while (0);
+fallback_noerr:
#endif /* CAN_PIPE */
-fallback_noerr:
/* Fallback to the simple backtrace without addr2line. */
state.direct_output = 1;
_Unwind_Backtrace (trace_function, &state);
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [Patch, libgfortran] Silence compiler warnings on MinGW(64)
2012-05-31 21:05 [Patch, libgfortran] Silence compiler warnings on MinGW(64) Tobias Burnus
@ 2012-06-01 5:42 ` Janne Blomqvist
0 siblings, 0 replies; 2+ messages in thread
From: Janne Blomqvist @ 2012-06-01 5:42 UTC (permalink / raw)
To: Tobias Burnus; +Cc: gcc patches, gfortran
On Fri, Jun 1, 2012 at 12:05 AM, Tobias Burnus <burnus@net-b.de> wrote:
> This patch tries to silence most warnings reported for MinGW64 by
> Nightstrike at http://pastebin.mozilla.org/1652586
>
> One item is a true bug. I didn't fix the coarray-related warnings as the ABI
> will still change. And I ignored the last ones as rstride is set. (The
> compiler cannot see that "dim" is always >= 0.)
>
> Build on x86-64-gnu-linux.
> OK for the trunk?
Ok.
--
Janne Blomqvist
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2012-06-01 5:42 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-05-31 21:05 [Patch, libgfortran] Silence compiler warnings on MinGW(64) Tobias Burnus
2012-06-01 5:42 ` Janne Blomqvist
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).