[gcc] RTEMS: Tune multilib selection

Message ID 20230223114826.79148-1-sebastian.huber@embedded-brains.de
State Repeat Merge
Headers
Series [gcc] RTEMS: Tune multilib selection |

Checks

Context Check Description
snail/gcc-patch-check warning Git am fail log

Commit Message

Sebastian Huber Feb. 23, 2023, 11:48 a.m. UTC
  gcc/ChangeLog:

	* config/riscv/t-rtems: Keep only -mcmodel=medany 64-bit multilibs.
	Add non-compact 32-bit multilibs.
---
 gcc/config/riscv/t-rtems | 17 +++++++++--------
 1 file changed, 9 insertions(+), 8 deletions(-)
  

Comments

Palmer Dabbelt Feb. 23, 2023, 6:38 p.m. UTC | #1
On Thu, 23 Feb 2023 03:48:26 PST (-0800), sebastian.huber@embedded-brains.de wrote:
> gcc/ChangeLog:
>
> 	* config/riscv/t-rtems: Keep only -mcmodel=medany 64-bit multilibs.
> 	Add non-compact 32-bit multilibs.
> ---
>  gcc/config/riscv/t-rtems | 17 +++++++++--------
>  1 file changed, 9 insertions(+), 8 deletions(-)
>
> diff --git a/gcc/config/riscv/t-rtems b/gcc/config/riscv/t-rtems
> index 41f5927fc87..19b12030895 100644
> --- a/gcc/config/riscv/t-rtems
> +++ b/gcc/config/riscv/t-rtems
> @@ -1,8 +1,8 @@
>  MULTILIB_OPTIONS	=
>  MULTILIB_DIRNAMES	=
>  
> -MULTILIB_OPTIONS	+= march=rv32i/march=rv32im/march=rv32imafd/march=rv32iac/march=rv32imac/march=rv32imafc/march=rv64imafd/march=rv64imac/march=rv64imafdc
> -MULTILIB_DIRNAMES	+= rv32i       rv32im       rv32imafd       rv32iac       rv32imac       rv32imafc       rv64imafd       rv64imac       rv64imafdc
> +MULTILIB_OPTIONS	+= march=rv32i/march=rv32iac/march=rv32im/march=rv32ima/march=rv32imac/march=rv32imaf/march=rv32imafc/march=rv32imafd/march=rv32imafdc/march=rv64ima/march=rv64imac/march=rv64imafd/march=rv64imafdc
> +MULTILIB_DIRNAMES	+= rv32i       rv32iac       rv32im       rv32ima       rv32imac       rv32imaf       rv32imafc       rv32imafd       rv32imafdc       rv64ima       rv64imac       rv64imafd       rv64imafdc
>  
>  MULTILIB_OPTIONS	+= mabi=ilp32/mabi=ilp32f/mabi=ilp32d/mabi=lp64/mabi=lp64d
>  MULTILIB_DIRNAMES	+= ilp32      ilp32f      ilp32d      lp64      lp64d
> @@ -12,14 +12,15 @@ MULTILIB_DIRNAMES	+= medany
>  
>  MULTILIB_REQUIRED	=
>  MULTILIB_REQUIRED	+= march=rv32i/mabi=ilp32
> -MULTILIB_REQUIRED	+= march=rv32im/mabi=ilp32
> -MULTILIB_REQUIRED	+= march=rv32imafd/mabi=ilp32d
>  MULTILIB_REQUIRED	+= march=rv32iac/mabi=ilp32
> +MULTILIB_REQUIRED	+= march=rv32im/mabi=ilp32
> +MULTILIB_REQUIRED	+= march=rv32ima/mabi=ilp32
>  MULTILIB_REQUIRED	+= march=rv32imac/mabi=ilp32
> +MULTILIB_REQUIRED	+= march=rv32imaf/mabi=ilp32f
>  MULTILIB_REQUIRED	+= march=rv32imafc/mabi=ilp32f
> -MULTILIB_REQUIRED	+= march=rv64imafd/mabi=lp64d
> -MULTILIB_REQUIRED	+= march=rv64imafd/mabi=lp64d/mcmodel=medany
> -MULTILIB_REQUIRED	+= march=rv64imac/mabi=lp64
> +MULTILIB_REQUIRED	+= march=rv32imafd/mabi=ilp32d
> +MULTILIB_REQUIRED	+= march=rv32imafdc/mabi=ilp32d
> +MULTILIB_REQUIRED	+= march=rv64ima/mabi=lp64/mcmodel=medany
>  MULTILIB_REQUIRED	+= march=rv64imac/mabi=lp64/mcmodel=medany
> -MULTILIB_REQUIRED	+= march=rv64imafdc/mabi=lp64d
> +MULTILIB_REQUIRED	+= march=rv64imafd/mabi=lp64d/mcmodel=medany
>  MULTILIB_REQUIRED	+= march=rv64imafdc/mabi=lp64d/mcmodel=medany

