[llvm] r363851 - [test] Fix TargetParserTest runtime.

Jordan Rupprecht via llvm-commits llvm-commits at lists.llvm.org
Wed Jun 19 11:03:37 PDT 2019


Author: rupprecht
Date: Wed Jun 19 11:03:36 2019
New Revision: 363851

URL: http://llvm.org/viewvc/llvm-project?rev=363851&view=rev
Log:
[test] Fix TargetParserTest runtime.

r363780 fixes extreme memory growth by using a new std::vector every loop iteration, but causes runtime to go up (and occasionally timeout in certain situations) because of constructor cost every loop iteration. Fix this by moving the constructor back out, but clearing contents in the loop.

Also apply this to the AArch64 features test case, which seems to use the same pattern.

Modified:
    llvm/trunk/unittests/Support/TargetParserTest.cpp

Modified: llvm/trunk/unittests/Support/TargetParserTest.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/Support/TargetParserTest.cpp?rev=363851&r1=363850&r2=363851&view=diff
==============================================================================
--- llvm/trunk/unittests/Support/TargetParserTest.cpp (original)
+++ llvm/trunk/unittests/Support/TargetParserTest.cpp Wed Jun 19 11:03:36 2019
@@ -569,13 +569,14 @@ TEST(TargetParserTest, ARMFPURestriction
 }
 
 TEST(TargetParserTest, ARMExtensionFeatures) {
+  std::vector<StringRef> Features;
   unsigned Extensions = ARM::AEK_CRC | ARM::AEK_CRYPTO | ARM::AEK_DSP |
                         ARM::AEK_HWDIVARM | ARM::AEK_HWDIVTHUMB | ARM::AEK_MP |
                         ARM::AEK_SEC | ARM::AEK_VIRT | ARM::AEK_RAS | ARM::AEK_FP16 |
                         ARM::AEK_FP16FML | ARM::AEK_FP_DP;
 
   for (unsigned i = 0; i <= Extensions; i++) {
-    std::vector<StringRef> Features;
+    Features.clear();
     EXPECT_TRUE(i == 0 ? !ARM::getExtensionFeatures(i, Features)
                        : ARM::getExtensionFeatures(i, Features));
   }
@@ -1028,9 +1029,11 @@ TEST(TargetParserTest, AArch64ExtensionF
                         AArch64::AEK_SVE2 | AArch64::AEK_DOTPROD |
                         AArch64::AEK_RCPC | AArch64::AEK_FP16FML;
 
-  for (unsigned i = 0; i <= Extensions; i++)
+  for (unsigned i = 0; i <= Extensions; i++) {
+    Features.clear();
     EXPECT_TRUE(i == 0 ? !AArch64::getExtensionFeatures(i, Features)
                        : AArch64::getExtensionFeatures(i, Features));
+  }
 }
 
 TEST(TargetParserTest, AArch64ArchFeatures) {




More information about the llvm-commits mailing list