On 01/03/2019 12:57, Tamar Christina wrote: > Hi All, > > Due to config.gcc all the options need to be on one line because of the grep > lines which would select only the first line of the option. > > This causes it not to select the right bits on options that are spread over > multiple lines when the --with-arch configure option is used. The issue > happens > silently and you just get a compiler with an incorrect set of default flags. > > This solution just collapses everything back to one line as they were in GCC7. > Unfortunately this does make some lines quite long. > > I do have an alternate patch which used the pre-processors to first flatten > the > file in config.gcc. I will send that one out for GCC 10. > > Bootstrapped Regtested on aarch64-none-linux-gnu and no issues. > > Ok for trunk? > > Thanks, > Tamar > > gcc/ChangeLog: > > 2019-03-01 Tamar Christina <tamar.christ...@arm.com> > > PR target/89517 > * config/aarch64/aarch64-option-extensions.def (fp, simd, crypto, fp16, > rdma, dotprod, sha2, sha3, sm4, fp16fml, sve): Collapse line. >
OK. R. > > rb10754.patch > > diff --git a/gcc/config/aarch64/aarch64-option-extensions.def > b/gcc/config/aarch64/aarch64-option-extensions.def > index > 1b2f4abbd5b850135af2cb7010921b45c03516a9..27d5f08c890d300d9c2a66ee6d3d04de3efd574a > 100644 > --- a/gcc/config/aarch64/aarch64-option-extensions.def > +++ b/gcc/config/aarch64/aarch64-option-extensions.def > @@ -46,29 +46,27 @@ > should contain a space (" ") separated list of the strings in 'Features' > that are required. Their order is not important. */ > > +/* NOTE: This file is being parsed by config.gcc and so the > + AARCH64_OPT_EXTENSION must adhere to a strict format: > + 1) No space between the AARCH64_OPT_EXTENSION and the opening (. > + 2) No space between the opening ( and the extension name. > + 3) No space after the extension name before the ,. > + 4) Spaces are only allowed after a , and around |. > + 5) Everything must be on one line. */ > + > /* Enabling "fp" just enables "fp". > Disabling "fp" also disables "simd", "crypto", "fp16", "aes", "sha2", > "sha3", sm3/sm4 and "sve". */ > -AARCH64_OPT_EXTENSION("fp", AARCH64_FL_FP, 0, AARCH64_FL_SIMD | > AARCH64_FL_CRYPTO |\ > - AARCH64_FL_F16 | AARCH64_FL_AES | AARCH64_FL_SHA2 |\ > - AARCH64_FL_SHA3 | AARCH64_FL_SM4 | AARCH64_FL_SVE, \ > - false, "fp") > +AARCH64_OPT_EXTENSION("fp", AARCH64_FL_FP, 0, AARCH64_FL_SIMD | > AARCH64_FL_CRYPTO | AARCH64_FL_F16 | AARCH64_FL_AES | AARCH64_FL_SHA2 | > AARCH64_FL_SHA3 | AARCH64_FL_SM4 | AARCH64_FL_SVE, false, "fp") > > /* Enabling "simd" also enables "fp". > Disabling "simd" also disables "crypto", "dotprod", "aes", "sha2", "sha3", > "sm3/sm4" and "sve". */ > -AARCH64_OPT_EXTENSION("simd", AARCH64_FL_SIMD, AARCH64_FL_FP, > AARCH64_FL_CRYPTO |\ > - AARCH64_FL_DOTPROD | AARCH64_FL_AES | AARCH64_FL_SHA2 |\ > - AARCH64_FL_SHA3 | AARCH64_FL_SM4 | AARCH64_FL_SVE, > - false, "asimd") > +AARCH64_OPT_EXTENSION("simd", AARCH64_FL_SIMD, AARCH64_FL_FP, > AARCH64_FL_CRYPTO | AARCH64_FL_DOTPROD | AARCH64_FL_AES | AARCH64_FL_SHA2 | > AARCH64_FL_SHA3 | AARCH64_FL_SM4 | AARCH64_FL_SVE, false, "asimd") > > /* Enabling "crypto" also enables "fp", "simd", "aes" and "sha2". > Disabling "crypto" disables "crypto", "aes", "sha2", "sha3" and > "sm3/sm4". */ > -AARCH64_OPT_EXTENSION("crypto", AARCH64_FL_CRYPTO, > - AARCH64_FL_FP | AARCH64_FL_SIMD | AARCH64_FL_AES |\ > - AARCH64_FL_SHA2,\ > - AARCH64_FL_AES | AARCH64_FL_SHA2 |AARCH64_FL_SHA3 | > AARCH64_FL_SM4,\ > - true, "aes pmull sha1 sha2") > +AARCH64_OPT_EXTENSION("crypto", AARCH64_FL_CRYPTO, AARCH64_FL_FP | > AARCH64_FL_SIMD | AARCH64_FL_AES | AARCH64_FL_SHA2, AARCH64_FL_AES | > AARCH64_FL_SHA2 |AARCH64_FL_SHA3 | AARCH64_FL_SM4, true, "aes pmull sha1 > sha2") > > /* Enabling or disabling "crc" only changes "crc". */ > AARCH64_OPT_EXTENSION("crc", AARCH64_FL_CRC, 0, 0, false, "crc32") > @@ -78,21 +76,18 @@ AARCH64_OPT_EXTENSION("lse", AARCH64_FL_LSE, 0, 0, false, > "atomics") > > /* Enabling "fp16" also enables "fp". > Disabling "fp16" disables "fp16", "fp16fml" and "sve". */ > -AARCH64_OPT_EXTENSION("fp16", AARCH64_FL_F16, AARCH64_FL_FP, > - AARCH64_FL_F16FML | AARCH64_FL_SVE, false, "fphp asimdhp") > +AARCH64_OPT_EXTENSION("fp16", AARCH64_FL_F16, AARCH64_FL_FP, > AARCH64_FL_F16FML | AARCH64_FL_SVE, false, "fphp asimdhp") > > /* Enabling or disabling "rcpc" only changes "rcpc". */ > AARCH64_OPT_EXTENSION("rcpc", AARCH64_FL_RCPC, 0, 0, false, "lrcpc") > > /* Enabling "rdma" also enables "fp", "simd". > Disabling "rdma" just disables "rdma". */ > -AARCH64_OPT_EXTENSION("rdma", AARCH64_FL_RDMA, \ > - AARCH64_FL_FP | AARCH64_FL_SIMD, 0, false, "asimdrdm") > +AARCH64_OPT_EXTENSION("rdma", AARCH64_FL_RDMA, AARCH64_FL_FP | > AARCH64_FL_SIMD, 0, false, "asimdrdm") > > /* Enabling "dotprod" also enables "simd". > Disabling "dotprod" only disables "dotprod". */ > -AARCH64_OPT_EXTENSION("dotprod", AARCH64_FL_DOTPROD, AARCH64_FL_SIMD, 0, \ > - false, "asimddp") > +AARCH64_OPT_EXTENSION("dotprod", AARCH64_FL_DOTPROD, AARCH64_FL_SIMD, 0, > false, "asimddp") > > /* Enabling "aes" also enables "simd". > Disabling "aes" just disables "aes". */ > @@ -100,29 +95,23 @@ AARCH64_OPT_EXTENSION("aes", AARCH64_FL_AES, > AARCH64_FL_SIMD, 0, false, "aes") > > /* Enabling "sha2" also enables "simd". > Disabling "sha2" just disables "sha2". */ > -AARCH64_OPT_EXTENSION("sha2", AARCH64_FL_SHA2, AARCH64_FL_SIMD, 0, false, \ > - "sha1 sha2") > +AARCH64_OPT_EXTENSION("sha2", AARCH64_FL_SHA2, AARCH64_FL_SIMD, 0, false, > "sha1 sha2") > > /* Enabling "sha3" enables "simd" and "sha2". > Disabling "sha3" just disables "sha3". */ > -AARCH64_OPT_EXTENSION("sha3", AARCH64_FL_SHA3, \ > - AARCH64_FL_SIMD | AARCH64_FL_SHA2, 0, false, \ > - "sha3 sha512") > +AARCH64_OPT_EXTENSION("sha3", AARCH64_FL_SHA3, AARCH64_FL_SIMD | > AARCH64_FL_SHA2, 0, false, "sha3 sha512") > > /* Enabling "sm4" also enables "simd". > Disabling "sm4" just disables "sm4". */ > -AARCH64_OPT_EXTENSION("sm4", AARCH64_FL_SM4, AARCH64_FL_SIMD, 0, false, \ > - "sm3 sm4") > +AARCH64_OPT_EXTENSION("sm4", AARCH64_FL_SM4, AARCH64_FL_SIMD, 0, false, "sm3 > sm4") > > /* Enabling "fp16fml" also enables "fp" and "fp16". > Disabling "fp16fml" just disables "fp16fml". */ > -AARCH64_OPT_EXTENSION("fp16fml", AARCH64_FL_F16FML, \ > - AARCH64_FL_FP | AARCH64_FL_F16, 0, false, "asimdfml") > +AARCH64_OPT_EXTENSION("fp16fml", AARCH64_FL_F16FML, AARCH64_FL_FP | > AARCH64_FL_F16, 0, false, "asimdfml") > > /* Enabling "sve" also enables "fp16", "fp" and "simd". > Disabling "sve" just disables "sve". */ > -AARCH64_OPT_EXTENSION("sve", AARCH64_FL_SVE, AARCH64_FL_FP | AARCH64_FL_SIMD > | \ > - AARCH64_FL_F16, 0, false, "sve") > +AARCH64_OPT_EXTENSION("sve", AARCH64_FL_SVE, AARCH64_FL_FP | AARCH64_FL_SIMD > | AARCH64_FL_F16, 0, false, "sve") > > /* Enabling/Disabling "profile" does not enable/disable any other feature. > */ > AARCH64_OPT_EXTENSION("profile", AARCH64_FL_PROFILE, 0, 0, false, "") >