Reviewed-by: Palmer Dabbelt <palmer@rivosinc.com>

IMO it's fine to remove multilibs from the default set.  It could be 
seen as breaking users, but IIRC last time we talked about something 
like this it was OK as otherwise we're going to end up with a huge set 
of multilibs for defunct ISAs.  This one is also extra safe, since 
moving to medany shouldn't break any users (aside from maybe a slight 
performance issue).

Are you aiming for GCC-13 with this?  I wouldn't be opposed to that: 
there's some risk of breaking users this late in the process, but my 
guess is that most of them aren't looking until release anyway.  Still 
better to hold off, but if there's something in RTEMS land that benefits 
from this being early then I think it's fine.
  
Sebastian Huber Feb. 24, 2023, 6:23 a.m. UTC | #2
On 23.02.23 19:38, Palmer Dabbelt wrote:
> On Thu, 23 Feb 2023 03:48:26 PST (-0800), 
> sebastian.huber@embedded-brains.de wrote:
>> gcc/ChangeLog:
>>
>>     * config/riscv/t-rtems: Keep only -mcmodel=medany 64-bit multilibs.
>>     Add non-compact 32-bit multilibs.
>> ---
>>  gcc/config/riscv/t-rtems | 17 +++++++++--------
>>  1 file changed, 9 insertions(+), 8 deletions(-)
>>
>> diff --git a/gcc/config/riscv/t-rtems b/gcc/config/riscv/t-rtems
>> index 41f5927fc87..19b12030895 100644
>> --- a/gcc/config/riscv/t-rtems
>> +++ b/gcc/config/riscv/t-rtems
>> @@ -1,8 +1,8 @@
>>  MULTILIB_OPTIONS    =
>>  MULTILIB_DIRNAMES    =
>>
>> -MULTILIB_OPTIONS    += 
>> march=rv32i/march=rv32im/march=rv32imafd/march=rv32iac/march=rv32imac/march=rv32imafc/march=rv64imafd/march=rv64imac/march=rv64imafdc
>> -MULTILIB_DIRNAMES    += rv32i       rv32im       rv32imafd 
>> rv32iac       rv32imac       rv32imafc       rv64imafd rv64imac       
>> rv64imafdc
>> +MULTILIB_OPTIONS    += 
>> march=rv32i/march=rv32iac/march=rv32im/march=rv32ima/march=rv32imac/march=rv32imaf/march=rv32imafc/march=rv32imafd/march=rv32imafdc/march=rv64ima/march=rv64imac/march=rv64imafd/march=rv64imafdc
>> +MULTILIB_DIRNAMES    += rv32i       rv32iac       rv32im 
>> rv32ima       rv32imac       rv32imaf       rv32imafc rv32imafd       
>> rv32imafdc       rv64ima       rv64imac rv64imafd       rv64imafdc
>>
>>  MULTILIB_OPTIONS    += 
>> mabi=ilp32/mabi=ilp32f/mabi=ilp32d/mabi=lp64/mabi=lp64d
>>  MULTILIB_DIRNAMES    += ilp32      ilp32f      ilp32d      lp64      
>> lp64d
>> @@ -12,14 +12,15 @@ MULTILIB_DIRNAMES    += medany
>>
>>  MULTILIB_REQUIRED    =
>>  MULTILIB_REQUIRED    += march=rv32i/mabi=ilp32
>> -MULTILIB_REQUIRED    += march=rv32im/mabi=ilp32
>> -MULTILIB_REQUIRED    += march=rv32imafd/mabi=ilp32d
>>  MULTILIB_REQUIRED    += march=rv32iac/mabi=ilp32
>> +MULTILIB_REQUIRED    += march=rv32im/mabi=ilp32
>> +MULTILIB_REQUIRED    += march=rv32ima/mabi=ilp32
>>  MULTILIB_REQUIRED    += march=rv32imac/mabi=ilp32
>> +MULTILIB_REQUIRED    += march=rv32imaf/mabi=ilp32f
>>  MULTILIB_REQUIRED    += march=rv32imafc/mabi=ilp32f
>> -MULTILIB_REQUIRED    += march=rv64imafd/mabi=lp64d
>> -MULTILIB_REQUIRED    += march=rv64imafd/mabi=lp64d/mcmodel=medany
>> -MULTILIB_REQUIRED    += march=rv64imac/mabi=lp64
>> +MULTILIB_REQUIRED    += march=rv32imafd/mabi=ilp32d
>> +MULTILIB_REQUIRED    += march=rv32imafdc/mabi=ilp32d
>> +MULTILIB_REQUIRED    += march=rv64ima/mabi=lp64/mcmodel=medany
>>  MULTILIB_REQUIRED    += march=rv64imac/mabi=lp64/mcmodel=medany
>> -MULTILIB_REQUIRED    += march=rv64imafdc/mabi=lp64d
>> +MULTILIB_REQUIRED    += march=rv64imafd/mabi=lp64d/mcmodel=medany
>>  MULTILIB_REQUIRED    += march=rv64imafdc/mabi=lp64d/mcmodel=medany
> 
> Reviewed-by: Palmer Dabbelt <palmer@rivosinc.com>
> 
> IMO it's fine to remove multilibs from the default set.  It could be 
> seen as breaking users, but IIRC last time we talked about something 
> like this it was OK as otherwise we're going to end up with a huge set 
> of multilibs for defunct ISAs.  This one is also extra safe, since 
> moving to medany shouldn't break any users (aside from maybe a slight 
> performance issue).

