On Thu, 2014-05-01 at 23:39 +0200, Oleg Endo wrote:
> 
> On May 1, 2014, at 11:17 PM, Joel Sherrill <joel.sherr...@oarcorp.com> wrote:
> 
> > 
> > On 5/1/2014 3:29 PM, Oleg Endo wrote:
> >> On 01 May 2014, at 22:08, Joel Sherrill <joel.sherr...@oarcorp.com> wrote:
> >> 
> >>> Hi
> >>> 
> >>> gcc-4.8.2 targeting sh-*-* fails to compile on
> >>> FreeBSD 10 which is using clang. I am hoping someone
> >>> has some ideas about these.
> >> Yes, I've noticed and mentioned this already a while ago:
> >> http://gcc.gnu.org/ml/gcc/2013-12/msg00036.html
> >> 
> >> 
> >>> In file included from ../../gcc-4.8.2/gcc/config/sh/sh.c:63:
> >>> In file included from /usr/include/c++/v1/sstream:174:
> >>> In file included from /usr/include/c++/v1/ostream:131:
> >>> In file included from /usr/include/c++/v1/ios:216:
> >>> In file included from /usr/include/c++/v1/__locale:15:
> >>> In file included from /usr/include/c++/v1/string:438:
> >>> In file included from /usr/include/c++/v1/cwchar:107:
> >>> In file included from /usr/include/c++/v1/cwctype:54:
> >>> /usr/include/c++/v1/cctype:51:72: error: use of undeclared identifier
> >>> 'do_not_use_isalnum_with_safe_ctype'
> >>> inline _LIBCPP_INLINE_VISIBILITY int __libcpp_isalnum(int __c) {return
> >>> isalnum(__c);}
> >>> 
> >>> sh.c line 63 is this:
> >>> 
> >>> #include <sstream>
> >>> #include <vector>
> >>> #include <algorithm>
> >>> 
> >>> It is the only file in gcc/config/* to include sstream.  Has some
> >>> update sweep for C++ transition missed this file?
> >> Could you please try moving the std includes above any other (gcc) 
> >> includes and see if it fixes the issue?  AFAIR it did it for me.
> > This seems to fix it. I am not sure why sh.c is the only file in
> > gcc/config which includes sstream though.
> 
> Because I added code to sh.c that uses stuff from sstream after the switch to 
> C++.
> 
> > Is this a violation
> > of some new rule?
> 
> Not that I'm aware of.
> 
> > Is there a PR for this?
> > 
> > If not, I probably should file one and get the patch pushed
> > into 4.8 as well as 4.9 and the head if they need it.
> > 
> 
> If you insist on having a PR for it, please feel free.  In any case, I'll 
> commit the 'fix' to trunk and the branches by tomorrow.

I've committed the patch below to trunk, 4.9 branch and 4.8 branch.

Cheers,
Oleg

gcc/ChangeLog:
        PR target/61026
        * config/sh/sh.c: Include stdlib headers before everything else.


Index: gcc/config/sh/sh.c
===================================================================
--- gcc/config/sh/sh.c  (revision 210027)
+++ gcc/config/sh/sh.c  (working copy)
@@ -19,6 +19,10 @@
 along with GCC; see the file COPYING3.  If not see
 <http://www.gnu.org/licenses/>.  */
 
+#include <sstream>
+#include <vector>
+#include <algorithm>
+
 #include "config.h"
 #include "system.h"
 #include "coretypes.h"
@@ -70,10 +74,6 @@
 #include "pass_manager.h"
 #include "context.h"
 
-#include <sstream>
-#include <vector>
-#include <algorithm>
-
 int code_for_indirect_jump_scratch = CODE_FOR_indirect_jump_scratch;
 
 /* These are some macros to abstract register modes.  */





Reply via email to