[all-commits] [llvm/llvm-project] ce61de: [regalloc] Ensure Query::collectInterferringVregs ...
Mircea Trofin via All-commits
all-commits at lists.llvm.org
Thu Apr 1 08:33:49 PDT 2021
Branch: refs/heads/main
Home: https://github.com/llvm/llvm-project
Commit: ce61def529e2d9ef46b79c9d1f489d69b45b95bf
https://github.com/llvm/llvm-project/commit/ce61def529e2d9ef46b79c9d1f489d69b45b95bf
Author: Mircea Trofin <mtrofin at google.com>
Date: 2021-04-01 (Thu, 01 Apr 2021)
Changed paths:
M llvm/include/llvm/CodeGen/LiveIntervalUnion.h
M llvm/lib/CodeGen/LiveIntervalUnion.cpp
M llvm/lib/CodeGen/LiveRegMatrix.cpp
M llvm/lib/CodeGen/RegAllocGreedy.cpp
M llvm/lib/Target/AArch64/AArch64Subtarget.h
M llvm/lib/Target/X86/X86Subtarget.h
M llvm/test/CodeGen/AArch64/ragreedy-local-interval-cost.ll
M llvm/test/CodeGen/X86/bug26810.ll
M llvm/test/CodeGen/X86/greedy_regalloc_bad_eviction_sequence.ll
M llvm/test/CodeGen/X86/i128-mul.ll
M llvm/test/CodeGen/X86/mmx-arith.ll
M llvm/test/CodeGen/X86/optimize-max-0.ll
Log Message:
-----------
[regalloc] Ensure Query::collectInterferringVregs is called before interval iteration
The main part of the patch is the change in RegAllocGreedy.cpp: Q.collectInterferringVregs()
needs to be called before iterating the interfering live ranges.
The rest of the patch offers support that is the case: instead of clearing the query's
InterferingVRegs field, we invalidate it. The clearing happens when the live reg matrix
is invalidated (existing triggering mechanism).
Without the change in RegAllocGreedy.cpp, the compiler ices.
This patch should make it more easily discoverable by developers that
collectInterferringVregs needs to be called before iterating.
I will follow up with a subsequent patch to improve the usability and maintainability of Query.
Differential Revision: https://reviews.llvm.org/D98232
More information about the All-commits
mailing list