From 2ed9e5272e6952e34d5c23242136e37b9f65c630 Mon Sep 17 00:00:00 2001
From: Mark Mitchell <mark@codesourcery.com>
Date: Fri, 6 Aug 2004 17:51:45 +0000
Subject: [PATCH] symbian.h (CC1_SPEC): Avoid passing duplicate options to the
 compiler.

	* config/arm/symbian.h (CC1_SPEC): Avoid passing duplicate options
	to the compiler.  Use -fshort-wchar by default.

	* gcc.dg/symbian4.c: Expect a 2-byte wchar_t, not a 4-byte
	wchar_t.
	* gcc.dg/symbian5.c: Test -fno-short-wchar.

From-SVN: r85648
---
 gcc/ChangeLog                   |  5 +++++
 gcc/config/arm/symbian.h        | 14 ++++++++++++--
 gcc/testsuite/ChangeLog         |  6 ++++++
 gcc/testsuite/gcc.dg/symbian4.c |  4 ++--
 gcc/testsuite/gcc.dg/symbian5.c |  8 ++++++++
 5 files changed, 33 insertions(+), 4 deletions(-)
 create mode 100644 gcc/testsuite/gcc.dg/symbian5.c

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 1318c7cd2c22..a55a3d929213 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2004-08-06  Mark Mitchell  <mark@codesourcery.com>
+
+	* config/arm/symbian.h (CC1_SPEC): Avoid passing duplicate options
+	to the compiler.  Use -fshort-wchar by default.
+
 2004-08-06  Pat Haugen  <pthaugen@us.ibm.com>
 
 	* params.def (PARAM_MIN_CROSSJUMP_INSNS): New.
diff --git a/gcc/config/arm/symbian.h b/gcc/config/arm/symbian.h
index 4ad4f46b74a4..c03b428e692a 100644
--- a/gcc/config/arm/symbian.h
+++ b/gcc/config/arm/symbian.h
@@ -34,8 +34,18 @@
 
    Make all symbols hidden by default.  Symbian OS expects that all
    exported symbols will be explicitly marked with
-   "__declspec(dllexport)".  */
-#define CC1_SPEC "-fno-builtin -fvisibility=hidden -fno-short-enums"
+   "__declspec(dllexport)".  
+
+   Enumeration types use 4 bytes, even if the enumerals are small,
+   unless explicitly overridden.
+
+   The wchar_t type is a 2-byte type, unless explicitly
+   overridden.  */
+#define CC1_SPEC						\
+  "%{!fbuiltin:%{!fno-builtin:-fno-builtin}} "			\
+  "%{!fvisibility=*:-fvisibility=hidden} "			\
+  "%{!fshort-enums:%{!fno-short-enums:-fno-short-enums}} "	\
+  "%{!fshort-wchar:%{!fno-short-wchar:-fshort-wchar}} "
 #define CC1PLUS_SPEC CC1_SPEC
 
 /* Symbian OS does not use crt0.o, unlike the generic unknown-elf
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index f2d9a977be5d..63ca7a78c50c 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,9 @@
+2004-08-06  Mark Mitchell  <mark@codesourcery.com>
+
+	* gcc.dg/symbian4.c: Expect a 2-byte wchar_t, not a 4-byte
+	wchar_t.
+	* gcc.dg/symbian5.c: Test -fno-short-wchar.
+
 2004-08-06  Paul Brook  <paul@codesourcery.com>
 
 	* gfortran.dg/ret_array_1.f90: New test.
diff --git a/gcc/testsuite/gcc.dg/symbian4.c b/gcc/testsuite/gcc.dg/symbian4.c
index 20585a713208..aede7f5c66c6 100644
--- a/gcc/testsuite/gcc.dg/symbian4.c
+++ b/gcc/testsuite/gcc.dg/symbian4.c
@@ -1,5 +1,5 @@
 /* { dg-do compile { target arm*-*-symbianelf* } } */
-/* Check that wchar_t is a 4-byte type.  */
+/* Check that wchar_t is a 2-byte type.  */
 
 extern int i[sizeof (L'a')];
-int i[4];
+int i[2];
diff --git a/gcc/testsuite/gcc.dg/symbian5.c b/gcc/testsuite/gcc.dg/symbian5.c
new file mode 100644
index 000000000000..0bde6b0cba3c
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/symbian5.c
@@ -0,0 +1,8 @@
+/* { dg-do compile { target arm*-*-symbianelf* } } */
+/* { dg-options "-fno-short-wchar" } */
+/* Check that wchar_t is a 4-byte type when -fno-short-wchar is
+   used.  */
+
+extern int i[sizeof (L'a')];
+int i[4];
+
-- 
GitLab