* [PATCH] rs6000: Fix restored rs6000_long_double_type_size
2021-07-12 17:20 ` Segher Boessenkool
@ 2021-07-23 5:45 ` Martin Liska
2021-07-23 5:45 ` Martin Liska
` (3 subsequent siblings)
4 siblings, 0 replies; 16+ messages in thread
From: Martin Liska @ 2021-07-23 5:45 UTC (permalink / raw)
To: gcc-patches; +Cc: segher
As mentioned in the "Fallout: save/restore target options in handle_optimize_attribute"
thread, we need to support target option restore
of rs6000_long_double_type_size == FLOAT_PRECISION_TFmode.
gcc/ChangeLog:
* config/rs6000/rs6000.c (rs6000_option_override_internal): When
a target option is restored, it can have
rs6000_long_double_type_size set to FLOAT_PRECISION_TFmode
and error should not be emitted.
gcc/testsuite/ChangeLog:
* gcc.target/powerpc/pragma-optimize.c: New test.
---
gcc/config/rs6000/rs6000.c | 2 ++
gcc/testsuite/gcc.target/powerpc/pragma-optimize.c | 13 +++++++++++++
2 files changed, 15 insertions(+)
create mode 100644 gcc/testsuite/gcc.target/powerpc/pragma-optimize.c
diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c
index 279f00cc648..510936a9948 100644
--- a/gcc/config/rs6000/rs6000.c
+++ b/gcc/config/rs6000/rs6000.c
@@ -4186,6 +4186,8 @@ rs6000_option_override_internal (bool global_init_p)
else
rs6000_long_double_type_size = default_long_double_size;
}
+ else if (rs6000_long_double_type_size == FLOAT_PRECISION_TFmode)
+ ; /* The option value can be seen when cl_target_option_restore is called. */
else if (rs6000_long_double_type_size == 128)
rs6000_long_double_type_size = FLOAT_PRECISION_TFmode;
else if (global_options_set.x_rs6000_ieeequad)
diff --git a/gcc/testsuite/gcc.target/powerpc/pragma-optimize.c b/gcc/testsuite/gcc.target/powerpc/pragma-optimize.c
new file mode 100644
index 00000000000..4a86b58f27c
--- /dev/null
+++ b/gcc/testsuite/gcc.target/powerpc/pragma-optimize.c
@@ -0,0 +1,13 @@
+/* { dg-options "-O2 -mlong-double-128 -mabi=ibmlongdouble" } */
+
+extern unsigned long int x;
+extern float f (float);
+extern __typeof (f) f_power8;
+extern __typeof (f) f_power9;
+extern __typeof (f) f __attribute__ ((ifunc ("f_ifunc")));
+static __attribute__ ((optimize ("-fno-stack-protector"))) __typeof (f) *
+f_ifunc (void)
+{
+ __typeof (f) *res = x ? f_power9 : f_power8;
+ return res;
+}
--
2.32.0
^ permalink raw reply [flat|nested] 16+ messages in thread
* [PATCH] rs6000: Fix restored rs6000_long_double_type_size
2021-07-12 17:20 ` Segher Boessenkool
2021-07-23 5:45 ` Martin Liska
@ 2021-07-23 5:45 ` Martin Liska
2021-07-23 5:45 ` Martin Liska
` (2 subsequent siblings)
4 siblings, 0 replies; 16+ messages in thread
From: Martin Liska @ 2021-07-23 5:45 UTC (permalink / raw)
To: gcc-patches; +Cc: segher
As mentioned in the "Fallout: save/restore target options in handle_optimize_attribute"
thread, we need to support target option restore
of rs6000_long_double_type_size == FLOAT_PRECISION_TFmode.
gcc/ChangeLog:
* config/rs6000/rs6000.c (rs6000_option_override_internal): When
a target option is restored, it can have
rs6000_long_double_type_size set to FLOAT_PRECISION_TFmode
and error should not be emitted.
gcc/testsuite/ChangeLog:
* gcc.target/powerpc/pragma-optimize.c: New test.
---
gcc/config/rs6000/rs6000.c | 2 ++
gcc/testsuite/gcc.target/powerpc/pragma-optimize.c | 13 +++++++++++++
2 files changed, 15 insertions(+)
create mode 100644 gcc/testsuite/gcc.target/powerpc/pragma-optimize.c
diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c
index 279f00cc648..510936a9948 100644
--- a/gcc/config/rs6000/rs6000.c
+++ b/gcc/config/rs6000/rs6000.c
@@ -4186,6 +4186,8 @@ rs6000_option_override_internal (bool global_init_p)
else
rs6000_long_double_type_size = default_long_double_size;
}
+ else if (rs6000_long_double_type_size == FLOAT_PRECISION_TFmode)
+ ; /* The option value can be seen when cl_target_option_restore is called. */
else if (rs6000_long_double_type_size == 128)
rs6000_long_double_type_size = FLOAT_PRECISION_TFmode;
else if (global_options_set.x_rs6000_ieeequad)
diff --git a/gcc/testsuite/gcc.target/powerpc/pragma-optimize.c b/gcc/testsuite/gcc.target/powerpc/pragma-optimize.c
new file mode 100644
index 00000000000..4a86b58f27c
--- /dev/null
+++ b/gcc/testsuite/gcc.target/powerpc/pragma-optimize.c
@@ -0,0 +1,13 @@
+/* { dg-options "-O2 -mlong-double-128 -mabi=ibmlongdouble" } */
+
+extern unsigned long int x;
+extern float f (float);
+extern __typeof (f) f_power8;
+extern __typeof (f) f_power9;
+extern __typeof (f) f __attribute__ ((ifunc ("f_ifunc")));
+static __attribute__ ((optimize ("-fno-stack-protector"))) __typeof (f) *
+f_ifunc (void)
+{
+ __typeof (f) *res = x ? f_power9 : f_power8;
+ return res;
+}
--
2.32.0
^ permalink raw reply [flat|nested] 16+ messages in thread
* [PATCH] rs6000: Fix restored rs6000_long_double_type_size
2021-07-12 17:20 ` Segher Boessenkool
2021-07-23 5:45 ` Martin Liska
2021-07-23 5:45 ` Martin Liska
@ 2021-07-23 5:45 ` Martin Liska
2021-07-23 5:47 ` Martin Liška
[not found] ` <202107230545.16N5jkeY006982@gate.crashing.org>
4 siblings, 0 replies; 16+ messages in thread
From: Martin Liska @ 2021-07-23 5:45 UTC (permalink / raw)
To: gcc-patches; +Cc: segher
As mentioned in the "Fallout: save/restore target options in handle_optimize_attribute"
thread, we need to support target option restore
of rs6000_long_double_type_size == FLOAT_PRECISION_TFmode.
gcc/ChangeLog:
* config/rs6000/rs6000.c (rs6000_option_override_internal): When
a target option is restored, it can have
rs6000_long_double_type_size set to FLOAT_PRECISION_TFmode
and error should not be emitted.
gcc/testsuite/ChangeLog:
* gcc.target/powerpc/pragma-optimize.c: New test.
---
gcc/config/rs6000/rs6000.c | 2 ++
gcc/testsuite/gcc.target/powerpc/pragma-optimize.c | 13 +++++++++++++
2 files changed, 15 insertions(+)
create mode 100644 gcc/testsuite/gcc.target/powerpc/pragma-optimize.c
diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c
index 279f00cc648..510936a9948 100644
--- a/gcc/config/rs6000/rs6000.c
+++ b/gcc/config/rs6000/rs6000.c
@@ -4186,6 +4186,8 @@ rs6000_option_override_internal (bool global_init_p)
else
rs6000_long_double_type_size = default_long_double_size;
}
+ else if (rs6000_long_double_type_size == FLOAT_PRECISION_TFmode)
+ ; /* The option value can be seen when cl_target_option_restore is called. */
else if (rs6000_long_double_type_size == 128)
rs6000_long_double_type_size = FLOAT_PRECISION_TFmode;
else if (global_options_set.x_rs6000_ieeequad)
diff --git a/gcc/testsuite/gcc.target/powerpc/pragma-optimize.c b/gcc/testsuite/gcc.target/powerpc/pragma-optimize.c
new file mode 100644
index 00000000000..4a86b58f27c
--- /dev/null
+++ b/gcc/testsuite/gcc.target/powerpc/pragma-optimize.c
@@ -0,0 +1,13 @@
+/* { dg-options "-O2 -mlong-double-128 -mabi=ibmlongdouble" } */
+
+extern unsigned long int x;
+extern float f (float);
+extern __typeof (f) f_power8;
+extern __typeof (f) f_power9;
+extern __typeof (f) f __attribute__ ((ifunc ("f_ifunc")));
+static __attribute__ ((optimize ("-fno-stack-protector"))) __typeof (f) *
+f_ifunc (void)
+{
+ __typeof (f) *res = x ? f_power9 : f_power8;
+ return res;
+}
--
2.32.0
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH] rs6000: Fix restored rs6000_long_double_type_size.
2021-07-12 17:20 ` Segher Boessenkool
` (2 preceding siblings ...)
2021-07-23 5:45 ` Martin Liska
@ 2021-07-23 5:47 ` Martin Liška
2021-07-23 17:57 ` Segher Boessenkool
[not found] ` <202107230545.16N5jkeY006982@gate.crashing.org>
4 siblings, 1 reply; 16+ messages in thread
From: Martin Liška @ 2021-07-23 5:47 UTC (permalink / raw)
To: Segher Boessenkool; +Cc: gcc-patches
On 7/12/21 7:20 PM, Segher Boessenkool wrote:
> On Mon, Jun 28, 2021 at 02:19:03PM +0200, Martin Liška wrote:
>> On 6/24/21 12:46 AM, Segher Boessenkool wrote:
>>>> As mentioned in the "Fallout: save/restore target options in
>>>> handle_optimize_attribute"
>>>> thread, we need to support target option restore of
>>>> rs6000_long_double_type_size == FLOAT_PRECISION_TFmode.
>>>
>>> I have no idea? Could you explain please?
>>
>> Sure. Few weeks ago, we started using cl_target_option_{save,restore} calls
>> even for optimize attributes (and pragma). Motivation was that optimize
>> options
>> can influence target options (and vice versa).
>>
>> Doing that, FLOAT_PRECISION_TFmode must be accepted as a valid option value
>> for rs6000_long_double_type_size.
>
>
>>>> --- /dev/null
>>>> +++ b/gcc/testsuite/gcc.target/powerpc/pragma-optimize.c
>>>> @@ -0,0 +1,14 @@
>>>> +/* { dg-do compile { target { powerpc*-*-linux* } } } */
>>>
>>> Why on Linux only? That doesn't sound right. Do you need some other
>>> selector(s)?
>>
>> Sorry, I copied the test-case.
>
> Ugh. Yes, the status quo is no good either :-(
>
>>>> +/* { dg-options "-O2 -mlong-double-128 -mabi=ibmlongdouble" } */
>>>> +
>>>> +extern unsigned long int x;
>>>> +extern float f (float);
>>>> +extern __typeof (f) f_power8;
>>>> +extern __typeof (f) f_power9;
>>>> +extern __typeof (f) f __attribute__ ((ifunc ("f_ifunc")));
>>>> +static __attribute__ ((optimize ("-fno-stack-protector"))) __typeof (f) *
>>>
>>> -fno-stack-protector is default.
>>
>> Yes, but one needs an optimize attribute in order to trigger
>> cl_target_option_save/restore
>> mechanism.
>
> So it behaves differently if you select the default than if you do not
> select anything? That is wrong, no?
Sorry, I don't get your example, please explain it.
>
>> >From 1632939853fbf193f72ace3d1024a137d549fef4 Mon Sep 17 00:00:00 2001
>> From: Martin Liska <mliska@suse.cz>
>> Date: Tue, 1 Jun 2021 15:39:14 +0200
>> Subject: [PATCH] rs6000: Fix restored rs6000_long_double_type_size.
>
> (No full stop at end of subject please)
Done.
>
> Missing patch description here. This should be suitable as commit
> message when you eventually commit the patch.
>
> Please send with that, as a separate mail, not as attachment to another
> thread.
Done.
>
>> gcc/ChangeLog:
>>
>> * config/rs6000/rs6000.c (rs6000_option_override_internal): When
>> a target option is restored, it can have
>> rs6000_long_double_type_size set to FLOAT_PRECISION_TFmode.
>
> That does not say what changed?
Updated.
>
>> --- a/gcc/config/rs6000/rs6000.c
>> +++ b/gcc/config/rs6000/rs6000.c
>> @@ -4185,6 +4185,8 @@ rs6000_option_override_internal (bool global_init_p)
>> else
>> rs6000_long_double_type_size = default_long_double_size;
>> }
>> + else if (rs6000_long_double_type_size == FLOAT_PRECISION_TFmode)
>> + ; /* The option can be restored with cl_target_option_restore. */
>> else if (rs6000_long_double_type_size == 128)
>> rs6000_long_double_type_size = FLOAT_PRECISION_TFmode;
>> else if (global_options_set.x_rs6000_ieeequad)
>
> "The option can be restored" is more confusing than helpful. *Will* be
> restored by it, maybe? Not that I understand what that means :-/
I updated the wording a bit.
>
> Does it make more sense to merge the 128 and FLOAT_PRECISION_TFmode
> cases?
Likely not, it's important to assign a reasonable comment to the 128 option value.
>
>> diff --git a/gcc/testsuite/gcc.target/powerpc/pragma-optimize.c b/gcc/testsuite/gcc.target/powerpc/pragma-optimize.c
>> new file mode 100644
>> index 00000000000..2455fb57138
>> --- /dev/null
>> +++ b/gcc/testsuite/gcc.target/powerpc/pragma-optimize.c
>> @@ -0,0 +1,14 @@
>> +/* { dg-do compile { target { powerpc*-*-* } } } */
>
> No target powerpc*-*-* in gcc.target/powerpc please. This is enforced
> for everything in there by powerpc.exp already.
Fixed.
Martin
>
> Thanks,
>
>
> Segher
>
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH] rs6000: Fix restored rs6000_long_double_type_size.
2021-07-23 5:47 ` Martin Liška
@ 2021-07-23 17:57 ` Segher Boessenkool
2021-08-05 12:05 ` Martin Liška
0 siblings, 1 reply; 16+ messages in thread
From: Segher Boessenkool @ 2021-07-23 17:57 UTC (permalink / raw)
To: Martin Liška; +Cc: gcc-patches
Hi!
On Fri, Jul 23, 2021 at 07:47:54AM +0200, Martin Liška wrote:
> On 7/12/21 7:20 PM, Segher Boessenkool wrote:
> >>>>+static __attribute__ ((optimize ("-fno-stack-protector"))) __typeof
> >>>>(f) *
> >>>
> >>>-fno-stack-protector is default.
> >>
> >>Yes, but one needs an optimize attribute in order to trigger
> >>cl_target_option_save/restore
> >>mechanism.
> >
> >So it behaves differently if you select the default than if you do not
> >select anything? That is wrong, no?
>
> Sorry, I don't get your example, please explain it.
If -mbork is the default, the coompiler whould behave the same if you
invoke it with -mbork as when you do not. And the optimize attribute
should work exactly the same as command line options.
Or perhaps you are saying you have this in the testcase only to exercise
the option save/restore code paths? Please document that then, in the
testcase.
Segher
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH] rs6000: Fix restored rs6000_long_double_type_size.
2021-07-23 17:57 ` Segher Boessenkool
@ 2021-08-05 12:05 ` Martin Liška
2021-08-05 15:39 ` Segher Boessenkool
0 siblings, 1 reply; 16+ messages in thread
From: Martin Liška @ 2021-08-05 12:05 UTC (permalink / raw)
To: Segher Boessenkool; +Cc: gcc-patches
[-- Attachment #1: Type: text/plain, Size: 1099 bytes --]
On 7/23/21 7:57 PM, Segher Boessenkool wrote:
> Hi!
>
> On Fri, Jul 23, 2021 at 07:47:54AM +0200, Martin Liška wrote:
>> On 7/12/21 7:20 PM, Segher Boessenkool wrote:
>>>>>> +static __attribute__ ((optimize ("-fno-stack-protector"))) __typeof
>>>>>> (f) *
>>>>>
>>>>> -fno-stack-protector is default.
>>>>
>>>> Yes, but one needs an optimize attribute in order to trigger
>>>> cl_target_option_save/restore
>>>> mechanism.
>>>
>>> So it behaves differently if you select the default than if you do not
>>> select anything? That is wrong, no?
>>
>> Sorry, I don't get your example, please explain it.
>
> If -mbork is the default, the coompiler whould behave the same if you
> invoke it with -mbork as when you do not. And the optimize attribute
> should work exactly the same as command line options.
Ah, got your point. All right, let's use then 'optimize(1)'.
Is it fine with the adjustment?
Cheers,
Martin
>
> Or perhaps you are saying you have this in the testcase only to exercise
> the option save/restore code paths? Please document that then, in the
> testcase.
>
>
> Segher
>
[-- Attachment #2: 0001-rs6000-Fix-restored-rs6000_long_double_type_size.patch --]
[-- Type: text/x-patch, Size: 2236 bytes --]
From 517e32a75aa59b4b538eda30e78de0fa925bb0f9 Mon Sep 17 00:00:00 2001
From: Martin Liska <mliska@suse.cz>
Date: Tue, 1 Jun 2021 15:39:14 +0200
Subject: [PATCH] rs6000: Fix restored rs6000_long_double_type_size
As mentioned in the "Fallout: save/restore target options in handle_optimize_attribute"
thread, we need to support target option restore
of rs6000_long_double_type_size == FLOAT_PRECISION_TFmode.
gcc/ChangeLog:
* config/rs6000/rs6000.c (rs6000_option_override_internal): When
a target option is restored, it can have
rs6000_long_double_type_size set to FLOAT_PRECISION_TFmode
and error should not be emitted.
gcc/testsuite/ChangeLog:
* gcc.target/powerpc/pragma-optimize.c: New test.
---
gcc/config/rs6000/rs6000.c | 2 ++
gcc/testsuite/gcc.target/powerpc/pragma-optimize.c | 13 +++++++++++++
2 files changed, 15 insertions(+)
create mode 100644 gcc/testsuite/gcc.target/powerpc/pragma-optimize.c
diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c
index 2de5a96e1b6..5b1c06b09fc 100644
--- a/gcc/config/rs6000/rs6000.c
+++ b/gcc/config/rs6000/rs6000.c
@@ -4189,6 +4189,8 @@ rs6000_option_override_internal (bool global_init_p)
else
rs6000_long_double_type_size = default_long_double_size;
}
+ else if (rs6000_long_double_type_size == FLOAT_PRECISION_TFmode)
+ ; /* The option value can be seen when cl_target_option_restore is called. */
else if (rs6000_long_double_type_size == 128)
rs6000_long_double_type_size = FLOAT_PRECISION_TFmode;
else if (global_options_set.x_rs6000_ieeequad)
diff --git a/gcc/testsuite/gcc.target/powerpc/pragma-optimize.c b/gcc/testsuite/gcc.target/powerpc/pragma-optimize.c
new file mode 100644
index 00000000000..e8ba63a0667
--- /dev/null
+++ b/gcc/testsuite/gcc.target/powerpc/pragma-optimize.c
@@ -0,0 +1,13 @@
+/* { dg-options "-O2 -mlong-double-128 -mabi=ibmlongdouble" } */
+
+extern unsigned long int x;
+extern float f (float);
+extern __typeof (f) f_power8;
+extern __typeof (f) f_power9;
+extern __typeof (f) f __attribute__ ((ifunc ("f_ifunc")));
+static __attribute__ ((optimize (1))) __typeof (f) *
+f_ifunc (void)
+{
+ __typeof (f) *res = x ? f_power9 : f_power8;
+ return res;
+}
--
2.32.0
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH] rs6000: Fix restored rs6000_long_double_type_size.
2021-08-05 12:05 ` Martin Liška
@ 2021-08-05 15:39 ` Segher Boessenkool
2021-08-05 16:49 ` Martin Liška
0 siblings, 1 reply; 16+ messages in thread
From: Segher Boessenkool @ 2021-08-05 15:39 UTC (permalink / raw)
To: Martin Liška; +Cc: gcc-patches
On Thu, Aug 05, 2021 at 02:05:24PM +0200, Martin Liška wrote:
> On 7/23/21 7:57 PM, Segher Boessenkool wrote:
> >Hi!
> >
> >On Fri, Jul 23, 2021 at 07:47:54AM +0200, Martin Liška wrote:
> >>On 7/12/21 7:20 PM, Segher Boessenkool wrote:
> >>>>>>+static __attribute__ ((optimize ("-fno-stack-protector"))) __typeof
> >>>>>>(f) *
> >>>>>
> >>>>>-fno-stack-protector is default.
> >>>>
> >>>>Yes, but one needs an optimize attribute in order to trigger
> >>>>cl_target_option_save/restore
> >>>>mechanism.
> >>>
> >>>So it behaves differently if you select the default than if you do not
> >>>select anything? That is wrong, no?
> >>
> >>Sorry, I don't get your example, please explain it.
> >
> >If -mbork is the default, the coompiler whould behave the same if you
> >invoke it with -mbork as when you do not. And the optimize attribute
> >should work exactly the same as command line options.
>
> Ah, got your point. All right, let's use then 'optimize(1)'.
>
> Is it fine with the adjustment?
You are saying the compiler's behaviour is broken, but are changing the
testcase to avoid exhibiting that behaviour? No, this is not fine.
If a flag is the default the compiler should do the same thing with and
without any attribute setting that flag, directly or indirectly.
Segher
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH] rs6000: Fix restored rs6000_long_double_type_size.
2021-08-05 15:39 ` Segher Boessenkool
@ 2021-08-05 16:49 ` Martin Liška
2021-08-05 20:06 ` Segher Boessenkool
0 siblings, 1 reply; 16+ messages in thread
From: Martin Liška @ 2021-08-05 16:49 UTC (permalink / raw)
To: Segher Boessenkool; +Cc: gcc-patches
On 8/5/21 5:39 PM, Segher Boessenkool wrote:
> On Thu, Aug 05, 2021 at 02:05:24PM +0200, Martin Liška wrote:
>> On 7/23/21 7:57 PM, Segher Boessenkool wrote:
>>> Hi!
>>>
>>> On Fri, Jul 23, 2021 at 07:47:54AM +0200, Martin Liška wrote:
>>>> On 7/12/21 7:20 PM, Segher Boessenkool wrote:
>>>>>>>> +static __attribute__ ((optimize ("-fno-stack-protector"))) __typeof
>>>>>>>> (f) *
>>>>>>>
>>>>>>> -fno-stack-protector is default.
>>>>>>
>>>>>> Yes, but one needs an optimize attribute in order to trigger
>>>>>> cl_target_option_save/restore
>>>>>> mechanism.
>>>>>
>>>>> So it behaves differently if you select the default than if you do not
>>>>> select anything? That is wrong, no?
>>>>
>>>> Sorry, I don't get your example, please explain it.
>>>
>>> If -mbork is the default, the coompiler whould behave the same if you
>>> invoke it with -mbork as when you do not. And the optimize attribute
>>> should work exactly the same as command line options.
>>
>> Ah, got your point. All right, let's use then 'optimize(1)'.
>>
>> Is it fine with the adjustment?
>
> You are saying the compiler's behaviour is broken, but are changing the
> testcase to avoid exhibiting that behaviour?
No, both selections of the 'optimize' attribute trigger the ICE. The reason
is that any optimize attribute triggers eventually cl_target_option_save/restore
mechanism which is what the patch addresses.
> No, this is not fine.
>
> If a flag is the default the compiler should do the same thing with and
> without any attribute setting that flag, directly or indirectly.
Yes, but should not crash. And that's what is my patch dealing with.
Cheers,
Martin
>
>
> Segher
>
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH] rs6000: Fix restored rs6000_long_double_type_size.
2021-08-05 16:49 ` Martin Liška
@ 2021-08-05 20:06 ` Segher Boessenkool
0 siblings, 0 replies; 16+ messages in thread
From: Segher Boessenkool @ 2021-08-05 20:06 UTC (permalink / raw)
To: Martin Liška; +Cc: gcc-patches
On Thu, Aug 05, 2021 at 06:49:21PM +0200, Martin Liška wrote:
> On 8/5/21 5:39 PM, Segher Boessenkool wrote:
> >>>If -mbork is the default, the coompiler whould behave the same if you
> >>>invoke it with -mbork as when you do not. And the optimize attribute
> >>>should work exactly the same as command line options.
> >>
> >>Ah, got your point. All right, let's use then 'optimize(1)'.
> >>
> >>Is it fine with the adjustment?
> >
> >You are saying the compiler's behaviour is broken, but are changing the
> >testcase to avoid exhibiting that behaviour?
>
> No, both selections of the 'optimize' attribute trigger the ICE. The reason
> is that any optimize attribute triggers eventually
> cl_target_option_save/restore
> mechanism which is what the patch addresses.
Aha. So say that in the test case! That the test case is to check if
the bug fixed in XXXXXXXXXXXX has been reintroduced (or describe the bug
more precisely if needed).
Okay for trunk with that fixed. Thanks!
Segher
^ permalink raw reply [flat|nested] 16+ messages in thread
[parent not found: <202107230545.16N5jkeY006982@gate.crashing.org>]
* Re: [PATCH] rs6000: Fix restored rs6000_long_double_type_size
[not found] ` <202107230545.16N5jkeY006982@gate.crashing.org>
@ 2021-07-23 18:00 ` Segher Boessenkool
0 siblings, 0 replies; 16+ messages in thread
From: Segher Boessenkool @ 2021-07-23 18:00 UTC (permalink / raw)
To: Martin Liska; +Cc: gcc-patches
Hi!
On Tue, Jun 01, 2021 at 03:39:14PM +0200, Martin Liska wrote:
> * config/rs6000/rs6000.c (rs6000_option_override_internal): When
> a target option is restored, it can have
> rs6000_long_double_type_size set to FLOAT_PRECISION_TFmode
> and error should not be emitted.
> --- a/gcc/config/rs6000/rs6000.c
> +++ b/gcc/config/rs6000/rs6000.c
> @@ -4186,6 +4186,8 @@ rs6000_option_override_internal (bool global_init_p)
> else
> rs6000_long_double_type_size = default_long_double_size;
> }
> + else if (rs6000_long_double_type_size == FLOAT_PRECISION_TFmode)
> + ; /* The option value can be seen when cl_target_option_restore is called. */
(line too long)
The comment is still very cryptic. What you have in the changelog is
much better digestible.
Okay for trunk with those things fixed. Thanks!
Segher
^ permalink raw reply [flat|nested] 16+ messages in thread