Thanks for the review. Which performance issue may show up here?
> 
> Are you aiming for GCC-13 with this?  I wouldn't be opposed to that: 
> there's some risk of breaking users this late in the process, but my 
> guess is that most of them aren't looking until release anyway.  Still 
> better to hold off, but if there's something in RTEMS land that benefits 
> from this being early then I think it's fine.

RTEMS has its own release cycle, so I would back port this change to all 
GCC branches which may be used with RTEMS 6 and this is GCC 10 or later.
  

Patch

diff --git a/gcc/config/riscv/t-rtems b/gcc/config/riscv/t-rtems
index 41f5927fc87..19b12030895 100644
--- a/gcc/config/riscv/t-rtems
+++ b/gcc/config/riscv/t-rtems
@@ -1,8 +1,8 @@ 
 MULTILIB_OPTIONS	=
 MULTILIB_DIRNAMES	=
 
-MULTILIB_OPTIONS	+= march=rv32i/march=rv32im/march=rv32imafd/march=rv32iac/march=rv32imac/march=rv32imafc/march=rv64imafd/march=rv64imac/march=rv64imafdc
-MULTILIB_DIRNAMES	+= rv32i       rv32im       rv32imafd       rv32iac       rv32imac       rv32imafc       rv64imafd       rv64imac       rv64imafdc
+MULTILIB_OPTIONS	+= march=rv32i/march=rv32iac/march=rv32im/march=rv32ima/march=rv32imac/march=rv32imaf/march=rv32imafc/march=rv32imafd/march=rv32imafdc/march=rv64ima/march=rv64imac/march=rv64imafd/march=rv64imafdc
+MULTILIB_DIRNAMES	+= rv32i       rv32iac       rv32im       rv32ima       rv32imac       rv32imaf       rv32imafc       rv32imafd       rv32imafdc       rv64ima       rv64imac       rv64imafd       rv64imafdc
 
 MULTILIB_OPTIONS	+= mabi=ilp32/mabi=ilp32f/mabi=ilp32d/mabi=lp64/mabi=lp64d
 MULTILIB_DIRNAMES	+= ilp32      ilp32f      ilp32d      lp64      lp64d
@@ -12,14 +12,15 @@  MULTILIB_DIRNAMES	+= medany
 
 MULTILIB_REQUIRED	=
 MULTILIB_REQUIRED	+= march=rv32i/mabi=ilp32
-MULTILIB_REQUIRED	+= march=rv32im/mabi=ilp32
-MULTILIB_REQUIRED	+= march=rv32imafd/mabi=ilp32d
 MULTILIB_REQUIRED	+= march=rv32iac/mabi=ilp32
+MULTILIB_REQUIRED	+= march=rv32im/mabi=ilp32
+MULTILIB_REQUIRED	+= march=rv32ima/mabi=ilp32
 MULTILIB_REQUIRED	+= march=rv32imac/mabi=ilp32
+MULTILIB_REQUIRED	+= march=rv32imaf/mabi=ilp32f
 MULTILIB_REQUIRED	+= march=rv32imafc/mabi=ilp32f
-MULTILIB_REQUIRED	+= march=rv64imafd/mabi=lp64d
-MULTILIB_REQUIRED	+= march=rv64imafd/mabi=lp64d/mcmodel=medany
-MULTILIB_REQUIRED	+= march=rv64imac/mabi=lp64
+MULTILIB_REQUIRED	+= march=rv32imafd/mabi=ilp32d
+MULTILIB_REQUIRED	+= march=rv32imafdc/mabi=ilp32d
+MULTILIB_REQUIRED	+= march=rv64ima/mabi=lp64/mcmodel=medany
 MULTILIB_REQUIRED	+= march=rv64imac/mabi=lp64/mcmodel=medany
-MULTILIB_REQUIRED	+= march=rv64imafdc/mabi=lp64d
+MULTILIB_REQUIRED	+= march=rv64imafd/mabi=lp64d/mcmodel=medany
 MULTILIB_REQUIRED	+= march=rv64imafdc/mabi=lp64d/mcmodel=medany