This series also fixes a couple of minor bugs.

I've made all the changes Richard requested against v1, and will push this if
it passes testing.


Each commit has again been built and tested with:
RUNTESTFLAGS="aarch64.exp=feature-*\ spellcheck*\ mv*\ arch-diag*\ cpu-diag*\ 
target_attr_crypto_ice*\  aarch64-cpunative.exp=* dg.exp=march.c\ mtune.c"

and I'm currently rerunning bootstrap/regression checks on the whole series.


Changes in v2:
- Renamed structs *_info -> aarch64_*_info.
- Outline hint printing code into aarch64_print_hint_candidates.
- Renamed MARCH_REWRITE_SPEC* -> AARCH64_REWRITE_SPEC*.
- Combine the -march/-mcpu spec rules into a single rule.


On that last point:
> I suppose the way of handling both Tamar's change and yours would be
> something like:
> 
>   "%{march=*:-march=%:rewrite_march(%{march=*:%*})" \
>     ";:%{mcpu=*:-march=%:rewrite_mcpu(%{mcpu=*:%*})}}"
> 
> (untested).

I found it rather hard to parse this suggestion (more so than the existing
spec rules), mostly because I misread the bracketing.  I was considering
sticking with my original patch (but with the order of the lines swapped),
until I realised that I could instead use the slightly simpler:

  "%{march=*:-march=%:rewrite_march(%{march=*:%*});" \
    "mcpu=*:-march=%:rewrite_mcpu(%{mcpu=*:%*})}}"


To clarify the differences for anyone not familiar with spec rule syntax, I've
listed approximately equivalent C code below:

My original patch (applied on top of Tamar's change):
if (!march)
  if (mcpu)
    rewrite_mcpu()
if (march)
  rewrite_march()

Richard's suggestion:
if (march)
  rewrite_march()
else if (true)
  if (mcpu)
    rewrite_mcpu()

My current patch:
if (march)
  rewrite_march()
else if (mcpu)
  rewrite_mcpu()

Reply via email to