<div dir="ltr"><div dir="ltr"><div dir="ltr">Looks like this newly added test is failing in certain configurations. Internally we see it pass in vanilla mode but fail in opt, and I see some public buildbots are broken:<div><a href="http://lab.llvm.org:8011/builders/lldb-amd64-ninja-netbsd8/builds/17493">http://lab.llvm.org:8011/builders/lldb-amd64-ninja-netbsd8/builds/17493</a><br></div><div><a href="http://lab.llvm.org:8011/builders/clang-with-lto-ubuntu/builds/11432">http://lab.llvm.org:8011/builders/clang-with-lto-ubuntu/builds/11432</a><br></div><div>I haven't yet figured out which CMake are relevant for repro though. Mind taking a look?</div></div></div></div><br><div class="gmail_quote"><div dir="ltr">On Fri, Dec 7, 2018 at 10:13 AM Craig Topper via llvm-commits <<a href="mailto:llvm-commits@lists.llvm.org">llvm-commits@lists.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Author: ctopper<br>
Date: Fri Dec  7 10:10:34 2018<br>
New Revision: 348620<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=348620&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project?rev=348620&view=rev</a><br>
Log:<br>
[X86] Initialize and Register X86CondBrFoldingPass<br>
<br>
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<br>
<br>
Patch by Jianping Chen<br>
<br>
Differential Revision: <a href="https://reviews.llvm.org/D55412" rel="noreferrer" target="_blank">https://reviews.llvm.org/D55412</a><br>
<br>
Added:<br>
    llvm/trunk/test/CodeGen/X86/test_x86condbr_globaladdr.mir<br>
Modified:<br>
    llvm/trunk/lib/Target/X86/X86.h<br>
    llvm/trunk/lib/Target/X86/X86CondBrFolding.cpp<br>
    llvm/trunk/lib/Target/X86/X86TargetMachine.cpp<br>
<br>
Modified: llvm/trunk/lib/Target/X86/X86.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86.h?rev=348620&r1=348619&r2=348620&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86.h?rev=348620&r1=348619&r2=348620&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/lib/Target/X86/X86.h (original)<br>
+++ llvm/trunk/lib/Target/X86/X86.h Fri Dec  7 10:10:34 2018<br>
@@ -143,6 +143,7 @@ void initializeWinEHStatePassPass(PassRe<br>
 void initializeX86AvoidSFBPassPass(PassRegistry &);<br>
 void initializeX86CallFrameOptimizationPass(PassRegistry &);<br>
 void initializeX86CmovConverterPassPass(PassRegistry &);<br>
+void initializeX86CondBrFoldingPassPass(PassRegistry &);<br>
 void initializeX86DomainReassignmentPass(PassRegistry &);<br>
 void initializeX86ExecutionDomainFixPass(PassRegistry &);<br>
 void initializeX86FlagsCopyLoweringPassPass(PassRegistry &);<br>
<br>
Modified: llvm/trunk/lib/Target/X86/X86CondBrFolding.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86CondBrFolding.cpp?rev=348620&r1=348619&r2=348620&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86CondBrFolding.cpp?rev=348620&r1=348619&r2=348620&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/lib/Target/X86/X86CondBrFolding.cpp (original)<br>
+++ llvm/trunk/lib/Target/X86/X86CondBrFolding.cpp Fri Dec  7 10:10:34 2018<br>
@@ -62,8 +62,9 @@ STATISTIC(NumFixedCondBrs, "Number of x8<br>
 namespace {<br>
 class X86CondBrFoldingPass : public MachineFunctionPass {<br>
 public:<br>
-  X86CondBrFoldingPass() : MachineFunctionPass(ID) {}<br>
-<br>
+  X86CondBrFoldingPass() : MachineFunctionPass(ID) {<br>
+    initializeX86CondBrFoldingPassPass(*PassRegistry::getPassRegistry());<br>
+  }<br>
   StringRef getPassName() const override { return "X86 CondBr Folding"; }<br>
<br>
   bool runOnMachineFunction(MachineFunction &MF) override;<br>
@@ -73,12 +74,13 @@ public:<br>
     AU.addRequired<MachineBranchProbabilityInfo>();<br>
   }<br>
<br>
-private:<br>
+public:<br>
   static char ID;<br>
 };<br>
+} // namespace<br>
<br>
 char X86CondBrFoldingPass::ID = 0;<br>
-} // namespace<br>
+INITIALIZE_PASS(X86CondBrFoldingPass, "X86CondBrFolding", "X86CondBrFolding", false, false)<br>
<br>
 FunctionPass *llvm::createX86CondBrFolding() {<br>
   return new X86CondBrFoldingPass();<br>
<br>
Modified: llvm/trunk/lib/Target/X86/X86TargetMachine.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86TargetMachine.cpp?rev=348620&r1=348619&r2=348620&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86TargetMachine.cpp?rev=348620&r1=348619&r2=348620&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/lib/Target/X86/X86TargetMachine.cpp (original)<br>
+++ llvm/trunk/lib/Target/X86/X86TargetMachine.cpp Fri Dec  7 10:10:34 2018<br>
@@ -78,6 +78,7 @@ extern "C" void LLVMInitializeX86Target(<br>
   initializeX86AvoidSFBPassPass(PR);<br>
   initializeX86SpeculativeLoadHardeningPassPass(PR);<br>
   initializeX86FlagsCopyLoweringPassPass(PR);<br>
+  initializeX86CondBrFoldingPassPass(PR);<br>
 }<br>
<br>
 static std::unique_ptr<TargetLoweringObjectFile> createTLOF(const Triple &TT) {<br>
<br>
Added: llvm/trunk/test/CodeGen/X86/test_x86condbr_globaladdr.mir<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/test_x86condbr_globaladdr.mir?rev=348620&view=auto" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/test_x86condbr_globaladdr.mir?rev=348620&view=auto</a><br>
==============================================================================<br>
--- llvm/trunk/test/CodeGen/X86/test_x86condbr_globaladdr.mir (added)<br>
+++ llvm/trunk/test/CodeGen/X86/test_x86condbr_globaladdr.mir Fri Dec  7 10:10:34 2018<br>
@@ -0,0 +1,30 @@<br>
+# XFAIL: *<br>
+# RUN: llc -o - %s -mtriple=i686-- -mcpu=ivybridge --run-pass X86CondBrFolding | FileCheck %s<br>
+# Test wrong assertion when meet SUB32ri with global address<br>
+# in X86CondBrFoldingiPass<br>
+--- |<br>
+  @img2buf_normal = external global i32<br>
+  define void @func() { ret void }<br>
+...<br>
+---<br>
+# CHECK: bb.0:<br>
+# CHECK: %2:gr32 = SUB32ri %1, @img2buf_normal, implicit-def $eflags<br>
+<br>
+name: func<br>
+tracksRegLiveness: true<br>
+body: |<br>
+  bb.0:<br>
+    liveins: $edx<br>
+    %1:gr32 = COPY $edx<br>
+    %2:gr32 = MOV32rm %1:gr32, 1, $noreg, 850256, $noreg<br>
+    %3:gr32 = SUB32ri %2:gr32, @img2buf_normal, implicit-def $eflags<br>
+    JE_1 %bb.2, implicit $eflags<br>
+    JMP_1 %bb.3<br>
+<br>
+  bb.2:<br>
+    RET 0, undef $eax<br>
+<br>
+  bb.3:<br>
+    $eax = MOV32rr %3:gr32<br>
+    RET 0, $eax<br>
+...<br>
<br>
<br>
_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">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/mailman/listinfo/llvm-commits</a><br>
</blockquote></div>