<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On 4 January 2017 at 14:54, Matt Arsenault via llvm-commits <span dir="ltr"><<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Author: arsenm<br>
Date: Wed Jan  4 16:54:10 2017<br>
New Revision: 291025<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=291025&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project?rev=291025&view=rev</a><br>
Log:<br>
AMDGPU: Remove unneccessary intermediate vector<br></blockquote><div><br></div><div>This is causing buildbot failures:</div><div><br></div><div>  <a href="http://lab.llvm.org:8011/builders/clang-x86_64-linux-selfhost-modules/builds/2056">http://lab.llvm.org:8011/builders/clang-x86_64-linux-selfhost-modules/builds/2056</a><br></div><div><br></div><div>(These were masked by other breakage until now.) Reverted in r291067.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
Modified:<br>
    llvm/trunk/lib/Target/AMDGPU/<wbr>AsmParser/AMDGPUAsmParser.cpp<br>
<br>
Modified: llvm/trunk/lib/Target/AMDGPU/<wbr>AsmParser/AMDGPUAsmParser.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp?rev=291025&r1=291024&r2=291025&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/lib/Target/<wbr>AMDGPU/AsmParser/<wbr>AMDGPUAsmParser.cpp?rev=<wbr>291025&r1=291024&r2=291025&<wbr>view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/lib/Target/AMDGPU/<wbr>AsmParser/AMDGPUAsmParser.cpp (original)<br>
+++ llvm/trunk/lib/Target/AMDGPU/<wbr>AsmParser/AMDGPUAsmParser.cpp Wed Jan  4 16:54:10 2017<br>
@@ -822,6 +822,7 @@ public:<br>
   bool isForcedVOP3() const { return ForcedEncodingSize == 64; }<br>
   bool isForcedDPP() const { return ForcedDPP; }<br>
   bool isForcedSDWA() const { return ForcedSDWA; }<br>
+  ArrayRef<unsigned> getMatchedVariants() const;<br>
<br>
   std::unique_ptr<AMDGPUOperand> parseRegister();<br>
   bool ParseRegister(unsigned &RegNo, SMLoc &StartLoc, SMLoc &EndLoc) override;<br>
@@ -1630,31 +1631,34 @@ unsigned AMDGPUAsmParser::<wbr>checkTargetMat<br>
   return Match_Success;<br>
 }<br>
<br>
+// What asm variants we should check<br>
+ArrayRef<unsigned> AMDGPUAsmParser::<wbr>getMatchedVariants() const {<br>
+  if (getForcedEncodingSize() == 32)<br>
+    return {AMDGPUAsmVariants::DEFAULT};<br>
+<br>
+  if (isForcedVOP3())<br>
+    return {AMDGPUAsmVariants::VOP3};<br>
+<br>
+  if (isForcedSDWA())<br>
+    return {AMDGPUAsmVariants::SDWA};<br>
+<br>
+  if (isForcedDPP())<br>
+    return {AMDGPUAsmVariants::DPP};<br>
+<br>
+  return {AMDGPUAsmVariants::DEFAULT,<br>
+          AMDGPUAsmVariants::VOP3,<br>
+          AMDGPUAsmVariants::SDWA,<br>
+          AMDGPUAsmVariants::DPP};<br></blockquote><div><br></div><div>You're returning ArrayRefs referring to local arrays here. Perhaps you could add static local variables to hold the contents of these arrays instead?</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
+}<br>
+<br>
 bool AMDGPUAsmParser::<wbr>MatchAndEmitInstruction(SMLoc IDLoc, unsigned &Opcode,<br>
                                               OperandVector &Operands,<br>
                                               MCStreamer &Out,<br>
                                               uint64_t &ErrorInfo,<br>
                                               bool MatchingInlineAsm) {<br>
-  // What asm variants we should check<br>
-  std::vector<unsigned> MatchedVariants;<br>
-  if (getForcedEncodingSize() == 32) {<br>
-    MatchedVariants = {AMDGPUAsmVariants::DEFAULT};<br>
-  } else if (isForcedVOP3()) {<br>
-    MatchedVariants = {AMDGPUAsmVariants::VOP3};<br>
-  } else if (isForcedSDWA()) {<br>
-    MatchedVariants = {AMDGPUAsmVariants::SDWA};<br>
-  } else if (isForcedDPP()) {<br>
-    MatchedVariants = {AMDGPUAsmVariants::DPP};<br>
-  } else {<br>
-    MatchedVariants = {AMDGPUAsmVariants::DEFAULT,<br>
-                       AMDGPUAsmVariants::VOP3,<br>
-                       AMDGPUAsmVariants::SDWA,<br>
-                       AMDGPUAsmVariants::DPP};<br>
-  }<br>
-<br>
   MCInst Inst;<br>
   unsigned Result = Match_Success;<br>
-  for (auto Variant : MatchedVariants) {<br>
+  for (auto Variant : getMatchedVariants()) {<br>
     uint64_t EI;<br>
     auto R = MatchInstructionImpl(Operands, Inst, EI, MatchingInlineAsm,<br>
                                   Variant);<br>
<br>
<br>
______________________________<wbr>_________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@lists.llvm.org">llvm-commits@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/<wbr>mailman/listinfo/llvm-commits</a><br>
</blockquote></div><br></div></div>