<div dir="ltr">I've reverted it. I'm not sure why that didn't fail in my local build.<div><br clear="all"><div><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature">~Craig</div></div><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Jun 22, 2020 at 12:13 PM Hans Wennborg via llvm-commits <<a href="mailto:llvm-commits@lists.llvm.org">llvm-commits@lists.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">This seems to be breaking the build: <a href="http://45.33.8.238/linux/20972/step_4.txt" rel="noreferrer" target="_blank">http://45.33.8.238/linux/20972/step_4.txt</a><br>
<br>
On Mon, Jun 22, 2020 at 9:07 PM Craig Topper via llvm-commits<br>
<<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a>> wrote:<br>
><br>
><br>
> Author: Craig Topper<br>
> Date: 2020-06-22T11:46:20-07:00<br>
> New Revision: 5ac144fe64c6911b5b6011cac1d61e0f82562e7f<br>
><br>
> URL: <a href="https://github.com/llvm/llvm-project/commit/5ac144fe64c6911b5b6011cac1d61e0f82562e7f" rel="noreferrer" target="_blank">https://github.com/llvm/llvm-project/commit/5ac144fe64c6911b5b6011cac1d61e0f82562e7f</a><br>
> DIFF: <a href="https://github.com/llvm/llvm-project/commit/5ac144fe64c6911b5b6011cac1d61e0f82562e7f.diff" rel="noreferrer" target="_blank">https://github.com/llvm/llvm-project/commit/5ac144fe64c6911b5b6011cac1d61e0f82562e7f.diff</a><br>
><br>
> LOG: [X86] Calculate the needed size of the feature arrays in _cpu_indicator_init and getHostCPUName using the size of the feature enum.<br>
><br>
> Move 0 initialization up to the caller so we don't need to know<br>
> the size.<br>
><br>
> Added:<br>
><br>
><br>
> Modified:<br>
>     compiler-rt/lib/builtins/cpu_model.c<br>
>     llvm/include/llvm/Support/X86TargetParser.h<br>
>     llvm/lib/Support/Host.cpp<br>
><br>
> Removed:<br>
><br>
><br>
><br>
> ################################################################################<br>
> diff  --git a/compiler-rt/lib/builtins/cpu_model.c b/compiler-rt/lib/builtins/cpu_model.c<br>
> index 59c6974207c7..3207f1449e00 100644<br>
> --- a/compiler-rt/lib/builtins/cpu_model.c<br>
> +++ b/compiler-rt/lib/builtins/cpu_model.c<br>
> @@ -125,7 +125,8 @@ enum ProcessorFeatures {<br>
>    FEATURE_AVX512VNNI,<br>
>    FEATURE_AVX512BITALG,<br>
>    FEATURE_AVX512BF16,<br>
> -  FEATURE_AVX512VP2INTERSECT<br>
> +  FEATURE_AVX512VP2INTERSECT,<br>
> +  CPU_FEATURE_MAX<br>
>  };<br>
><br>
>  // The check below for i386 was copied from clang's cpuid.h (__get_cpuid_max).<br>
> @@ -493,8 +494,6 @@ static void getAMDProcessorTypeAndSubtype(unsigned Family, unsigned Model,<br>
><br>
>  static void getAvailableFeatures(unsigned ECX, unsigned EDX, unsigned MaxLeaf,<br>
>                                   unsigned *Features) {<br>
> -  Features[0] = 0;<br>
> -  Features[1] = 0;<br>
>    unsigned EAX, EBX;<br>
><br>
>  #define setFeature(F)                                                          \<br>
> @@ -653,7 +652,8 @@ int CONSTRUCTOR_ATTRIBUTE __cpu_indicator_init(void) {<br>
>    unsigned MaxLeaf = 5;<br>
>    unsigned Vendor;<br>
>    unsigned Model, Family;<br>
> -  unsigned Features[2];<br>
> +  const unsigned SIZE_OF_FEATURES = (CPU_FEATURE_MAX + 31) / 32;<br>
> +  unsigned Features[SIZE_OF_FEATURES] = {0};<br>
><br>
>    // This function needs to run just once.<br>
>    if (__cpu_model.__cpu_vendor)<br>
> @@ -670,6 +670,8 @@ int CONSTRUCTOR_ATTRIBUTE __cpu_indicator_init(void) {<br>
><br>
>    // Find available features.<br>
>    getAvailableFeatures(ECX, EDX, MaxLeaf, &Features[0]);<br>
> +<br>
> +  assert(SIZE_OF_FEATURES == 2);<br>
>    __cpu_model.__cpu_features[0] = Features[0];<br>
>    __cpu_features2 = Features[1];<br>
><br>
><br>
> diff  --git a/llvm/include/llvm/Support/X86TargetParser.h b/llvm/include/llvm/Support/X86TargetParser.h<br>
> index 7cdf1c532814..e357d11a6615 100644<br>
> --- a/llvm/include/llvm/Support/X86TargetParser.h<br>
> +++ b/llvm/include/llvm/Support/X86TargetParser.h<br>
> @@ -56,7 +56,7 @@ enum ProcessorFeatures {<br>
>  #define X86_FEATURE(VAL, ENUM) \<br>
>    ENUM = VAL,<br>
>  #include "llvm/Support/X86TargetParser.def"<br>
> -<br>
> +  CPU_FEATURE_MAX<br>
>  };<br>
><br>
>  enum CPUKind {<br>
><br>
> diff  --git a/llvm/lib/Support/Host.cpp b/llvm/lib/Support/Host.cpp<br>
> index c6b12e6516a4..e4c6b879884a 100644<br>
> --- a/llvm/lib/Support/Host.cpp<br>
> +++ b/llvm/lib/Support/Host.cpp<br>
> @@ -582,7 +582,7 @@ static void detectX86FamilyModel(unsigned EAX, unsigned *Family,<br>
><br>
>  static void<br>
>  getIntelProcessorTypeAndSubtype(unsigned Family, unsigned Model,<br>
> -                                const unsigned (&Features)[3],<br>
> +                                const unsigned *Features,<br>
>                                  unsigned *Type, unsigned *Subtype) {<br>
>    auto testFeature = [&](unsigned F) {<br>
>      return (Features[F / 32] & (1U << (F % 32))) != 0;<br>
> @@ -910,7 +910,7 @@ getIntelProcessorTypeAndSubtype(unsigned Family, unsigned Model,<br>
>  }<br>
><br>
>  static void getAMDProcessorTypeAndSubtype(unsigned Family, unsigned Model,<br>
> -                                          const unsigned (&Features)[3],<br>
> +                                          const unsigned *Features,<br>
>                                            unsigned *Type, unsigned *Subtype) {<br>
>    auto testFeature = [&](unsigned F) {<br>
>      return (Features[F / 32] & (1U << (F % 32))) != 0;<br>
> @@ -1012,10 +1012,7 @@ static void getAMDProcessorTypeAndSubtype(unsigned Family, unsigned Model,<br>
>  }<br>
><br>
>  static void getAvailableFeatures(unsigned ECX, unsigned EDX, unsigned MaxLeaf,<br>
> -                                 unsigned (&Features)[3]) {<br>
> -  Features[0] = 0;<br>
> -  Features[1] = 0;<br>
> -  Features[2] = 0;<br>
> +                                 unsigned *Features) {<br>
>    unsigned EAX, EBX;<br>
><br>
>    auto setFeature = [&](unsigned F) {<br>
> @@ -1157,7 +1154,7 @@ StringRef sys::getHostCPUName() {<br>
>    getX86CpuIDAndInfo(0x1, &EAX, &EBX, &ECX, &EDX);<br>
><br>
>    unsigned Family = 0, Model = 0;<br>
> -  unsigned Features[3] = {0, 0, 0};<br>
> +  unsigned Features[(X86::CPU_FEATURE_MAX + 31) / 32] = {0};<br>
>    detectX86FamilyModel(EAX, &Family, &Model);<br>
>    getAvailableFeatures(ECX, EDX, MaxLeaf, Features);<br>
><br>
><br>
><br>
><br>
> _______________________________________________<br>
> llvm-commits mailing list<br>
> <a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a><br>
> <a href="https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank">https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</a><br>
_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a><br>
<a href="https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank">https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</a><br>
</blockquote></div>