aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJakob Stoklund Olesen <stoklund@2pi.dk>2012-10-17 17:52:35 +0000
committerJakob Stoklund Olesen <stoklund@2pi.dk>2012-10-17 17:52:35 +0000
commit9d57cdfa172c1af3712ef52862a1976c57c679a5 (patch)
tree5e48b1102b923a093476f1080654085f654b72eb
parente4b33a115bb91c663c55061fd232fa839cc8c4ca (diff)
downloadexternal_llvm-9d57cdfa172c1af3712ef52862a1976c57c679a5.tar.gz
external_llvm-9d57cdfa172c1af3712ef52862a1976c57c679a5.tar.bz2
external_llvm-9d57cdfa172c1af3712ef52862a1976c57c679a5.zip
Check for empty YMM use-def lists in X86VZeroUpper.
The previous MRI.isPhysRegUsed(YMM0) would also return true when the function contains a call to a function that may clobber YMM0. That's most of them. Checking the use-def chains allows us to skip functions that don't explicitly mention YMM registers. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166110 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/Target/X86/X86VZeroUpper.cpp2
1 files changed, 1 insertions, 1 deletions
diff --git a/lib/Target/X86/X86VZeroUpper.cpp b/lib/Target/X86/X86VZeroUpper.cpp
index 449eed3d8d..c4a58874a4 100644
--- a/lib/Target/X86/X86VZeroUpper.cpp
+++ b/lib/Target/X86/X86VZeroUpper.cpp
@@ -147,7 +147,7 @@ bool VZeroUpperInserter::runOnMachineFunction(MachineFunction &MF) {
const TargetRegisterClass *RC = &X86::VR256RegClass;
for (TargetRegisterClass::iterator i = RC->begin(), e = RC->end();
i != e; i++) {
- if (MRI.isPhysRegUsed(*i)) {
+ if (!MRI.reg_nodbg_empty(*i)) {
YMMUsed = true;
break;
}