[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Problem with Sun Studio 12 C++
From: |
Ralf Wildenhues |
Subject: |
Re: Problem with Sun Studio 12 C++ |
Date: |
Sun, 8 Mar 2009 11:21:56 +0100 |
User-agent: |
Mutt/1.5.18 (2008-05-17) |
Hello Eric, Rolf,
I'm a bit late to the show:
* Eric Blake wrote on Wed, Jan 28, 2009 at 06:00:57PM CET:
> Rolf Vandevaart writes:
>
> > However, as of Sun Studio 12, the C compiler also supports __restrict__.
> > Therefore, we need to update the workaround to handle this additional
> > possible value. Here is my suggestion.
I think the Autoconf testsuite deserves to detect this issue,
lest it happen again. How about this patch?
The cpp-works stuff is necessary for systems without a working C++
compiler. AC_PROG_CXX sets CXX to g++ in that case. We should find
out why that was done, and fix it.
Thanks,
Ralf
New test for SunStudio `restrict' handling.
* tests/c.at (AC_C_RESTRICT and the C++ compiler): New test.
Prompted by bug report from Rolf Vandevaart.
diff --git a/tests/c.at b/tests/c.at
index d7a1886..67ba429 100644
--- a/tests/c.at
+++ b/tests/c.at
@@ -2,8 +2,8 @@
AT_BANNER([C low level compiling/preprocessing macros.])
-# Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2008 Free
-# Software Foundation, Inc.
+# Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2008, 2009
+# Free Software Foundation, Inc.
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -259,3 +259,66 @@ AC_DEFINE([__EXTENSIONS__], [1], [Manually defined for
Solaris])
]])
AT_CLEANUP
+
+
+## ------------------------------------ ##
+## AC_C_RESTRICT and the C++ compiler. ##
+## ------------------------------------ ##
+
+AT_SETUP([AC_C_RESTRICT and the C++ compiler])
+
+# In some compiler suites, the left hand doesn't know about everything
+# the right hand does; or the user mixes the C compiler from one suite
+# with the C++ compiler from another. In this case, Sun WorkShop CC
+# not like the _Restrict accepted by cc.
+
+AT_DATA([configure.ac],
+[[AC_INIT
+AC_PROG_CC
+AC_PROG_CXX
+AC_C_RESTRICT
+AC_CONFIG_HEADERS([config.h])
+AC_CONFIG_FILES([Makefile])
+AC_OUTPUT
+]])
+
+AT_DATA([Makefile.in],
+[[CC = @CC@
+CXX = @CXX@
+CFLAGS = @CFLAGS@
+CXXFLAGS = @CXXFLAGS@
+CPPFLAGS = -I. @CPPFLAGS@
+OBJEXT = @OBJEXT@
+all: foo.$(OBJEXT) bar.$(OBJEXT)
+cpp-works:
+ $(CXX) $(CPPFLAGS) $(CXXFLAGS) -c cpp-works.cpp
+foo.$(OBJEXT): foo.c
+ $(CC) $(CPPFLAGS) $(CFLAGS) -c foo.c
+bar.$(OBJEXT): bar.cpp
+ $(CXX) $(CPPFLAGS) $(CXXFLAGS) -c bar.cpp
+]])
+
+AT_DATA([foo.c],
+[[#include <config.h>
+
+int foo (int * restrict ip)
+{
+ return ip[0];
+}
+]])
+
+cp foo.c bar.cpp
+
+AT_DATA([cpp-works.cpp],
+[[// This file is just to test whether we have a working C++ compiler at all
+class foo { int x; };
+class foo foobar;
+]])
+
+AT_CHECK([autoconf])
+AT_CHECK([autoheader])
+AT_CHECK([./configure], [], [ignore], [ignore])
+AT_CHECK([${MAKE-make} cpp-works || exit 77], [], [ignore], [ignore])
+AT_CHECK([${MAKE-make}], [], [ignore], [ignore])
+
+AT_CLEANUP
- Re: Problem with Sun Studio 12 C++,
Ralf Wildenhues <=