Strength reduce constant-sized vectors into arrays. No functionality change.
authorBenjamin Kramer <benny.kra@googlemail.com>
Wed, 22 Oct 2014 19:55:26 +0000 (19:55 +0000)
committerBenjamin Kramer <benny.kra@googlemail.com>
Wed, 22 Oct 2014 19:55:26 +0000 (19:55 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@220412 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/SelectionDAG/DAGCombiner.cpp
lib/Support/Unix/Signals.inc

index df95d291a39fb27930e1ee07a7c96ea2f510eccd..6fe4ade4aa8534a1e74815199b1a243c7fbf56cc 100644 (file)
@@ -3154,7 +3154,7 @@ SDValue DAGCombiner::MatchBSwapHWordLow(SDNode *N, SDValue N0, SDValue N1,
 /// ((x & 0x0000ff00) >> 8) |
 /// ((x & 0x00ff0000) << 8) |
 /// ((x & 0xff000000) >> 8)
-static bool isBSwapHWordElement(SDValue N, SmallVectorImpl<SDNode *> &Parts) {
+static bool isBSwapHWordElement(SDValue N, MutableArrayRef<SDNode *> Parts) {
   if (!N.getNode()->hasOneUse())
     return false;
 
@@ -3237,7 +3237,6 @@ SDValue DAGCombiner::MatchBSwapHWord(SDNode *N, SDValue N0, SDValue N1) {
   if (!TLI.isOperationLegal(ISD::BSWAP, VT))
     return SDValue();
 
-  SmallVector<SDNode*,4> Parts(4, (SDNode*)nullptr);
   // Look for either
   // (or (or (and), (and)), (or (and), (and)))
   // (or (or (or (and), (and)), (and)), (and))
@@ -3245,6 +3244,7 @@ SDValue DAGCombiner::MatchBSwapHWord(SDNode *N, SDValue N0, SDValue N1) {
     return SDValue();
   SDValue N00 = N0.getOperand(0);
   SDValue N01 = N0.getOperand(1);
+  SDNode *Parts[4] = {};
 
   if (N1.getOpcode() == ISD::OR &&
       N00.getNumOperands() == 2 && N01.getNumOperands() == 2) {
index d9463b915b9880bf30f2dddd985d95e22f7dc14c..5de3a25476b4f7baf3e157e714132b15802276d8 100644 (file)
@@ -349,13 +349,6 @@ static bool printSymbolizedStackTrace(void **StackTrace, int Depth, FILE *FD) {
   sys::fs::createTemporaryFile("symbolizer-output", "", OutputFile);
   FileRemover InputRemover(InputFile.c_str());
   FileRemover OutputRemover(OutputFile.c_str());
-  std::vector<const StringRef *> Redirects(3, nullptr);
-  StringRef InputFileStr(InputFile);
-  StringRef OutputFileStr(OutputFile);
-  StringRef StderrFileStr;
-  Redirects[0] = &InputFileStr;
-  Redirects[1] = &OutputFileStr;
-  Redirects[2] = &StderrFileStr;
 
   {
     raw_fd_ostream Input(InputFD, true);
@@ -365,10 +358,15 @@ static bool printSymbolizedStackTrace(void **StackTrace, int Depth, FILE *FD) {
     }
   }
 
+  StringRef InputFileStr(InputFile);
+  StringRef OutputFileStr(OutputFile);
+  StringRef StderrFileStr;
+  const StringRef *Redirects[] = {&InputFileStr, &OutputFileStr,
+                                  &StderrFileStr};
   const char *Args[] = {"llvm-symbolizer", "--functions=linkage", "--inlining",
                         "--demangle", nullptr};
   int RunResult =
-      sys::ExecuteAndWait(LLVMSymbolizerPath, Args, nullptr, Redirects.data());
+      sys::ExecuteAndWait(LLVMSymbolizerPath, Args, nullptr, Redirects);
   if (RunResult != 0)
     return false;