Re: [PATCH] Adding target rdos to GCC

2013-01-28 Thread Leif Ekblad

Uros,

That is intentional. The gthr-rdos.h file is part of libgcc. My intention 
was to first patch gcc, then update the patches for newlib, and finally 
libgcc. The gthr-rdos.h file would reference include-files part of newlib, 
so this is kind of circular. I also cannot define the thread model for RDOS 
unless I define this file.


I see a couple of possible solutions:
1. Keep as is. You cannot build libgcc at the current stage anyway, and the 
bootstrap must be built without threading

2. Add an empty gthr-rdos.h file until libgcc is done
3. Remove the threading-model for now, and add it with libgcc instead.

Regards,
Leif Ekblad



- Original Message - 
From: Uros Bizjak ubiz...@gmail.com

To: Leif Ekblad l...@rdos.net
Cc: Richard Biener rguent...@suse.de; gcc-patches@gcc.gnu.org; H.J. 
Lu hjl.to...@gmail.com; Jakub Jelinek ja...@redhat.com

Sent: Monday, January 28, 2013 8:23 AM
Subject: Re: [PATCH] Adding target rdos to GCC



On Mon, Jan 28, 2013 at 7:50 AM, Leif Ekblad l...@rdos.net wrote:


If the patch is ok, could some maintainer add it to trunk?


There is no gthr-rdos.h file in your patch:

*** gcc-4.8-20121230/config/gthr.m4 2012-10-15 15:10:30.0 +0200
--- gcc-work/config/gthr.m4 2013-01-07 10:14:04.620667900 +0100
***
*** 21,26 
--- 21,27 
 tpf) thread_header=config/s390/gthr-tpf.h ;;
 vxworks) thread_header=config/gthr-vxworks.h ;;
 win32) thread_header=config/i386/gthr-win32.h ;;
+ rdos) thread_header=config/i386/gthr-rdos.h ;;

This file should be part of libgcc, so it needs its own ChangeLog.

Uros. 




Re: [PATCH] Adding target rdos to GCC

2013-01-28 Thread Uros Bizjak
On Mon, Jan 28, 2013 at 8:57 PM, Leif Ekblad l...@rdos.net wrote:

 That is intentional. The gthr-rdos.h file is part of libgcc. My intention
 was to first patch gcc, then update the patches for newlib, and finally
 libgcc. The gthr-rdos.h file would reference include-files part of newlib,
 so this is kind of circular. I also cannot define the thread model for RDOS
 unless I define this file.

 I see a couple of possible solutions:
 1. Keep as is. You cannot build libgcc at the current stage anyway, and the
 bootstrap must be built without threading
 2. Add an empty gthr-rdos.h file until libgcc is done
 3. Remove the threading-model for now, and add it with libgcc instead.

I propose option 3.

Is it enough to remove gthr.m4 change from the patch in this case?

Uros.


Re: [PATCH] Adding target rdos to GCC

2013-01-28 Thread Leif Ekblad


- Original Message - 
From: Uros Bizjak ubiz...@gmail.com

To: Leif Ekblad l...@rdos.net
Cc: Richard Biener rguent...@suse.de; gcc-patches@gcc.gnu.org; H.J. 
Lu hjl.to...@gmail.com; Jakub Jelinek ja...@redhat.com

Sent: Monday, January 28, 2013 9:03 PM
Subject: Re: [PATCH] Adding target rdos to GCC



On Mon, Jan 28, 2013 at 8:57 PM, Leif Ekblad l...@rdos.net wrote:


That is intentional. The gthr-rdos.h file is part of libgcc. My intention
was to first patch gcc, then update the patches for newlib, and finally
libgcc. The gthr-rdos.h file would reference include-files part of 
newlib,
so this is kind of circular. I also cannot define the thread model for 
RDOS

unless I define this file.

I see a couple of possible solutions:
1. Keep as is. You cannot build libgcc at the current stage anyway, and 
the

bootstrap must be built without threading
2. Add an empty gthr-rdos.h file until libgcc is done
3. Remove the threading-model for now, and add it with libgcc instead.


I propose option 3.

Is it enough to remove gthr.m4 change from the patch in this case?

Uros.


Yes, for all practical purposes. There is a reference to thread-file in 
config.gcc, when threading is enabled, which doesn't work for bootstrapping 
the compiler anyway.


Regards,
Leif Ekblad



Re: [PATCH] Adding target rdos to GCC

