浏览代码

[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.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@363851 91177308-0d34-0410-b5e6-96231b3b80d8
Jordan Rupprecht 6 年之前
父节点
当前提交
cc4f8346ba
共有 1 个文件被更改,包括 5 次插入2 次删除
  1. 5 2
      unittests/Support/TargetParserTest.cpp

+ 5 - 2
unittests/Support/TargetParserTest.cpp

@@ -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) {