[PATCH v4 2/3] arc: Add hardware loop detection

Simon Marchi simark@simark.ca
Sat Aug 1 14:53:38 GMT 2020


This patch is also OK with these nits fixed.

On 2020-07-23 3:35 p.m., Shahab Vahedi wrote:
> diff --git a/gdb/arc-tdep.c b/gdb/arc-tdep.c
> index 0c7e045e54b..59e698bb18b 100644
> --- a/gdb/arc-tdep.c
> +++ b/gdb/arc-tdep.c
> @@ -2006,6 +2006,35 @@ arc_check_tdesc_feature (struct tdesc_arch_data *tdesc_data,
>    return true;
>  }
>  
> +/* Check for the existance of "lp_start" and "lp_end" in target description.
> +   If both are present, assume there is hardware loop support in the target.
> +   This can be improved by looking into "lpc_size" field of "isa_config"
> +   auxiliary register.  */
> +
> +static bool
> +arc_check_for_hw_loops (const struct target_desc *tdesc,
> +			struct tdesc_arch_data *data)
> +{
> +  const auto feature_aux = tdesc_find_feature (tdesc, ARC_AUX_FEATURE_NAME);
> +  const auto *aux_regset = determine_aux_reg_feature_set ();

To be consistent, I'd suggest using the star in both places or not use it in both places.

> +
> +  if (feature_aux == nullptr || aux_regset == nullptr)
> +    return false;

If a function (I'm thinking of determine_aux_reg_feature_set) can't (according to its contract)
return nullptr, don't check for nullptr, that's:

(1) unnecessary
(2) confusing, since by reading this code my mind goes searching for a reason why
    determine_aux_reg_feature_set might return nullptr

I suppose that tdesc_find_feature can return nullptr, if the feature is not present.

> diff --git a/gdb/arc-tdep.h b/gdb/arc-tdep.h
> index 6ca759a661d..e752348a262 100644
> --- a/gdb/arc-tdep.h
> +++ b/gdb/arc-tdep.h
> @@ -23,6 +23,7 @@
>  
>  /* Need disassemble_info.  */
>  #include "dis-asm.h"
> +#include "gdbarch.h"

I suppose that adding this is correct, as this file uses some things from gdbarch.h.

It's a change unrelated to the topic of this patch, so it's preferable to send it as
a separate patch, with its own explanation.

Simon



More information about the Gdb-patches mailing list