This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] Call get_compiler_info directly from test_compiler_info if needed.


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]