]> granicus.if.org Git - llvm/commitdiff
[test] Fix TargetParserTest runtime.
authorJordan Rupprecht <rupprecht@google.com>
Wed, 19 Jun 2019 18:03:36 +0000 (18:03 +0000)
committerJordan Rupprecht <rupprecht@google.com>
Wed, 19 Jun 2019 18:03:36 +0000 (18:03 +0000)
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.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@363851 91177308-0d34-0410-b5e6-96231b3b80d8

unittests/Support/TargetParserTest.cpp

index c19be4bb8a2e4211c89d5f4c178779193ae16c20..ef7257f4eb07ce9e13f3466bd3f68d9b006ee976 100644 (file)
@@ -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, AArch64ExtensionFeatures) {
                         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) {