2013-01-28 Thread Uros Bizjak
On Mon, Jan 28, 2013 at 9:14 PM, Leif Ekblad l...@rdos.net wrote:

 That is intentional. The gthr-rdos.h file is part of libgcc. My intention
 was to first patch gcc, then update the patches for newlib, and finally
 libgcc. The gthr-rdos.h file would reference include-files part of
 newlib,
 so this is kind of circular. I also cannot define the thread model for
 RDOS
 unless I define this file.

 I see a couple of possible solutions:
 1. Keep as is. You cannot build libgcc at the current stage anyway, and
 the
 bootstrap must be built without threading
 2. Add an empty gthr-rdos.h file until libgcc is done
 3. Remove the threading-model for now, and add it with libgcc instead.


 I propose option 3.

 Is it enough to remove gthr.m4 change from the patch in this case?

 Yes, for all practical purposes. There is a reference to thread-file in
 config.gcc, when threading is enabled, which doesn't work for bootstrapping
 the compiler anyway.

Thanks for pointing it, I have also removed this reference.

Attached is the patch that has been committed to SVN. I have added
missing licence headers to new files and clean whitespace a bit.

2013-01-28  Leif Ekblad  l...@rdos.net

* config.gcc (i[34567]86-*-rdos*, x86_64-*-rdos*): New targets.
* config/i386/i386.h (TARGET_RDOS): New macro.
(DEFAULT_LARGE_SECTION_THRESHOLD): New macro.
* config/i386/i386.c (ix86_option_override_internal): For 64bit
TARGET_RDOS, set ix86_cmodel to CM_MEDIUM_PIC and flag_pic to 1.
* config/i386/i386.opt (mlarge-data-threshold): Initialize to
DEFAULT_LARGE_SECTION_THRESHOLD.
* config/i386/i386.md (R14_REG, R15_REG): New constants.
* config/i386/rdos.h: New file.
* config/i386/rdos64.h: New file.

Thanks,
Uros.
Index: config/i386/i386.c
===
--- config/i386/i386.c  (revision 195515)
+++ config/i386/i386.c  (working copy)
@@ -3235,10 +3235,12 @@ ix86_option_override_internal (bool main_args_p)
 DLL, and is essentially just as efficient as direct addressing.  */
   if (TARGET_64BIT  DEFAULT_ABI == MS_ABI)
ix86_cmodel = CM_SMALL_PIC, flag_pic = 1;
+  else if (TARGET_64BIT  TARGET_RDOS)
+   ix86_cmodel = CM_MEDIUM_PIC, flag_pic = 1;
   else if (TARGET_64BIT)
ix86_cmodel = flag_pic ? CM_SMALL_PIC : CM_SMALL;
   else
