]> granicus.if.org Git - llvm/commitdiff
[X86] In X86DomainReassignment.cpp add enclosed registers to EnclosedEdges
authorGuozhi Wei <carrot@google.com>
Tue, 5 Mar 2019 18:54:34 +0000 (18:54 +0000)
committerGuozhi Wei <carrot@google.com>
Tue, 5 Mar 2019 18:54:34 +0000 (18:54 +0000)
The variable X86DomainReassignment::EnclosedEdges is used to store registers that have been enclosed in some closure, so those registers will be ignored when create new closures. But there is no registers has ever been put into this set, so a single register can be enclosed in multiple closures, it significantly increase compile time.

This patch adds a register into EnclosedEdges when it is enclosed into a closure.

Differential Revision: https://reviews.llvm.org/D58646

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

lib/Target/X86/X86DomainReassignment.cpp

index 86d9de22775d40838aea64274e9cc8926b584360..b4bd63dad8ca5e63edb5b148969419aa42e3a238 100644 (file)
@@ -556,6 +556,7 @@ void X86DomainReassignment::buildClosure(Closure &C, unsigned Reg) {
     // Register already in this closure.
     if (!C.insertEdge(CurReg))
       continue;
+    EnclosedEdges.insert(Reg);
 
     MachineInstr *DefMI = MRI->getVRegDef(CurReg);
     encloseInstr(C, DefMI);