On Thu, May 31, 2012 at 6:50 AM, Jakub Jelinek <ja...@redhat.com> wrote:
> On Thu, May 31, 2012 at 06:35:19AM -0700, H.J. Lu wrote:
>> This patch makes __WCHAR_TYPE__/wchar_t the same for gcc -m32 on
>> Linux/i386 and Linux/x86-64.  OK for trunk?
>
> That looks wrong.  For Linux/i386, the 32-bit only compiler should be
> the standard, rather than x86_64 -m32 if they differ.
> So, IMHO you should keep gnu-user.h as is, and just use
> #define WCHAR_TYPE (TARGET_64BIT ? "int" : "long int")
> in gcc/config/i386/x86-64.h.
>

You are right on Linux/i386.  But we should change config/i386/gnu-user64.h,
not x86-64.h since most of other i386 OSes use int for wchar.  Also we should
check TARGET_LP64 to keep x32 as close to i386 as possible.  OK for
trunk and 4.7?

Thanks.


-- 
H.J.
----
2012-05-31  H.J. Lu  <hongjiu...@intel.com>

        PR target/53539
        * config/i386/gnu-user64.h (WCHAR_TYPE): Use "int" only for
        TARGET_LP64.

diff --git a/gcc/config/i386/gnu-user64.h b/gcc/config/i386/gnu-user64.h
index 0e66d26..2941332 100644
--- a/gcc/config/i386/gnu-user64.h
+++ b/gcc/config/i386/gnu-user64.h
@@ -91,3 +91,6 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If n
ot, see
 #define TARGET_THREAD_SPLIT_STACK_OFFSET \
   (TARGET_64BIT ? (TARGET_X32 ? 0x40 : 0x70) : 0x30)
 #endif
+
+#undef WCHAR_TYPE
+#define WCHAR_TYPE (TARGET_LP64 ? "int" : "long int")

Reply via email to