[avr,applied] Fix PR target/113156 - ICE when building libgcc

Message ID b2200ee1-d467-41ec-b380-dd437586a6ed@gjlay.de
State New
Headers
Series [avr,applied] Fix PR target/113156 - ICE when building libgcc |

Checks

Context Check Description
linaro-tcwg-bot/tcwg_gcc_build--master-aarch64 fail Patch failed to apply
linaro-tcwg-bot/tcwg_gcc_build--master-arm fail Patch failed to apply

Commit Message

Georg-Johann Lay Jan. 15, 2024, 9:50 a.m. UTC
  I went ahead and installed Andrew's patch

https://gcc.gnu.org/r14-7240

Johann

Am 15.01.24 um 00:19 schrieb Levente via Gcc-help:
> I'm trying to set up a toolchain for avr-dd MCUs, and I get this error 
> message when I try to compile gcc:
> Lev

--

Author: Andrew Pinski <quic_apinski@quicinc.com>
Date:   Mon Jan 15 10:31:36 2024 +0100

     AVR: target/113156 - Fix ICE due to missing "Save" on 
-m[long-]double= options.

             Multilib options -mdouble= and -mlong-double= are not 
orthogonal:
             TARGET_HANDLE_OPTION = avr-common.cc::avr_handle_option() 
sets them
             such that  sizeof(double) <= sizeof(long double)  is always 
true.

     gcc/
             PR target/113156
             * config/avr/avr.opt (-mdouble, -mlong-double): Add "Save" 
flag.
             (-mbranch-cost): Set "Optimization" flag.


  mn-flash=
@@ -61,7 +61,7 @@ Target RejectNegative Mask(NO_INTERRUPTS)
  Change the stack pointer without disabling interrupts.

  mbranch-cost=
-Target Joined RejectNegative UInteger Var(avr_branch_cost) Init(0)
+Target Joined RejectNegative UInteger Var(avr_branch_cost) Init(0) 
Optimization
  Set the branch costs for conditional branch instructions.  Reasonable 
values are small, non-negative integers.  The default branch cost is 0.

  mmain-is-OS_task
@@ -124,11 +124,11 @@ Target Mask(ABSDATA)
  Assume that all data in static storage can be accessed by LDS / STS. 
This option is only useful for reduced Tiny devices.

  mdouble=
-Target Joined RejectNegative Var(avr_double) Init(0) Enum(avr_bits_e)
+Target Joined RejectNegative Var(avr_double) Init(0) Enum(avr_bits_e) Save
  -mdouble=<BITS>	Use <BITS> bits wide double type.

  mlong-double=
-Target Joined RejectNegative Var(avr_long_double) Init(0) Enum(avr_bits_e)
+Target Joined RejectNegative Var(avr_long_double) Init(0) 
Enum(avr_bits_e) Save
  -mlong-double=<BITS>	Use <BITS> bits wide long double type.

  nodevicelib
  

Patch

diff --git a/gcc/config/avr/avr.opt b/gcc/config/avr/avr.opt
index ee0b40603f0..c9f2b4d2fe5 100644
--- a/gcc/config/avr/avr.opt
+++ b/gcc/config/avr/avr.opt
@@ -27,7 +27,7 @@  Target RejectNegative Joined Var(avr_mmcu) 
MissingArgError(missing device or arc
  -mmcu=MCU	Select the target MCU.

  mgas-isr-prologues
-Target Var(avr_gasisr_prologues) UInteger Init(0) Optimization
+Target Var(avr_gasisr_prologues) UInteger Init(0) Optimization
  Allow usage of __gcc_isr pseudo instructions in ISR prologues and 
epilogues.