This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: [PATCH] Call get_compiler_info directly from test_compiler_info if needed.
- From: Pedro Alves <palves at redhat dot com>
- To: Andrew Burgess <aburgess at broadcom dot com>
- Cc: "gdb-patches at sourceware dot org" <gdb-patches at sourceware dot org>
- Date: Tue, 10 Dec 2013 15:49:02 +0000
- Subject: Re: [PATCH] Call get_compiler_info directly from test_compiler_info if needed.
- Authentication-results: sourceware.org; auth=none
- References: <52A728A0 dot 1050208 at broadcom dot com> <52A72C70 dot 5040305 at redhat dot com> <52A7303B dot 2080901 at broadcom dot com>
On 12/10/2013 03:16 PM, Andrew Burgess wrote:
> On 10/12/2013 3:00 PM, Pedro Alves wrote:
>> On 12/10/2013 02:43 PM, Andrew Burgess wrote:
>>> proc test_compiler_info { {compiler ""} } {
>>> global compiler_info
>>>
>>> + # Check that compiler_info has been initialised
>>> + if [string match "" $compiler_info] {
>>> + if [get_compiler_info] {
>>> + warning "Could not get compiler info"
>>> + return -1
>>> + }
>>> + }
>>
>> What about get_compiler_info's $arg?
>
> In the cases where I removed calls to get_compiler_info no arg was being
> passed anyway, my assumption then is that in most cases the "default"
> result of get_compiler_info is fine.
>
> If you really want to pass some args to get_compiler_info you can still
> do that in a separate call, and I left in place (in gdb.exp) a call that
> does just this.
>
> The code in test_compiler_info will not overwrite an existing
> compiler_info value, so if you've taken care to call get_compiler_info
> yourself then all should still work as expected.
Yes, but, if the interface will be "you don't need to call
get_compiler_info yourself, except ...", is there any gain in
doing this here? The current rule is "you need to call
get_compiler_info yourself, period.", which seems easier to
explain. E.g., here:
> @@ -2027,10 +2027,6 @@ gdb_caching_proc skip_altivec_tests {
>
> # Make sure we have a compiler that understands altivec.
> set compile_flags {debug nowarnings}
> - if [get_compiler_info] {
> - warning "Could not get compiler info"
> - return 1
> - }
> if [test_compiler_info gcc*] {
> set compile_flags "$compile_flags additional_flags=-maltivec"
> } elseif [test_compiler_info xlc*] {
Before, the removed get_compiler_info would always overwrite
whatever was in the compiler_info before. Now, if the previous
call to get_compiler_info happened to get an $arg,
test_compiler_info will now reuse the wrong compiler_info.
It seems to me that it should be get_compiler_info that
caches its results, not test_compiler_info, taking into
account $arg. And then, if we want to get rid of the
need to call get_compiler_info before test_compiler_info,
then test_compiler_info should have likewise an $arg parameter
that gets passed down to the get_compiler_info call.
--
Pedro Alves