* [PATCH] Print default options selection for -march,-mcpu and -mtune for aarch64 (PR driver/83193).
@ 2018-07-18 15:48 Martin Liška
2018-08-01 13:55 ` Martin Liška
2018-08-02 9:39 ` Richard Earnshaw (lists)
0 siblings, 2 replies; 7+ messages in thread
From: Martin Liška @ 2018-07-18 15:48 UTC (permalink / raw)
To: gcc-patches; +Cc: Ramana Radhakrishnan, James Greenhalgh, Kyrill Tkachov
[-- Attachment #1: Type: text/plain, Size: 1578 bytes --]
Hi.
This is aarch64 fix for PR83193. It's about setting of default options
so that --help=target -Q prints proper numbers:
Now this is seen on my cross-compiler:
--- /home/marxin/Downloads/options-2-before.txt 2018-07-18 14:53:11.658146543 +0200
+++ /home/marxin/Downloads/options-2.txt 2018-07-18 14:52:30.113274284 +0200
@@ -1,10 +1,10 @@
The following options are target specific:
-mabi=ABI lp64
- -march=ARCH
+ -march= armv8-a
-mbig-endian [disabled]
-mbionic [disabled]
-mcmodel= small
- -mcpu=CPU
+ -mcpu= generic
-mfix-cortex-a53-835769 [enabled]
-mfix-cortex-a53-843419 [enabled]
-mgeneral-regs-only [disabled]
@@ -19,7 +19,7 @@
-msve-vector-bits=N scalable
-mtls-dialect= desc
-mtls-size= 24
- -mtune=CPU
+ -mtune= generic
-muclibc [disabled]
May I please ask ARM folks to test the patch?
Thanks,
Martin
gcc/ChangeLog:
2018-07-18 Martin Liska <mliska@suse.cz>
PR driver/83193
* config/aarch64/aarch64.c (aarch64_override_options_internal):
Set default values for x_aarch64_*_string strings.
* config/aarch64/aarch64.opt: Remove --{march,mcpu,mtune}==
prefix.
---
gcc/config/aarch64/aarch64.c | 7 +++++++
gcc/config/aarch64/aarch64.opt | 6 +++---
2 files changed, 10 insertions(+), 3 deletions(-)
[-- Attachment #2: 0001-Print-default-options-selection-for-march-mcpu-and-m.patch --]
[-- Type: text/x-patch, Size: 1541 bytes --]
diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c
index 6fa03e4b091..d48e6278efa 100644
--- a/gcc/config/aarch64/aarch64.c
+++ b/gcc/config/aarch64/aarch64.c
@@ -10713,6 +10713,13 @@ aarch64_override_options_internal (struct gcc_options *opts)
&& opts->x_optimize >= aarch64_tune_params.prefetch->default_opt_level)
opts->x_flag_prefetch_loop_arrays = 1;
+ if (opts->x_aarch64_arch_string == NULL)
+ opts->x_aarch64_arch_string = selected_arch->name;
+ if (opts->x_aarch64_cpu_string == NULL)
+ opts->x_aarch64_cpu_string = selected_cpu->name;
+ if (opts->x_aarch64_tune_string == NULL)
+ opts->x_aarch64_tune_string = selected_tune->name;
+
aarch64_override_options_after_change_1 (opts);
}
diff --git a/gcc/config/aarch64/aarch64.opt b/gcc/config/aarch64/aarch64.opt
index 1426b45ff0f..7f0b65de37b 100644
--- a/gcc/config/aarch64/aarch64.opt
+++ b/gcc/config/aarch64/aarch64.opt
@@ -117,15 +117,15 @@ Enum(aarch64_tls_size) String(48) Value(48)
march=
Target RejectNegative ToLower Joined Var(aarch64_arch_string)
--march=ARCH Use features of architecture ARCH.
+Use features of architecture ARCH.
mcpu=
Target RejectNegative ToLower Joined Var(aarch64_cpu_string)
--mcpu=CPU Use features of and optimize for CPU.
+Use features of and optimize for CPU.
mtune=
Target RejectNegative ToLower Joined Var(aarch64_tune_string)
--mtune=CPU Optimize for CPU.
+Optimize for CPU.
mabi=
Target RejectNegative Joined Enum(aarch64_abi) Var(aarch64_abi) Init(AARCH64_ABI_DEFAULT)
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] Print default options selection for -march,-mcpu and -mtune for aarch64 (PR driver/83193).
2018-07-18 15:48 [PATCH] Print default options selection for -march,-mcpu and -mtune for aarch64 (PR driver/83193) Martin Liška
@ 2018-08-01 13:55 ` Martin Liška
2018-08-02 9:39 ` Richard Earnshaw (lists)
1 sibling, 0 replies; 7+ messages in thread
From: Martin Liška @ 2018-08-01 13:55 UTC (permalink / raw)
To: gcc-patches; +Cc: Ramana Radhakrishnan, James Greenhalgh, Kyrill Tkachov
PING^1
On 07/18/2018 05:48 PM, Martin Liška wrote:
> Hi.
>
> This is aarch64 fix for PR83193. It's about setting of default options
> so that --help=target -Q prints proper numbers:
>
> Now this is seen on my cross-compiler:
>
> --- /home/marxin/Downloads/options-2-before.txt 2018-07-18 14:53:11.658146543 +0200
> +++ /home/marxin/Downloads/options-2.txt 2018-07-18 14:52:30.113274284 +0200
> @@ -1,10 +1,10 @@
> The following options are target specific:
> -mabi=ABI lp64
> - -march=ARCH
> + -march= armv8-a
> -mbig-endian [disabled]
> -mbionic [disabled]
> -mcmodel= small
> - -mcpu=CPU
> + -mcpu= generic
> -mfix-cortex-a53-835769 [enabled]
> -mfix-cortex-a53-843419 [enabled]
> -mgeneral-regs-only [disabled]
> @@ -19,7 +19,7 @@
> -msve-vector-bits=N scalable
> -mtls-dialect= desc
> -mtls-size= 24
> - -mtune=CPU
> + -mtune= generic
> -muclibc [disabled]
>
> May I please ask ARM folks to test the patch?
> Thanks,
> Martin
>
> gcc/ChangeLog:
>
> 2018-07-18 Martin Liska <mliska@suse.cz>
>
> PR driver/83193
> * config/aarch64/aarch64.c (aarch64_override_options_internal):
> Set default values for x_aarch64_*_string strings.
> * config/aarch64/aarch64.opt: Remove --{march,mcpu,mtune}==
> prefix.
> ---
> gcc/config/aarch64/aarch64.c | 7 +++++++
> gcc/config/aarch64/aarch64.opt | 6 +++---
> 2 files changed, 10 insertions(+), 3 deletions(-)
>
>
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] Print default options selection for -march,-mcpu and -mtune for aarch64 (PR driver/83193).
2018-07-18 15:48 [PATCH] Print default options selection for -march,-mcpu and -mtune for aarch64 (PR driver/83193) Martin Liška
2018-08-01 13:55 ` Martin Liška
@ 2018-08-02 9:39 ` Richard Earnshaw (lists)
2018-08-02 9:46 ` Martin Liška
1 sibling, 1 reply; 7+ messages in thread
From: Richard Earnshaw (lists) @ 2018-08-02 9:39 UTC (permalink / raw)
To: Martin Liška, gcc-patches
Cc: Ramana Radhakrishnan, James Greenhalgh, Kyrill Tkachov
On 18/07/18 16:48, Martin Liška wrote:
> Hi.
>
> This is aarch64 fix for PR83193. It's about setting of default options
> so that --help=target -Q prints proper numbers:
>
> Now this is seen on my cross-compiler:
>
> --- /home/marxin/Downloads/options-2-before.txt 2018-07-18 14:53:11.658146543 +0200
> +++ /home/marxin/Downloads/options-2.txt 2018-07-18 14:52:30.113274284 +0200
> @@ -1,10 +1,10 @@
> The following options are target specific:
> -mabi=ABI lp64
> - -march=ARCH
> + -march= armv8-a
So we have
-mabi=ABI lp64
but
-march= armv8-a
^^^^^ blank
Isn't that inconsistent?
R.
> -mbig-endian [disabled]
> -mbionic [disabled]
> -mcmodel= small
> - -mcpu=CPU
> + -mcpu= generic
> -mfix-cortex-a53-835769 [enabled]
> -mfix-cortex-a53-843419 [enabled]
> -mgeneral-regs-only [disabled]
> @@ -19,7 +19,7 @@
> -msve-vector-bits=N scalable
> -mtls-dialect= desc
> -mtls-size= 24
> - -mtune=CPU
> + -mtune= generic
> -muclibc [disabled]
>
> May I please ask ARM folks to test the patch?
> Thanks,
> Martin
>
> gcc/ChangeLog:
>
> 2018-07-18 Martin Liska <mliska@suse.cz>
>
> PR driver/83193
> * config/aarch64/aarch64.c (aarch64_override_options_internal):
> Set default values for x_aarch64_*_string strings.
> * config/aarch64/aarch64.opt: Remove --{march,mcpu,mtune}==
> prefix.
> ---
> gcc/config/aarch64/aarch64.c | 7 +++++++
> gcc/config/aarch64/aarch64.opt | 6 +++---
> 2 files changed, 10 insertions(+), 3 deletions(-)
>
>
>
> 0001-Print-default-options-selection-for-march-mcpu-and-m.patch
>
>
> diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c
> index 6fa03e4b091..d48e6278efa 100644
> --- a/gcc/config/aarch64/aarch64.c
> +++ b/gcc/config/aarch64/aarch64.c
> @@ -10713,6 +10713,13 @@ aarch64_override_options_internal (struct gcc_options *opts)
> && opts->x_optimize >= aarch64_tune_params.prefetch->default_opt_level)
> opts->x_flag_prefetch_loop_arrays = 1;
>
> + if (opts->x_aarch64_arch_string == NULL)
> + opts->x_aarch64_arch_string = selected_arch->name;
> + if (opts->x_aarch64_cpu_string == NULL)
> + opts->x_aarch64_cpu_string = selected_cpu->name;
> + if (opts->x_aarch64_tune_string == NULL)
> + opts->x_aarch64_tune_string = selected_tune->name;
> +
> aarch64_override_options_after_change_1 (opts);
> }
>
> diff --git a/gcc/config/aarch64/aarch64.opt b/gcc/config/aarch64/aarch64.opt
> index 1426b45ff0f..7f0b65de37b 100644
> --- a/gcc/config/aarch64/aarch64.opt
> +++ b/gcc/config/aarch64/aarch64.opt
> @@ -117,15 +117,15 @@ Enum(aarch64_tls_size) String(48) Value(48)
>
> march=
> Target RejectNegative ToLower Joined Var(aarch64_arch_string)
> --march=ARCH Use features of architecture ARCH.
> +Use features of architecture ARCH.
>
> mcpu=
> Target RejectNegative ToLower Joined Var(aarch64_cpu_string)
> --mcpu=CPU Use features of and optimize for CPU.
> +Use features of and optimize for CPU.
>
> mtune=
> Target RejectNegative ToLower Joined Var(aarch64_tune_string)
> --mtune=CPU Optimize for CPU.
> +Optimize for CPU.
>
> mabi=
> Target RejectNegative Joined Enum(aarch64_abi) Var(aarch64_abi) Init(AARCH64_ABI_DEFAULT)
>
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] Print default options selection for -march,-mcpu and -mtune for aarch64 (PR driver/83193).
2018-08-02 9:39 ` Richard Earnshaw (lists)
@ 2018-08-02 9:46 ` Martin Liška
2018-08-23 11:01 ` Martin Liška
2018-08-23 14:46 ` Richard Earnshaw (lists)
0 siblings, 2 replies; 7+ messages in thread
From: Martin Liška @ 2018-08-02 9:46 UTC (permalink / raw)
To: Richard Earnshaw (lists), gcc-patches
Cc: Ramana Radhakrishnan, James Greenhalgh, Kyrill Tkachov
On 08/02/2018 11:39 AM, Richard Earnshaw (lists) wrote:
> On 18/07/18 16:48, Martin Liška wrote:
>> Hi.
>>
>> This is aarch64 fix for PR83193. It's about setting of default options
>> so that --help=target -Q prints proper numbers:
>>
>> Now this is seen on my cross-compiler:
>>
>> --- /home/marxin/Downloads/options-2-before.txt 2018-07-18 14:53:11.658146543 +0200
>> +++ /home/marxin/Downloads/options-2.txt 2018-07-18 14:52:30.113274284 +0200
>> @@ -1,10 +1,10 @@
>> The following options are target specific:
>> -mabi=ABI lp64
>> - -march=ARCH
>> + -march= armv8-a
>
> So we have
>
> -mabi=ABI lp64
>
> but
>
> -march= armv8-a
> ^^^^^ blank
>
> Isn't that inconsistent?
It is probably, in this case I would remove 'ABI' from -mabi option. It's explained bellow
what are possible options:
Known AArch64 ABIs (for use with the -mabi= option):
ilp32 lp64
Similarly for:
-moverride=STRING Power users only! Override CPU optimization parameters.
-msve-vector-bits=N Set the number of bits in an SVE vector register to N.
It's more common to <var> notation, there are some samples from --help=common:
-fmax-errors=<number> Maximum number of errors to report.
-fmessage-length=<number> Limit diagnostics to <number> characters per line. 0 suppresses line-wrapping.
-fira-region=[one|all|mixed] Set regions for IRA.
-fira-verbose=<number> Control IRA's level of diagnostic messages.
-flifetime-dse=<0,2> This option lacks documentation.
-fstack-limit-register=<register> Trap if the stack goes past <register>.
-fstack-limit-symbol=<name> Trap if the stack goes past symbol <name>.
Are you fine with the suggested approach?
Martin
>
> R.
>
>> -mbig-endian [disabled]
>> -mbionic [disabled]
>> -mcmodel= small
>> - -mcpu=CPU
>> + -mcpu= generic
>> -mfix-cortex-a53-835769 [enabled]
>> -mfix-cortex-a53-843419 [enabled]
>> -mgeneral-regs-only [disabled]
>> @@ -19,7 +19,7 @@
>> -msve-vector-bits=N scalable
>> -mtls-dialect= desc
>> -mtls-size= 24
>> - -mtune=CPU
>> + -mtune= generic
>> -muclibc [disabled]
>>
>> May I please ask ARM folks to test the patch?
>> Thanks,
>> Martin
>>
>> gcc/ChangeLog:
>>
>> 2018-07-18 Martin Liska <mliska@suse.cz>
>>
>> PR driver/83193
>> * config/aarch64/aarch64.c (aarch64_override_options_internal):
>> Set default values for x_aarch64_*_string strings.
>> * config/aarch64/aarch64.opt: Remove --{march,mcpu,mtune}==
>> prefix.
>> ---
>> gcc/config/aarch64/aarch64.c | 7 +++++++
>> gcc/config/aarch64/aarch64.opt | 6 +++---
>> 2 files changed, 10 insertions(+), 3 deletions(-)
>>
>>
>>
>> 0001-Print-default-options-selection-for-march-mcpu-and-m.patch
>>
>>
>> diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c
>> index 6fa03e4b091..d48e6278efa 100644
>> --- a/gcc/config/aarch64/aarch64.c
>> +++ b/gcc/config/aarch64/aarch64.c
>> @@ -10713,6 +10713,13 @@ aarch64_override_options_internal (struct gcc_options *opts)
>> && opts->x_optimize >= aarch64_tune_params.prefetch->default_opt_level)
>> opts->x_flag_prefetch_loop_arrays = 1;
>>
>> + if (opts->x_aarch64_arch_string == NULL)
>> + opts->x_aarch64_arch_string = selected_arch->name;
>> + if (opts->x_aarch64_cpu_string == NULL)
>> + opts->x_aarch64_cpu_string = selected_cpu->name;
>> + if (opts->x_aarch64_tune_string == NULL)
>> + opts->x_aarch64_tune_string = selected_tune->name;
>> +
>> aarch64_override_options_after_change_1 (opts);
>> }
>>
>> diff --git a/gcc/config/aarch64/aarch64.opt b/gcc/config/aarch64/aarch64.opt
>> index 1426b45ff0f..7f0b65de37b 100644
>> --- a/gcc/config/aarch64/aarch64.opt
>> +++ b/gcc/config/aarch64/aarch64.opt
>> @@ -117,15 +117,15 @@ Enum(aarch64_tls_size) String(48) Value(48)
>>
>> march=
>> Target RejectNegative ToLower Joined Var(aarch64_arch_string)
>> --march=ARCH Use features of architecture ARCH.
>> +Use features of architecture ARCH.
>>
>> mcpu=
>> Target RejectNegative ToLower Joined Var(aarch64_cpu_string)
>> --mcpu=CPU Use features of and optimize for CPU.
>> +Use features of and optimize for CPU.
>>
>> mtune=
>> Target RejectNegative ToLower Joined Var(aarch64_tune_string)
>> --mtune=CPU Optimize for CPU.
>> +Optimize for CPU.
>>
>> mabi=
>> Target RejectNegative Joined Enum(aarch64_abi) Var(aarch64_abi) Init(AARCH64_ABI_DEFAULT)
>>
>
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] Print default options selection for -march,-mcpu and -mtune for aarch64 (PR driver/83193).
2018-08-02 9:46 ` Martin Liška
@ 2018-08-23 11:01 ` Martin Liška
2018-08-23 14:46 ` Richard Earnshaw (lists)
1 sibling, 0 replies; 7+ messages in thread
From: Martin Liška @ 2018-08-23 11:01 UTC (permalink / raw)
To: Richard Earnshaw (lists), gcc-patches
Cc: Ramana Radhakrishnan, James Greenhalgh, Kyrill Tkachov
PING^1
On 08/02/2018 11:46 AM, Martin Liška wrote:
> On 08/02/2018 11:39 AM, Richard Earnshaw (lists) wrote:
>> On 18/07/18 16:48, Martin Liška wrote:
>>> Hi.
>>>
>>> This is aarch64 fix for PR83193. It's about setting of default options
>>> so that --help=target -Q prints proper numbers:
>>>
>>> Now this is seen on my cross-compiler:
>>>
>>> --- /home/marxin/Downloads/options-2-before.txt 2018-07-18 14:53:11.658146543 +0200
>>> +++ /home/marxin/Downloads/options-2.txt 2018-07-18 14:52:30.113274284 +0200
>>> @@ -1,10 +1,10 @@
>>> The following options are target specific:
>>> -mabi=ABI lp64
>>> - -march=ARCH
>>> + -march= armv8-a
>>
>> So we have
>>
>> -mabi=ABI lp64
>>
>> but
>>
>> -march= armv8-a
>> ^^^^^ blank
>>
>> Isn't that inconsistent?
>
> It is probably, in this case I would remove 'ABI' from -mabi option. It's explained bellow
> what are possible options:
>
> Known AArch64 ABIs (for use with the -mabi= option):
> ilp32 lp64
>
> Similarly for:
> -moverride=STRING Power users only! Override CPU optimization parameters.
> -msve-vector-bits=N Set the number of bits in an SVE vector register to N.
>
> It's more common to <var> notation, there are some samples from --help=common:
>
> -fmax-errors=<number> Maximum number of errors to report.
> -fmessage-length=<number> Limit diagnostics to <number> characters per line. 0 suppresses line-wrapping.
> -fira-region=[one|all|mixed] Set regions for IRA.
> -fira-verbose=<number> Control IRA's level of diagnostic messages.
> -flifetime-dse=<0,2> This option lacks documentation.
> -fstack-limit-register=<register> Trap if the stack goes past <register>.
> -fstack-limit-symbol=<name> Trap if the stack goes past symbol <name>.
>
> Are you fine with the suggested approach?
>
> Martin
>
>>
>> R.
>>
>>> -mbig-endian [disabled]
>>> -mbionic [disabled]
>>> -mcmodel= small
>>> - -mcpu=CPU
>>> + -mcpu= generic
>>> -mfix-cortex-a53-835769 [enabled]
>>> -mfix-cortex-a53-843419 [enabled]
>>> -mgeneral-regs-only [disabled]
>>> @@ -19,7 +19,7 @@
>>> -msve-vector-bits=N scalable
>>> -mtls-dialect= desc
>>> -mtls-size= 24
>>> - -mtune=CPU
>>> + -mtune= generic
>>> -muclibc [disabled]
>>>
>>> May I please ask ARM folks to test the patch?
>>> Thanks,
>>> Martin
>>>
>>> gcc/ChangeLog:
>>>
>>> 2018-07-18 Martin Liska <mliska@suse.cz>
>>>
>>> PR driver/83193
>>> * config/aarch64/aarch64.c (aarch64_override_options_internal):
>>> Set default values for x_aarch64_*_string strings.
>>> * config/aarch64/aarch64.opt: Remove --{march,mcpu,mtune}==
>>> prefix.
>>> ---
>>> gcc/config/aarch64/aarch64.c | 7 +++++++
>>> gcc/config/aarch64/aarch64.opt | 6 +++---
>>> 2 files changed, 10 insertions(+), 3 deletions(-)
>>>
>>>
>>>
>>> 0001-Print-default-options-selection-for-march-mcpu-and-m.patch
>>>
>>>
>>> diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c
>>> index 6fa03e4b091..d48e6278efa 100644
>>> --- a/gcc/config/aarch64/aarch64.c
>>> +++ b/gcc/config/aarch64/aarch64.c
>>> @@ -10713,6 +10713,13 @@ aarch64_override_options_internal (struct gcc_options *opts)
>>> && opts->x_optimize >= aarch64_tune_params.prefetch->default_opt_level)
>>> opts->x_flag_prefetch_loop_arrays = 1;
>>>
>>> + if (opts->x_aarch64_arch_string == NULL)
>>> + opts->x_aarch64_arch_string = selected_arch->name;
>>> + if (opts->x_aarch64_cpu_string == NULL)
>>> + opts->x_aarch64_cpu_string = selected_cpu->name;
>>> + if (opts->x_aarch64_tune_string == NULL)
>>> + opts->x_aarch64_tune_string = selected_tune->name;
>>> +
>>> aarch64_override_options_after_change_1 (opts);
>>> }
>>>
>>> diff --git a/gcc/config/aarch64/aarch64.opt b/gcc/config/aarch64/aarch64.opt
>>> index 1426b45ff0f..7f0b65de37b 100644
>>> --- a/gcc/config/aarch64/aarch64.opt
>>> +++ b/gcc/config/aarch64/aarch64.opt
>>> @@ -117,15 +117,15 @@ Enum(aarch64_tls_size) String(48) Value(48)
>>>
>>> march=
>>> Target RejectNegative ToLower Joined Var(aarch64_arch_string)
>>> --march=ARCH Use features of architecture ARCH.
>>> +Use features of architecture ARCH.
>>>
>>> mcpu=
>>> Target RejectNegative ToLower Joined Var(aarch64_cpu_string)
>>> --mcpu=CPU Use features of and optimize for CPU.
>>> +Use features of and optimize for CPU.
>>>
>>> mtune=
>>> Target RejectNegative ToLower Joined Var(aarch64_tune_string)
>>> --mtune=CPU Optimize for CPU.
>>> +Optimize for CPU.
>>>
>>> mabi=
>>> Target RejectNegative Joined Enum(aarch64_abi) Var(aarch64_abi) Init(AARCH64_ABI_DEFAULT)
>>>
>>
>
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] Print default options selection for -march,-mcpu and -mtune for aarch64 (PR driver/83193).
2018-08-02 9:46 ` Martin Liška
2018-08-23 11:01 ` Martin Liška
@ 2018-08-23 14:46 ` Richard Earnshaw (lists)
2018-08-24 12:06 ` Martin Liška
1 sibling, 1 reply; 7+ messages in thread
From: Richard Earnshaw (lists) @ 2018-08-23 14:46 UTC (permalink / raw)
To: Martin Liška, gcc-patches
Cc: Ramana Radhakrishnan, James Greenhalgh, Kyrill Tkachov
On 02/08/18 10:46, Martin Liška wrote:
> On 08/02/2018 11:39 AM, Richard Earnshaw (lists) wrote:
>> On 18/07/18 16:48, Martin Liška wrote:
>>> Hi.
>>>
>>> This is aarch64 fix for PR83193. It's about setting of default options
>>> so that --help=target -Q prints proper numbers:
>>>
>>> Now this is seen on my cross-compiler:
>>>
>>> --- /home/marxin/Downloads/options-2-before.txt 2018-07-18 14:53:11.658146543 +0200
>>> +++ /home/marxin/Downloads/options-2.txt 2018-07-18 14:52:30.113274284 +0200
>>> @@ -1,10 +1,10 @@
>>> The following options are target specific:
>>> -mabi=ABI lp64
>>> - -march=ARCH
>>> + -march= armv8-a
>>
>> So we have
>>
>> -mabi=ABI lp64
>>
>> but
>>
>> -march= armv8-a
>> ^^^^^ blank
>>
>> Isn't that inconsistent?
>
> It is probably, in this case I would remove 'ABI' from -mabi option. It's explained bellow
> what are possible options:
>
> Known AArch64 ABIs (for use with the -mabi= option):
> ilp32 lp64
>
> Similarly for:
> -moverride=STRING Power users only! Override CPU optimization parameters.
> -msve-vector-bits=N Set the number of bits in an SVE vector register to N.
>
> It's more common to <var> notation, there are some samples from --help=common:
>
> -fmax-errors=<number> Maximum number of errors to report.
> -fmessage-length=<number> Limit diagnostics to <number> characters per line. 0 suppresses line-wrapping.
> -fira-region=[one|all|mixed] Set regions for IRA.
> -fira-verbose=<number> Control IRA's level of diagnostic messages.
> -flifetime-dse=<0,2> This option lacks documentation.
> -fstack-limit-register=<register> Trap if the stack goes past <register>.
> -fstack-limit-symbol=<name> Trap if the stack goes past symbol <name>.
>
> Are you fine with the suggested approach?
Yes, those look sensible.
R.
>
> Martin
>
>>
>> R.
>>
>>> -mbig-endian [disabled]
>>> -mbionic [disabled]
>>> -mcmodel= small
>>> - -mcpu=CPU
>>> + -mcpu= generic
>>> -mfix-cortex-a53-835769 [enabled]
>>> -mfix-cortex-a53-843419 [enabled]
>>> -mgeneral-regs-only [disabled]
>>> @@ -19,7 +19,7 @@
>>> -msve-vector-bits=N scalable
>>> -mtls-dialect= desc
>>> -mtls-size= 24
>>> - -mtune=CPU
>>> + -mtune= generic
>>> -muclibc [disabled]
>>>
>>> May I please ask ARM folks to test the patch?
>>> Thanks,
>>> Martin
>>>
>>> gcc/ChangeLog:
>>>
>>> 2018-07-18 Martin Liska <mliska@suse.cz>
>>>
>>> PR driver/83193
>>> * config/aarch64/aarch64.c (aarch64_override_options_internal):
>>> Set default values for x_aarch64_*_string strings.
>>> * config/aarch64/aarch64.opt: Remove --{march,mcpu,mtune}==
>>> prefix.
>>> ---
>>> gcc/config/aarch64/aarch64.c | 7 +++++++
>>> gcc/config/aarch64/aarch64.opt | 6 +++---
>>> 2 files changed, 10 insertions(+), 3 deletions(-)
>>>
>>>
>>>
>>> 0001-Print-default-options-selection-for-march-mcpu-and-m.patch
>>>
>>>
>>> diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c
>>> index 6fa03e4b091..d48e6278efa 100644
>>> --- a/gcc/config/aarch64/aarch64.c
>>> +++ b/gcc/config/aarch64/aarch64.c
>>> @@ -10713,6 +10713,13 @@ aarch64_override_options_internal (struct gcc_options *opts)
>>> && opts->x_optimize >= aarch64_tune_params.prefetch->default_opt_level)
>>> opts->x_flag_prefetch_loop_arrays = 1;
>>>
>>> + if (opts->x_aarch64_arch_string == NULL)
>>> + opts->x_aarch64_arch_string = selected_arch->name;
>>> + if (opts->x_aarch64_cpu_string == NULL)
>>> + opts->x_aarch64_cpu_string = selected_cpu->name;
>>> + if (opts->x_aarch64_tune_string == NULL)
>>> + opts->x_aarch64_tune_string = selected_tune->name;
>>> +
>>> aarch64_override_options_after_change_1 (opts);
>>> }
>>>
>>> diff --git a/gcc/config/aarch64/aarch64.opt b/gcc/config/aarch64/aarch64.opt
>>> index 1426b45ff0f..7f0b65de37b 100644
>>> --- a/gcc/config/aarch64/aarch64.opt
>>> +++ b/gcc/config/aarch64/aarch64.opt
>>> @@ -117,15 +117,15 @@ Enum(aarch64_tls_size) String(48) Value(48)
>>>
>>> march=
>>> Target RejectNegative ToLower Joined Var(aarch64_arch_string)
>>> --march=ARCH Use features of architecture ARCH.
>>> +Use features of architecture ARCH.
>>>
>>> mcpu=
>>> Target RejectNegative ToLower Joined Var(aarch64_cpu_string)
>>> --mcpu=CPU Use features of and optimize for CPU.
>>> +Use features of and optimize for CPU.
>>>
>>> mtune=
>>> Target RejectNegative ToLower Joined Var(aarch64_tune_string)
>>> --mtune=CPU Optimize for CPU.
>>> +Optimize for CPU.
>>>
>>> mabi=
>>> Target RejectNegative Joined Enum(aarch64_abi) Var(aarch64_abi) Init(AARCH64_ABI_DEFAULT)
>>>
>>
>
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] Print default options selection for -march,-mcpu and -mtune for aarch64 (PR driver/83193).
2018-08-23 14:46 ` Richard Earnshaw (lists)
@ 2018-08-24 12:06 ` Martin Liška
0 siblings, 0 replies; 7+ messages in thread
From: Martin Liška @ 2018-08-24 12:06 UTC (permalink / raw)
To: Richard Earnshaw (lists), gcc-patches
Cc: Ramana Radhakrishnan, James Greenhalgh, Kyrill Tkachov
[-- Attachment #1: Type: text/plain, Size: 7838 bytes --]
On 08/23/2018 04:46 PM, Richard Earnshaw (lists) wrote:
> On 02/08/18 10:46, Martin Liška wrote:
>> On 08/02/2018 11:39 AM, Richard Earnshaw (lists) wrote:
>>> On 18/07/18 16:48, Martin Liška wrote:
>>>> Hi.
>>>>
>>>> This is aarch64 fix for PR83193. It's about setting of default options
>>>> so that --help=target -Q prints proper numbers:
>>>>
>>>> Now this is seen on my cross-compiler:
>>>>
>>>> --- /home/marxin/Downloads/options-2-before.txt 2018-07-18 14:53:11.658146543 +0200
>>>> +++ /home/marxin/Downloads/options-2.txt 2018-07-18 14:52:30.113274284 +0200
>>>> @@ -1,10 +1,10 @@
>>>> The following options are target specific:
>>>> -mabi=ABI lp64
>>>> - -march=ARCH
>>>> + -march= armv8-a
>>>
>>> So we have
>>>
>>> -mabi=ABI lp64
>>>
>>> but
>>>
>>> -march= armv8-a
>>> ^^^^^ blank
>>>
>>> Isn't that inconsistent?
>>
>> It is probably, in this case I would remove 'ABI' from -mabi option. It's explained bellow
>> what are possible options:
>>
>> Known AArch64 ABIs (for use with the -mabi= option):
>> ilp32 lp64
>>
>> Similarly for:
>> -moverride=STRING Power users only! Override CPU optimization parameters.
>> -msve-vector-bits=N Set the number of bits in an SVE vector register to N.
>>
>> It's more common to <var> notation, there are some samples from --help=common:
>>
>> -fmax-errors=<number> Maximum number of errors to report.
>> -fmessage-length=<number> Limit diagnostics to <number> characters per line. 0 suppresses line-wrapping.
>> -fira-region=[one|all|mixed] Set regions for IRA.
>> -fira-verbose=<number> Control IRA's level of diagnostic messages.
>> -flifetime-dse=<0,2> This option lacks documentation.
>> -fstack-limit-register=<register> Trap if the stack goes past <register>.
>> -fstack-limit-symbol=<name> Trap if the stack goes past symbol <name>.
>>
>> Are you fine with the suggested approach?
>
> Yes, those look sensible.
>
> R.
>
>>
>> Martin
>>
>>>
>>> R.
>>>
>>>> -mbig-endian [disabled]
>>>> -mbionic [disabled]
>>>> -mcmodel= small
>>>> - -mcpu=CPU
>>>> + -mcpu= generic
>>>> -mfix-cortex-a53-835769 [enabled]
>>>> -mfix-cortex-a53-843419 [enabled]
>>>> -mgeneral-regs-only [disabled]
>>>> @@ -19,7 +19,7 @@
>>>> -msve-vector-bits=N scalable
>>>> -mtls-dialect= desc
>>>> -mtls-size= 24
>>>> - -mtune=CPU
>>>> + -mtune= generic
>>>> -muclibc [disabled]
>>>>
>>>> May I please ask ARM folks to test the patch?
>>>> Thanks,
>>>> Martin
>>>>
>>>> gcc/ChangeLog:
>>>>
>>>> 2018-07-18 Martin Liska <mliska@suse.cz>
>>>>
>>>> PR driver/83193
>>>> * config/aarch64/aarch64.c (aarch64_override_options_internal):
>>>> Set default values for x_aarch64_*_string strings.
>>>> * config/aarch64/aarch64.opt: Remove --{march,mcpu,mtune}==
>>>> prefix.
>>>> ---
>>>> gcc/config/aarch64/aarch64.c | 7 +++++++
>>>> gcc/config/aarch64/aarch64.opt | 6 +++---
>>>> 2 files changed, 10 insertions(+), 3 deletions(-)
>>>>
>>>>
>>>>
>>>> 0001-Print-default-options-selection-for-march-mcpu-and-m.patch
>>>>
>>>>
>>>> diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c
>>>> index 6fa03e4b091..d48e6278efa 100644
>>>> --- a/gcc/config/aarch64/aarch64.c
>>>> +++ b/gcc/config/aarch64/aarch64.c
>>>> @@ -10713,6 +10713,13 @@ aarch64_override_options_internal (struct gcc_options *opts)
>>>> && opts->x_optimize >= aarch64_tune_params.prefetch->default_opt_level)
>>>> opts->x_flag_prefetch_loop_arrays = 1;
>>>>
>>>> + if (opts->x_aarch64_arch_string == NULL)
>>>> + opts->x_aarch64_arch_string = selected_arch->name;
>>>> + if (opts->x_aarch64_cpu_string == NULL)
>>>> + opts->x_aarch64_cpu_string = selected_cpu->name;
>>>> + if (opts->x_aarch64_tune_string == NULL)
>>>> + opts->x_aarch64_tune_string = selected_tune->name;
>>>> +
>>>> aarch64_override_options_after_change_1 (opts);
>>>> }
>>>>
>>>> diff --git a/gcc/config/aarch64/aarch64.opt b/gcc/config/aarch64/aarch64.opt
>>>> index 1426b45ff0f..7f0b65de37b 100644
>>>> --- a/gcc/config/aarch64/aarch64.opt
>>>> +++ b/gcc/config/aarch64/aarch64.opt
>>>> @@ -117,15 +117,15 @@ Enum(aarch64_tls_size) String(48) Value(48)
>>>>
>>>> march=
>>>> Target RejectNegative ToLower Joined Var(aarch64_arch_string)
>>>> --march=ARCH Use features of architecture ARCH.
>>>> +Use features of architecture ARCH.
>>>>
>>>> mcpu=
>>>> Target RejectNegative ToLower Joined Var(aarch64_cpu_string)
>>>> --mcpu=CPU Use features of and optimize for CPU.
>>>> +Use features of and optimize for CPU.
>>>>
>>>> mtune=
>>>> Target RejectNegative ToLower Joined Var(aarch64_tune_string)
>>>> --mtune=CPU Optimize for CPU.
>>>> +Optimize for CPU.
>>>>
>>>> mabi=
>>>> Target RejectNegative Joined Enum(aarch64_abi) Var(aarch64_abi) Init(AARCH64_ABI_DEFAULT)
>>>>
>>>
>>
>
Good. The final version of the patch will do following diff:
--- /tmp/before.txt 2018-08-24 14:01:24.580625932 +0200
+++ /tmp/after.txt 2018-08-24 14:03:22.383046233 +0200
@@ -1,10 +1,10 @@
The following options are target specific:
- -mabi=ABI Generate code that conforms to the specified ABI.
- -march=ARCH Use features of architecture ARCH.
+ -mabi= Generate code that conforms to the specified ABI.
+ -march= Use features of architecture ARCH.
-mbig-endian Assume target CPU is configured as big endian.
-mbionic Use Bionic C library.
-mcmodel= Specify the code model.
- -mcpu=CPU Use features of and optimize for CPU.
+ -mcpu= Use features of and optimize for CPU.
-mfix-cortex-a53-835769 Workaround for ARM Cortex-A53 Erratum number 835769.
-mfix-cortex-a53-843419 Workaround for ARM Cortex-A53 Erratum number 843419.
-mgeneral-regs-only Generate code which uses only the general registers.
@@ -15,15 +15,15 @@
-mlow-precision-sqrt Enable the square root approximation. Enabling this reduces precision of square root results to about 16 bits for single precision and to 32 bits for double precision. If enabled, it implies -mlow-precision-recip-sqrt.
-mmusl Use musl C library.
-momit-leaf-frame-pointer Omit the frame pointer in leaf functions.
- -moverride=STRING Power users only! Override CPU optimization parameters.
+ -moverride=<string> Power users only! Override CPU optimization parameters.
-mpc-relative-literal-loads PC relative literal loads.
-msign-return-address= Select return address signing scope.
-mstrict-align Don't assume that unaligned accesses are handled by the system.
- -msve-vector-bits=N Set the number of bits in an SVE vector register to N.
+ -msve-vector-bits=<number> Set the number of bits in an SVE vector register to N.
-mtls-dialect= Specify TLS dialect.
-mtls-size= Specifies bit size of immediate TLS offsets. Valid values are 12, 24, 32, 48.
-mtrack-speculation Generate code to track when the CPU might be speculating incorrectly.
- -mtune=CPU Optimize for CPU.
+ -mtune= Optimize for CPU.
-muclibc Use uClibc C library.
-mverbose-cost-dump Enables verbose cost model dumping in the debug dump files.
I take that as agreement and I'm going to install the patch.
Martin
[-- Attachment #2: 0001-Print-default-options-selection-for-march-mcpu-and-m.patch --]
[-- Type: text/x-patch, Size: 3180 bytes --]
From af7447117d3086c432c744802c13c544d0c13da9 Mon Sep 17 00:00:00 2001
From: marxin <mliska@suse.cz>
Date: Tue, 20 Feb 2018 12:59:18 +0100
Subject: [PATCH] Print default options selection for -march,-mcpu and -mtune
for aarch64 (PR driver/83193).
gcc/ChangeLog:
2018-07-18 Martin Liska <mliska@suse.cz>
PR driver/83193
* config/aarch64/aarch64.c (aarch64_override_options_internal):
Set default values for x_aarch64_*_string strings.
* config/aarch64/aarch64.opt: Remove --{march,mcpu,mtune}==
prefix. For -mabi do not print '=ABI' in help and use
<option_value> format for -msve-vector-bits and -moverride
options.
---
gcc/config/aarch64/aarch64.c | 7 +++++++
gcc/config/aarch64/aarch64.opt | 12 ++++++------
2 files changed, 13 insertions(+), 6 deletions(-)
diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c
index 5bb30e0c69c..0d7ca999846 100644
--- a/gcc/config/aarch64/aarch64.c
+++ b/gcc/config/aarch64/aarch64.c
@@ -10557,6 +10557,13 @@ aarch64_override_options_internal (struct gcc_options *opts)
&& opts->x_optimize >= aarch64_tune_params.prefetch->default_opt_level)
opts->x_flag_prefetch_loop_arrays = 1;
+ if (opts->x_aarch64_arch_string == NULL)
+ opts->x_aarch64_arch_string = selected_arch->name;
+ if (opts->x_aarch64_cpu_string == NULL)
+ opts->x_aarch64_cpu_string = selected_cpu->name;
+ if (opts->x_aarch64_tune_string == NULL)
+ opts->x_aarch64_tune_string = selected_tune->name;
+
aarch64_override_options_after_change_1 (opts);
}
diff --git a/gcc/config/aarch64/aarch64.opt b/gcc/config/aarch64/aarch64.opt
index c8e82042224..b2e80cbf6f1 100644
--- a/gcc/config/aarch64/aarch64.opt
+++ b/gcc/config/aarch64/aarch64.opt
@@ -117,23 +117,23 @@ Enum(aarch64_tls_size) String(48) Value(48)
march=
Target RejectNegative ToLower Joined Var(aarch64_arch_string)
--march=ARCH Use features of architecture ARCH.
+Use features of architecture ARCH.
mcpu=
Target RejectNegative ToLower Joined Var(aarch64_cpu_string)
--mcpu=CPU Use features of and optimize for CPU.
+Use features of and optimize for CPU.
mtune=
Target RejectNegative ToLower Joined Var(aarch64_tune_string)
--mtune=CPU Optimize for CPU.
+Optimize for CPU.
mabi=
Target RejectNegative Joined Enum(aarch64_abi) Var(aarch64_abi) Init(AARCH64_ABI_DEFAULT)
--mabi=ABI Generate code that conforms to the specified ABI.
+Generate code that conforms to the specified ABI.
moverride=
Target RejectNegative ToLower Joined Var(aarch64_override_tune_string)
--moverride=STRING Power users only! Override CPU optimization parameters.
+-moverride=<string> Power users only! Override CPU optimization parameters.
Enum
Name(aarch64_abi) Type(int)
@@ -209,7 +209,7 @@ Enum(sve_vector_bits) String(2048) Value(SVE_2048)
msve-vector-bits=
Target RejectNegative Joined Enum(sve_vector_bits) Var(aarch64_sve_vector_bits) Init(SVE_SCALABLE)
--msve-vector-bits=N Set the number of bits in an SVE vector register to N.
+-msve-vector-bits=<number> Set the number of bits in an SVE vector register to N.
mverbose-cost-dump
Target Undocumented Var(flag_aarch64_verbose_cost)
--
2.18.0
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2018-08-24 12:06 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-07-18 15:48 [PATCH] Print default options selection for -march,-mcpu and -mtune for aarch64 (PR driver/83193) Martin Liška
2018-08-01 13:55 ` Martin Liška
2018-08-02 9:39 ` Richard Earnshaw (lists)
2018-08-02 9:46 ` Martin Liška
2018-08-23 11:01 ` Martin Liška
2018-08-23 14:46 ` Richard Earnshaw (lists)
2018-08-24 12:06 ` Martin Liška
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).