Subject: Re: bug#22087: Problem with stdbuf configure test for 8.24 on Solaris with Studio C compiler.
From: Paul Eggert <[email-masked]>
To: Rich Burridge <[email-masked]>, Pádraig Brady<[email-masked]>, [email-masked]
Date: Thu, 3 Dec 2015 13:57:45 -0800
List-Id: <debbugs-submit.debbugs.gnu.org>

On 12/03/2015 01:08 PM, Rich Burridge wrote:
> Yup. That works nicely too. 

Thanks, I noticed a similar problem in three other places (which I guess 
don't affect your platform) and so installed the attached more-general 
patch.
From c536d89fc497f90464de61c5b4207d103dfbad08 Mon Sep 17 00:00:00 2001
From: Paul Eggert <[email-masked]>
Date: Thu, 3 Dec 2015 13:55:44 -0800
Subject: [PATCH] build: port to Studio C on Solaris 12

Reported by Rich Burridge in: http://bugs.gnu.org/22087
* configure.ac (HAVE_UT_HOST, HAVE_C_LINE, stdbuf):
Pacify picky compilers that complain about unreachable statements.
---
 configure.ac | 21 ++++++++++++++-------
 1 file changed, 14 insertions(+), 7 deletions(-)

diff --git a/configure.ac b/configure.ac
index 66c8cbe..a5c4e41 100644
--- a/configure.ac
+++ b/configure.ac
@@ -354,7 +354,9 @@ coreutils_DUMMY_1
 AC_MSG_CHECKING([ut_host in struct utmp])
 AC_CACHE_VAL([su_cv_func_ut_host_in_utmp],
 [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>
-#include <utmp.h>]], [[struct utmp ut; return !sizeof ut.ut_host;]])],
+                                   #include <utmp.h>
+                                   struct utmp ut;
+                                   int s = sizeof ut.ut_host;]])],
   [su_cv_func_ut_host_in_utmp=yes],
   [su_cv_func_ut_host_in_utmp=no])])
 AC_MSG_RESULT([$su_cv_func_ut_host_in_utmp])
@@ -367,7 +369,9 @@ if test -z "$have_ut_host"; then
   AC_MSG_CHECKING([ut_host in struct utmpx])
   AC_CACHE_VAL([su_cv_func_ut_host_in_utmpx],
   [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>
-#include <utmpx.h>]], [[struct utmpx ut; return !sizeof ut.ut_host;]])],
+                                     #include <utmpx.h>
+                                     struct utmpx ut;
+                                     int s = sizeof ut.ut_host;]])],
     [su_cv_func_ut_host_in_utmpx=yes],
     [su_cv_func_ut_host_in_utmpx=no])])
   AC_MSG_RESULT([$su_cv_func_ut_host_in_utmpx])
@@ -404,10 +408,12 @@ yes
   AC_MSG_CHECKING([c_line in struct termios])
   AC_CACHE_VAL([su_cv_sys_c_line_in_termios],
   [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#if TERMIOS_NEEDS_XOPEN_SOURCE
-#define _XOPEN_SOURCE
-#endif
-#include <sys/types.h>
-#include <termios.h>]], [[struct termios t; return !sizeof t.c_line;]])],
+                                      #define _XOPEN_SOURCE
+                                     #endif
+                                     #include <sys/types.h>
+                                     #include <termios.h>
+                                     struct termios t;
+                                     int s = sizeof t.c_line;]])],
     [su_cv_sys_c_line_in_termios=yes],
     [su_cv_sys_c_line_in_termios=no])])
   AC_MSG_RESULT([$su_cv_sys_c_line_in_termios])
@@ -475,7 +481,8 @@ AC_LINK_IFELSE(
     {
       stdbuf = 1;
     }]],[[
-    return !(stdbuf == 1);]])
+    if (stdbuf != 1)
+      return 1;]])
   ],
   [stdbuf_supported=yes])
 AC_MSG_RESULT([$stdbuf_supported])
-- 
2.1.0