-ix86_cmodel = CM_32;
+   ix86_cmodel = CM_32;
 }
   if (TARGET_MACHO  ix86_asm_dialect == ASM_INTEL)
 {
Index: config/i386/i386.h
===
--- config/i386/i386.h  (revision 195515)
+++ config/i386/i386.h  (working copy)
@@ -518,6 +518,9 @@ extern tree x86_mfence;
 #define MACHOPIC_INDIRECT 0
 #define MACHOPIC_PURE 0
 
+/* For the RDOS  */
+#define TARGET_RDOS 0
+
 /* For the Windows 64-bit ABI.  */
 #define TARGET_64BIT_MS_ABI (TARGET_64BIT  ix86_cfun_abi () == MS_ABI)
 
@@ -2081,6 +2084,10 @@ do { 
\
asm (SECTION_OP \n\t  \
call  CRT_MKSTR(__USER_LABEL_PREFIX__) #FUNC \n \
TEXT_SECTION_ASM_OP);
+
+/* Default threshold for putting data in large sections
+   with x86-64 medium memory model */
+#define DEFAULT_LARGE_SECTION_THRESHOLD 65536
 
 /* Which processor to tune code generation for.  */
 
Index: config/i386/i386.md
===
--- config/i386/i386.md (revision 195515)
+++ config/i386/i386.md (working copy)
@@ -300,6 +300,8 @@
(R11_REG40)
(R12_REG41)
(R13_REG42)
+   (R14_REG43)
+   (R15_REG44)
(XMM8_REG   45)
(XMM9_REG   46)
(XMM10_REG  47)
Index: config/i386/i386.opt
===
--- config/i386/i386.opt(revision 195515)
+++ config/i386/i386.opt(working copy)
@@ -140,7 +140,7 @@ Target RejectNegative Joined UInteger Var(ix86_bra
 Branches are this expensive (1-5, arbitrary units)
 
 mlarge-data-threshold=
-Target RejectNegative Joined UInteger Var(ix86_section_threshold) Init(65536)
+Target RejectNegative Joined UInteger Var(ix86_section_threshold) 
Init(DEFAULT_LARGE_SECTION_THRESHOLD)
 Data greater than given threshold will go into .ldata section in x86-64 medium 
model
 
 mcmodel=
Index: config/i386/rdos.h
===
--- config/i386/rdos.h  (revision 0)
+++ config/i386/rdos.h  (working copy)
@@ -0,0 +1,33 @@
+/* Definitions for RDOS on i386.
+   Copyright (C) 2013 Free Software Foundation, Inc.
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; 

Re: [PATCH] Adding target rdos to GCC

2013-01-28 Thread Leif Ekblad

That looks good. Thanks, Uros.

Leif


- Original Message - 
From: Uros Bizjak ubiz...@gmail.com

To: Leif Ekblad l...@rdos.net
Cc: Richard Biener rguent...@suse.de; gcc-patches@gcc.gnu.org; H.J. 
Lu hjl.to...@gmail.com; Jakub Jelinek ja...@redhat.com

Sent: Monday, January 28, 2013 9:45 PM
Subject: Re: [PATCH] Adding target rdos to GCC



On Mon, Jan 28, 2013 at 9:14 PM, Leif Ekblad l...@rdos.net wrote:

That is intentional. The gthr-rdos.h file is part of libgcc. My 
intention

was to first patch gcc, then update the patches for newlib, and finally
libgcc. The gthr-rdos.h file would reference include-files part of
newlib,
so this is kind of circular. I also cannot define the thread model for
RDOS
unless I define this file.

I see a couple of possible solutions:
1. Keep as is. You cannot build libgcc at the current stage anyway, and
the
bootstrap must be built without threading
2. Add an empty gthr-rdos.h file until libgcc is done
3. Remove the threading-model for now, and add it with libgcc instead.



I propose option 3.

Is it enough to remove gthr.m4 change from the patch in this case?


Yes, for all practical purposes. There is a reference to thread-file in
config.gcc, when threading is enabled, which doesn't work for 
bootstrapping

the compiler anyway.


Thanks for pointing it, I have also removed this reference.

Attached is the patch that has been committed to SVN. I have added
missing licence headers to new files and clean whitespace a bit.

2013-01-28  Leif Ekblad  l...@rdos.net

* config.gcc (i[34567]86-*-rdos*, x86_64-*-rdos*): New targets.
* config/i386/i386.h (TARGET_RDOS): New macro.
(DEFAULT_LARGE_SECTION_THRESHOLD): New macro.
* config/i386/i386.c (ix86_option_override_internal): For 64bit
TARGET_RDOS, set ix86_cmodel to CM_MEDIUM_PIC and flag_pic to 1.
* config/i386/i386.opt (mlarge-data-threshold): Initialize to
DEFAULT_LARGE_SECTION_THRESHOLD.
* config/i386/i386.md (R14_REG, R15_REG): New constants.
* config/i386/rdos.h: New file.
* config/i386/rdos64.h: New file.

Thanks,
Uros.





Re: [PATCH] Adding target rdos to GCC

2013-01-27 Thread Leif Ekblad

If the patch is ok, could some maintainer add it to trunk?

Regards,
Leif Ekblad


- Original Message - 
From: Richard Biener rguent...@suse.de

To: Uros Bizjak ubiz...@gmail.com
Cc: Leif Ekblad l...@rdos.net; gcc-patches@gcc.gnu.org; H.J. Lu 
hjl.to...@gmail.com; Jakub Jelinek ja...@redhat.com

Sent: Wednesday, January 09, 2013 9:37 AM
Subject: Re: [PATCH] Adding target rdos to GCC



On Wed, 9 Jan 2013, Uros Bizjak wrote:


On Tue, Jan 8, 2013 at 9:32 PM, Leif Ekblad l...@rdos.net wrote:
 After some new suggestions from Uros, I've made a new diff.


 Change log:
 * config/gthr.m4: Added rdos thread header.
 * gcc/config/i386/i386.c: Provided a way to define a default setting 
 for

 medium memory model and PIC using TARGET_RDOS define.
 * gcc/config/i386/i386.h: Defined TARGET_RDOS macro. Defined default 
 value

 for large-data-threshold.
 * gcc/config/i386/i386.md: Added r14 and r15 register names.
 * gcc/config/i386/i386.opt: Changed initial value for 
 large-data-threshold

 to DEFAULT_LARGE_SECTION_THRESHOLD.
 * gcc/config/i386/rdos.h: Common definitions for target rdos
 * gcc/config/i386/rdos64.h: Specific definitions for 64-bit rdos 
 target.

 * gcc/config.gcc: Added rdos targets

Please use present tense in ChangeLog (see many other entries).

 Tested on target rdos and rdos32.

This is OK for mainline, but the patch needs explicit approval from
Release Managers at this stage.


Ok with me.

Richard. 




Re: [PATCH] Adding target rdos to GCC

2013-01-27 Thread Uros Bizjak
On Mon, Jan 28, 2013 at 7:50 AM, Leif Ekblad l...@rdos.net wrote:

 If the patch is ok, could some maintainer add it to trunk?

There is no gthr-rdos.h file in your patch:

*** gcc-4.8-20121230/config/gthr.m4 2012-10-15 15:10:30.0 +0200
--- gcc-work/config/gthr.m4 2013-01-07 10:14:04.620667900 +0100
***
*** 21,26 
--- 21,27 
  tpf)  thread_header=config/s390/gthr-tpf.h ;;
  vxworks)  thread_header=config/gthr-vxworks.h ;;
  win32)thread_header=config/i386/gthr-win32.h ;;
+ rdos) thread_header=config/i386/gthr-rdos.h ;;

This file should be part of libgcc, so it needs its own ChangeLog.

Uros.


Re: [PATCH] Adding target rdos to GCC

2013-01-09 Thread Richard Biener
On Wed, 9 Jan 2013, Uros Bizjak wrote:

 On Tue, Jan 8, 2013 at 9:32 PM, Leif Ekblad l...@rdos.net wrote:
  After some new suggestions from Uros, I've made a new diff.
 
 
  Change log:
  * config/gthr.m4: Added rdos thread header.
  * gcc/config/i386/i386.c: Provided a way to define a default setting for
  medium memory model and PIC using TARGET_RDOS define.
  * gcc/config/i386/i386.h: Defined TARGET_RDOS macro. Defined default value
  for large-data-threshold.
  * gcc/config/i386/i386.md: Added r14 and r15 register names.
  * gcc/config/i386/i386.opt: Changed initial value for large-data-threshold
  to DEFAULT_LARGE_SECTION_THRESHOLD.
  * gcc/config/i386/rdos.h: Common definitions for target rdos
  * gcc/config/i386/rdos64.h: Specific definitions for 64-bit rdos target.
  * gcc/config.gcc: Added rdos targets
 
 Please use present tense in ChangeLog (see many other entries).
 
  Tested on target rdos and rdos32.
 
 This is OK for mainline, but the patch needs explicit approval from
 Release Managers at this stage.

Ok with me.

Richard.


Re: [PATCH] Adding target rdos to GCC

2013-01-08 Thread Leif Ekblad

After some new suggestions from Uros, I've made a new diff.

Change log:
* config/gthr.m4: Added rdos thread header.
* gcc/config/i386/i386.c: Provided a way to define a default setting for 
medium memory model and PIC using TARGET_RDOS define.
* gcc/config/i386/i386.h: Defined TARGET_RDOS macro. Defined default value 
for large-data-threshold.

* gcc/config/i386/i386.md: Added r14 and r15 register names.
* gcc/config/i386/i386.opt: Changed initial value for large-data-threshold 
to DEFAULT_LARGE_SECTION_THRESHOLD.

* gcc/config/i386/rdos.h: Common definitions for target rdos
* gcc/config/i386/rdos64.h: Specific definitions for 64-bit rdos target.
* gcc/config.gcc: Added rdos targets

Tested on target rdos and rdos32.

Leif Ekblad

- Original Message - 
From: Leif Ekblad l...@rdos.net

To: Uros Bizjak ubiz...@gmail.com; gcc-patches@gcc.gnu.org
Cc: H.J. Lu hjl.to...@gmail.com
Sent: Monday, January 07, 2013 11:13 PM
Subject: Re: [PATCH] Adding target rdos to GCC



Hello Uros,

I tried to use your suggestion and use DEFAULT_SECTION_THRESHOLD
in i386.opt, however this doesn't work for me. It seems the default is
always
65536 regardless of what I define in rdos.h. Therefore, I kept the design
as it was before.

Changing name to TARGET_RDOS seems reasonable, and this has been changed.
The location of the defines are also changed to the positions you 
proposed.


I added another include-file (rdos32.h) for the 32-bit target. Currently,
the
32-bit target is supported with OpenWatcom. While I want to make sure
the header-files compile for both 32- and 64-bits, 32-bit support is not
my primary target right now. I just need a GCC that can build the 32-bit
version.

New change log:
* config/gthr.m4: Added rdos thread header.
* gcc/config/i386/i386.c: Provided a way to define a default setting for
medium memory model and PIC using TARGET_RDOS define. Provided a way to
define a default value for large-data-threshold.
* gcc/config/i386/i386.h: Defined TARGET_RDOS macro. Defined default value
for large-data-threshold.
* gcc/config/i386/i386.md: Added r14 and r15 register names.
* gcc/config/i386/i386.opt: Changed initial value for large-data-threshold
to 0 to allow detection of modification.
* gcc/config/i386/rdos.h: Added new file for 64-bit rdos target.
* gcc/config/i386/rdos32.h: Added new file for 32-bit rdos target.
* gcc/config.gcc: Added rdos targets

Leif Ekblad


- Original Message - 
From: Uros Bizjak ubiz...@gmail.com

To: gcc-patches@gcc.gnu.org
Cc: Leif Ekblad l...@rdos.net; H.J. Lu hjl.to...@gmail.com
Sent: Sunday, January 06, 2013 9:32 PM
Subject: Re: [PATCH] Adding target rdos to GCC



Hello!

Updated patches with the suggestions below, except that the initial 
value

is 0
(which is not meaningful). I also added a setting in rdos target file to
use r15
for PIC instead of rbx.


*** gcc-4.8-20121230/gcc/config/i386/i386.c Thu Dec 27 02:58:06 2012
--- gcc-work/gcc/config/i386/i386.c Sun Jan  6 14:10:34 2013

+   if (ix86_section_threshold == 0)
+ ix86_section_threshold = DEFAULT_SECTION_THRESHOLD;

Please see attached patch on how to initialize an option.

*** gcc-4.8-20121230/gcc/config/i386/i386.h Wed Dec 19 17:04:12 2012
--- gcc-work/gcc/config/i386/i386.h Sun Jan  6 13:24:26 2013

+ #define TARGET_MEDIUM_PIC   0

You should just use TARGET_RDOS here (also, please see attached patch).

+ /* Default threshold for putting data in large sections with x86-64
+medium memory model */
+ #define DEFAULT_SECTION_THRESHOLD 65536

Do not put this define in the middle of i386.h section that deals with
alignment...

*** gcc-4.8-20121230/gcc/config/i386/rdos.h Thu Jan  1 01:00:00 1970
--- gcc-work/gcc/config/i386/rdos.h Sun Jan  6 13:20:12 2013

+ #undef REAL_PIC_OFFSET_TABLE_REGNUM
+ #define REAL_PIC_OFFSET_TABLE_REGNUM  R15_REG

Is this header also used for 32bit target? You should not use REX
registers for 32bit targets.

+ #undef TARGET_MEDIUM_PIC
+ #define TARGET_MEDIUM_PIC   1

TARGET_RDOS

+ #define DEFAULT_SECTION_THRESHOLD0x10

No hex numbers here. Also, you will need to #undef this first to
override the default in i386.h.

*** gcc-4.8-20121230/gcc/config.gcc Thu Nov 22 00:33:40 2012
--- gcc-work/gcc/config.gcc Fri Jan  4 21:08:46 2013

+ i[34567]86-*-rdos*)
+ tm_file=${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h
newlib-stdint.h
+ ;;

You forgot to include i386/rdos.h here (other headers too?). It is
needed at least for TARGET_EXECUTABLE_SUFFIX define.

Uros.





gcc-base.diff
Description: Binary data


Re: [PATCH] Adding target rdos to GCC

2013-01-08 Thread Uros Bizjak
On Tue, Jan 8, 2013 at 9:32 PM, Leif Ekblad l...@rdos.net wrote:
 After some new suggestions from Uros, I've made a new diff.


 Change log:
 * config/gthr.m4: Added rdos thread header.
 * gcc/config/i386/i386.c: Provided a way to define a default setting for
 medium memory model and PIC using TARGET_RDOS define.
 * gcc/config/i386/i386.h: Defined TARGET_RDOS macro. Defined default value
 for large-data-threshold.
 * gcc/config/i386/i386.md: Added r14 and r15 register names.
 * gcc/config/i386/i386.opt: Changed initial value for large-data-threshold
 to DEFAULT_LARGE_SECTION_THRESHOLD.
 * gcc/config/i386/rdos.h: Common definitions for target rdos
 * gcc/config/i386/rdos64.h: Specific definitions for 64-bit rdos target.
 * gcc/config.gcc: Added rdos targets

Please use present tense in ChangeLog (see many other entries).

 Tested on target rdos and rdos32.

This is OK for mainline, but the patch needs explicit approval from
Release Managers at this stage.

Thanks,
Uros.


Re: [PATCH] Adding target rdos to GCC

2013-01-07 Thread Leif Ekblad

Hello Uros,

I tried to use your suggestion and use DEFAULT_SECTION_THRESHOLD
in i386.opt, however this doesn't work for me. It seems the default is 
always

65536 regardless of what I define in rdos.h. Therefore, I kept the design
as it was before.

Changing name to TARGET_RDOS seems reasonable, and this has been changed.
The location of the defines are also changed to the positions you proposed.

I added another include-file (rdos32.h) for the 32-bit target. Currently, 
the

32-bit target is supported with OpenWatcom. While I want to make sure
the header-files compile for both 32- and 64-bits, 32-bit support is not
my primary target right now. I just need a GCC that can build the 32-bit
version.

New change log:
* config/gthr.m4: Added rdos thread header.
* gcc/config/i386/i386.c: Provided a way to define a default setting for 
medium memory model and PIC using TARGET_RDOS define. Provided a way to 
define a default value for large-data-threshold.
* gcc/config/i386/i386.h: Defined TARGET_RDOS macro. Defined default value 
for large-data-threshold.

* gcc/config/i386/i386.md: Added r14 and r15 register names.
* gcc/config/i386/i386.opt: Changed initial value for large-data-threshold 
to 0 to allow detection of modification.

* gcc/config/i386/rdos.h: Added new file for 64-bit rdos target.
* gcc/config/i386/rdos32.h: Added new file for 32-bit rdos target.
* gcc/config.gcc: Added rdos targets

Leif Ekblad


- Original Message - 
From: Uros Bizjak ubiz...@gmail.com

To: gcc-patches@gcc.gnu.org
Cc: Leif Ekblad l...@rdos.net; H.J. Lu hjl.to...@gmail.com
Sent: Sunday, January 06, 2013 9:32 PM
Subject: Re: [PATCH] Adding target rdos to GCC



Hello!

Updated patches with the suggestions below, except that the initial value 
is 0
(which is not meaningful). I also added a setting in rdos target file to 
use r15

for PIC instead of rbx.


*** gcc-4.8-20121230/gcc/config/i386/i386.c Thu Dec 27 02:58:06 2012
--- gcc-work/gcc/config/i386/i386.c Sun Jan  6 14:10:34 2013

+   if (ix86_section_threshold == 0)
+ ix86_section_threshold = DEFAULT_SECTION_THRESHOLD;

Please see attached patch on how to initialize an option.

*** gcc-4.8-20121230/gcc/config/i386/i386.h Wed Dec 19 17:04:12 2012
--- gcc-work/gcc/config/i386/i386.h Sun Jan  6 13:24:26 2013

+ #define TARGET_MEDIUM_PIC   0

You should just use TARGET_RDOS here (also, please see attached patch).

+ /* Default threshold for putting data in large sections with x86-64
+medium memory model */
+ #define DEFAULT_SECTION_THRESHOLD 65536

Do not put this define in the middle of i386.h section that deals with
alignment...

*** gcc-4.8-20121230/gcc/config/i386/rdos.h Thu Jan  1 01:00:00 1970
--- gcc-work/gcc/config/i386/rdos.h Sun Jan  6 13:20:12 2013

+ #undef REAL_PIC_OFFSET_TABLE_REGNUM
+ #define REAL_PIC_OFFSET_TABLE_REGNUM  R15_REG

Is this header also used for 32bit target? You should not use REX
registers for 32bit targets.

+ #undef TARGET_MEDIUM_PIC
+ #define TARGET_MEDIUM_PIC   1

TARGET_RDOS

+ #define DEFAULT_SECTION_THRESHOLD0x10

No hex numbers here. Also, you will need to #undef this first to
override the default in i386.h.

*** gcc-4.8-20121230/gcc/config.gcc Thu Nov 22 00:33:40 2012
--- gcc-work/gcc/config.gcc Fri Jan  4 21:08:46 2013

+ i[34567]86-*-rdos*)
+ tm_file=${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h
newlib-stdint.h
+ ;;

You forgot to include i386/rdos.h here (other headers too?). It is
needed at least for TARGET_EXECUTABLE_SUFFIX define.

Uros.



gcc-base.diff
Description: Binary data


Re: [PATCH] Adding target rdos to GCC

2013-01-06 Thread Leif Ekblad
Updated patches with the suggestions below, except that the initial value is 
0
(which is not meaningful). I also added a setting in rdos target file to use 
r15

for PIC instead of rbx.

New change log:
* config/gthr.m4: Added rdos thread header.
* gcc/config/i386/i386.c: Provided a way to define a default setting for 
medium memory model and PIC. Provided a way to define a default value for 
large-data-threshold.
* gcc/config/i386/i386.h: Defined default value for medium memory model  
PIC. Defined default value for large-data-threshold.

* gcc/config/i386/i386.md: Added r14 and r15 register names.
* gcc/config/i386/i386.opt: Changed initial value for large-data-threshold 
to 0 to allow detection of modification.

* gcc/config/i386/rdos.h: Added new file for rdos target definition.
* gcc/config.gcc: Added rdos target

Tested for target rdos and rdos32.

Regards,
Leif Ekblad


- Original Message - 
From: H.J. Lu hjl.to...@gmail.com

To: Leif Ekblad l...@rdos.net
Cc: GCC Patches gcc-patches@gcc.gnu.org
Sent: Friday, January 04, 2013 11:32 PM
Subject: Re: [PATCH] Adding target rdos to GCC



On Fri, Jan 4, 2013 at 2:22 PM, Leif Ekblad l...@rdos.net wrote:

Change log:
* config/gthr.m4: Added rdos thread header.
* gcc/config/i386/i386.c: Provided a way to define a default setting for
medium memory model and PIC. Provided a way to define a default value for
large-data-threshold.
* gcc/config/i386/i386.h: Defined default value for medium memory model 
PIC.
* gcc/config/i386/rdos.h: Added new file for rdos target definition.
* gcc/config.gcc: Added rdos target

The change to gthr.m4 requires rebuilding the configure scripts.

Tested with target rdos and rdos32. Is this ok for trunk?

Regards,
Leif Ekblad


+ #ifdef TARGET_SECTION_THRESHOLD
+   ix86_section_threshold = TARGET_SECTION_THRESHOLD;
+ #endif

You should

1. Add DEFAULT_SECTION_THRESHOLD and set it to
65536.
2. Change the init value of  ix86_section_threshold to -1.
3. Set ix86_section_threshold to DEFAULT_SECTION_THRESHOLD
if it is -1.


--
H.J. 


gcc.diff
Description: Binary data


Re: [PATCH] Adding target rdos to GCC

2013-01-06 Thread Uros Bizjak
Hello!

 Updated patches with the suggestions below, except that the initial value is 0
 (which is not meaningful). I also added a setting in rdos target file to use 
 r15
 for PIC instead of rbx.

*** gcc-4.8-20121230/gcc/config/i386/i386.c Thu Dec 27 02:58:06 2012
--- gcc-work/gcc/config/i386/i386.c Sun Jan  6 14:10:34 2013

+   if (ix86_section_threshold == 0)
+ ix86_section_threshold = DEFAULT_SECTION_THRESHOLD;

Please see attached patch on how to initialize an option.

*** gcc-4.8-20121230/gcc/config/i386/i386.h Wed Dec 19 17:04:12 2012
--- gcc-work/gcc/config/i386/i386.h Sun Jan  6 13:24:26 2013

+ #define TARGET_MEDIUM_PIC   0

You should just use TARGET_RDOS here (also, please see attached patch).

+ /* Default threshold for putting data in large sections with x86-64
+medium memory model */
+ #define DEFAULT_SECTION_THRESHOLD 65536

Do not put this define in the middle of i386.h section that deals with
alignment...

*** gcc-4.8-20121230/gcc/config/i386/rdos.h Thu Jan  1 01:00:00 1970
--- gcc-work/gcc/config/i386/rdos.h Sun Jan  6 13:20:12 2013

+ #undef REAL_PIC_OFFSET_TABLE_REGNUM
+ #define REAL_PIC_OFFSET_TABLE_REGNUM  R15_REG

Is this header also used for 32bit target? You should not use REX
registers for 32bit targets.

+ #undef TARGET_MEDIUM_PIC
+ #define TARGET_MEDIUM_PIC   1

TARGET_RDOS

+ #define DEFAULT_SECTION_THRESHOLD0x10

No hex numbers here. Also, you will need to #undef this first to
override the default in i386.h.

*** gcc-4.8-20121230/gcc/config.gcc Thu Nov 22 00:33:40 2012
--- gcc-work/gcc/config.gcc Fri Jan  4 21:08:46 2013

+ i[34567]86-*-rdos*)
+ tm_file=${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h
newlib-stdint.h
+ ;;

You forgot to include i386/rdos.h here (other headers too?). It is
needed at least for TARGET_EXECUTABLE_SUFFIX define.

Uros.
Index: i386.c
===
--- i386.c  (revision 194945)
+++ i386.c  (working copy)
@@ -3239,6 +3239,8 @@
 DLL, and is essentially just as efficient as direct addressing.  */
   if (TARGET_64BIT  DEFAULT_ABI == MS_ABI)
ix86_cmodel = CM_SMALL_PIC, flag_pic = 1;
+  else if (TARGET_64BIT  TARGET_RDOS)
+   ix86_cmodel = CM_MEDIUM_PIC, flag_pic = 1;
   else if (TARGET_64BIT)
ix86_cmodel = flag_pic ? CM_SMALL_PIC : CM_SMALL;
   else
Index: i386.h
===
--- i386.h  (revision 194945)
+++ i386.h  (working copy)
@@ -519,6 +519,9 @@
 #define MACHOPIC_INDIRECT 0
 #define MACHOPIC_PURE 0
 
+/* For the RDOS  */
+#define TARGET_RDOS 0
+
 /* For the Windows 64-bit ABI.  */
 #define TARGET_64BIT_MS_ABI (TARGET_64BIT  ix86_cfun_abi () == MS_ABI)
 
@@ -2081,6 +2084,10 @@
asm (SECTION_OP \n\t  \
call  CRT_MKSTR(__USER_LABEL_PREFIX__) #FUNC \n \
TEXT_SECTION_ASM_OP);
+
+/* Default threshold for putting data in large sections
+   with x86-64 medium memory model */
+#define DEFAULT_LARGE_SECTION_THRESHOLD 65536
 
 /* Which processor to tune code generation for.  */
 
Index: i386.opt
===
--- i386.opt(revision 194945)
+++ i386.opt(working copy)
@@ -141,7 +141,7 @@
 Branches are this expensive (1-5, arbitrary units)
 
 mlarge-data-threshold=
-Target RejectNegative Joined UInteger Var(ix86_section_threshold) Init(65536)
+Target RejectNegative Joined UInteger Var(ix86_section_threshold) 
Init(DEFAULT_LARGE_SECTION_THRESHOLD)
 Data greater than given threshold will go into .ldata section in x86-64 medium 
model
 
 mcmodel=


Re: [PATCH] Adding target rdos to GCC

2013-01-04 Thread H.J. Lu
On Fri, Jan 4, 2013 at 2:22 PM, Leif Ekblad l...@rdos.net wrote:
 Change log:
 * config/gthr.m4: Added rdos thread header.
 * gcc/config/i386/i386.c: Provided a way to define a default setting for
 medium memory model and PIC. Provided a way to define a default value for
 large-data-threshold.
 * gcc/config/i386/i386.h: Defined default value for medium memory model 
 PIC.
 * gcc/config/i386/rdos.h: Added new file for rdos target definition.
 * gcc/config.gcc: Added rdos target

 The change to gthr.m4 requires rebuilding the configure scripts.

 Tested with target rdos and rdos32. Is this ok for trunk?

 Regards,
 Leif Ekblad

+ #ifdef TARGET_SECTION_THRESHOLD
+   ix86_section_threshold = TARGET_SECTION_THRESHOLD;
+ #endif

You should

1. Add DEFAULT_SECTION_THRESHOLD and set it to
65536.
2. Change the init value of  ix86_section_threshold to -1.
3. Set ix86_section_threshold to DEFAULT_SECTION_THRESHOLD
if it is -1.


-- 
H.J.