[PATCH] D55412: Initialize and Register X86CondBrFoldingPass
Jianping Chen via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Thu Dec 6 23:03:12 PST 2018
Jianping created this revision.
Jianping added reviewers: craig.topper, LuoYuanke, smaslov, liutianle.
Herald added a subscriber: llvm-commits.
To make X86CondBrFoldingPass can be run with --run-pass option, this can test one wrong assertion on analyzeCompare function for SUB32ri when its operand is not imm
Repository:
rL LLVM
https://reviews.llvm.org/D55412
Files:
lib/Target/X86/X86.h
lib/Target/X86/X86CondBrFolding.cpp
lib/Target/X86/X86TargetMachine.cpp
test/CodeGen/X86/test_x86condbr_globaladdr.mir
Index: test/CodeGen/X86/test_x86condbr_globaladdr.mir
===================================================================
--- /dev/null
+++ test/CodeGen/X86/test_x86condbr_globaladdr.mir
@@ -0,0 +1,30 @@
+# XFAIL: *
+# RUN: llc -o - %s -mtriple=i686-- -mcpu=ivybridge --run-pass X86CondBrFolding | FileCheck %s
+# Test wrong assertion when meet SUB32ri with global address
+# in X86CondBrFoldingiPass
+--- |
+ @img2buf_normal = external global i32
+ define void @func() { ret void }
+...
+---
+# CHECK: bb.0:
+# CHECK: %2:gr32 = SUB32ri %1, @img2buf_normal, implicit-def $eflags
+
+name: func
+tracksRegLiveness: true
+body: |
+ bb.0:
+ liveins: $edx
+ %1:gr32 = COPY $edx
+ %2:gr32 = MOV32rm %1:gr32, 1, $noreg, 850256, $noreg
+ %3:gr32 = SUB32ri %2:gr32, @img2buf_normal, implicit-def $eflags
+ JE_1 %bb.2, implicit $eflags
+ JMP_1 %bb.3
+
+ bb.2:
+ RET 0, undef $eax
+
+ bb.3:
+ $eax = MOV32rr %3:gr32
+ RET 0, $eax
+...
Index: lib/Target/X86/X86TargetMachine.cpp
===================================================================
--- lib/Target/X86/X86TargetMachine.cpp
+++ lib/Target/X86/X86TargetMachine.cpp
@@ -78,6 +78,7 @@
initializeX86AvoidSFBPassPass(PR);
initializeX86SpeculativeLoadHardeningPassPass(PR);
initializeX86FlagsCopyLoweringPassPass(PR);
+ initializeX86CondBrFoldingPassPass(PR);
}
static std::unique_ptr<TargetLoweringObjectFile> createTLOF(const Triple &TT) {
Index: lib/Target/X86/X86CondBrFolding.cpp
===================================================================
--- lib/Target/X86/X86CondBrFolding.cpp
+++ lib/Target/X86/X86CondBrFolding.cpp
@@ -62,8 +62,9 @@
namespace {
class X86CondBrFoldingPass : public MachineFunctionPass {
public:
- X86CondBrFoldingPass() : MachineFunctionPass(ID) {}
-
+ X86CondBrFoldingPass() : MachineFunctionPass(ID) {
+ initializeX86CondBrFoldingPassPass(*PassRegistry::getPassRegistry());
+ }
StringRef getPassName() const override { return "X86 CondBr Folding"; }
bool runOnMachineFunction(MachineFunction &MF) override;
@@ -73,12 +74,13 @@
AU.addRequired<MachineBranchProbabilityInfo>();
}
-private:
+public:
static char ID;
};
+} // namespace
char X86CondBrFoldingPass::ID = 0;
-} // namespace
+INITIALIZE_PASS(X86CondBrFoldingPass, "X86CondBrFolding", "X86CondBrFolding", false, false)
FunctionPass *llvm::createX86CondBrFolding() {
return new X86CondBrFoldingPass();
Index: lib/Target/X86/X86.h
===================================================================
--- lib/Target/X86/X86.h
+++ lib/Target/X86/X86.h
@@ -147,6 +147,7 @@
void initializeX86ExecutionDomainFixPass(PassRegistry &);
void initializeX86FlagsCopyLoweringPassPass(PassRegistry &);
void initializeX86SpeculativeLoadHardeningPassPass(PassRegistry &);
+void initializeX86CondBrFoldingPassPass(PassRegistry &);
} // End llvm namespace
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D55412.177129.patch
Type: text/x-patch
Size: 2867 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20181207/23632664/attachment.bin>
More information about the llvm-commits
mailing list