Index: llvm/trunk/lib/CodeGen/MIRParser/MIParser.cpp =================================================================== --- llvm/trunk/lib/CodeGen/MIRParser/MIParser.cpp +++ llvm/trunk/lib/CodeGen/MIRParser/MIParser.cpp @@ -488,7 +488,8 @@ lex(); unsigned Weight = 0; if (consumeIfPresent(MIToken::lparen)) { - if (Token.isNot(MIToken::IntegerLiteral)) + if (Token.isNot(MIToken::IntegerLiteral) && + Token.isNot(MIToken::HexLiteral)) return error("expected an integer literal after '('"); if (getUnsigned(Weight)) return true; Index: llvm/trunk/lib/CodeGen/MIRPrinter.cpp =================================================================== --- llvm/trunk/lib/CodeGen/MIRPrinter.cpp +++ llvm/trunk/lib/CodeGen/MIRPrinter.cpp @@ -32,6 +32,7 @@ #include "llvm/IR/Module.h" #include "llvm/IR/ModuleSlotTracker.h" #include "llvm/MC/MCSymbol.h" +#include "llvm/Support/Format.h" #include "llvm/Support/MemoryBuffer.h" #include "llvm/Support/YAMLTraits.h" #include "llvm/Support/raw_ostream.h" @@ -481,7 +482,9 @@ OS << ", "; printMBBReference(**I); if (MBB.hasSuccessorProbabilities()) - OS << '(' << MBB.getSuccProbability(I) << ')'; + OS << '(' + << format("0x%08" PRIx32, MBB.getSuccProbability(I).getNumerator()) + << ')'; } OS << "\n"; HasLineAttributes = true; Index: llvm/trunk/test/CodeGen/MIR/Generic/branch-probabilities.ll =================================================================== --- llvm/trunk/test/CodeGen/MIR/Generic/branch-probabilities.ll +++ llvm/trunk/test/CodeGen/MIR/Generic/branch-probabilities.ll @@ -0,0 +1,26 @@ +; RUN: llc -stop-after machine-sink %s -o %t.mir +; RUN: FileCheck %s < %t.mir +; RUN: llc %t.mir -run-pass machine-sink +; Check that branch probabilities are printed in a format that can then be parsed. + +declare void @foo() +declare void @bar() + +define void @test(i1 %c) { +; CHECK-LABEL: name: test +entry: + br i1 %c, label %then, label %else + +then: + call void @foo() + br label %end +; CHECK: successors: %{{[a-z0-9\-\.]+}}({{0x[0-9a-f]+}}), %{{[a-z0-9\-\.]+}}({{0x[0-9a-f]+}}) + +else: + call void @bar() + br label %end +; CHECK: successors: %{{[a-z0-9\-\.]+}}({{0x[0-9a-f]+}}) + +end: + ret void +} Index: llvm/trunk/test/CodeGen/MIR/X86/newline-handling.mir =================================================================== --- llvm/trunk/test/CodeGen/MIR/X86/newline-handling.mir +++ llvm/trunk/test/CodeGen/MIR/X86/newline-handling.mir @@ -35,7 +35,7 @@ # CHECK-LABEL: name: foo # CHECK: body: | # CHECK-NEXT: bb.0.entry: -# CHECK-NEXT: successors: %bb.1.less(0x40000000 / 0x80000000 = 50.00%), %bb.2.exit(0x40000000 / 0x80000000 = 50.00%) +# CHECK-NEXT: successors: %bb.1.less(0x40000000), %bb.2.exit(0x40000000) # CHECK-NEXT: liveins: %edi # CHECK: CMP32ri8 %edi, 10, implicit-def %eflags # CHECK-NEXT: JG_1 %bb.2.exit, implicit killed %eflags @@ -79,7 +79,7 @@ # CHECK-LABEL: name: bar # CHECK: body: | # CHECK-NEXT: bb.0.entry: -# CHECK-NEXT: successors: %bb.1.less(0x40000000 / 0x80000000 = 50.00%), %bb.2.exit(0x40000000 / 0x80000000 = 50.00%) +# CHECK-NEXT: successors: %bb.1.less(0x40000000), %bb.2.exit(0x40000000) # CHECK-NEXT: liveins: %edi # CHECK: CMP32ri8 %edi, 10, implicit-def %eflags # CHECK-NEXT: JG_1 %bb.2.exit, implicit killed %eflags Index: llvm/trunk/test/CodeGen/MIR/X86/successor-basic-blocks-weights.mir =================================================================== --- llvm/trunk/test/CodeGen/MIR/X86/successor-basic-blocks-weights.mir +++ llvm/trunk/test/CodeGen/MIR/X86/successor-basic-blocks-weights.mir @@ -21,7 +21,7 @@ name: foo body: | ; CHECK-LABEL: bb.0.entry: - ; CHECK: successors: %bb.1.less({{[0-9a-fx/= ]+}}33.00%), %bb.2.exit({{[0-9a-fx/= ]+}}67.00%) + ; CHECK: successors: %bb.1.less(0x2a3d70a4), %bb.2.exit(0x55c28f5c) ; CHECK-LABEL: bb.1.less: bb.0.entry: successors: %bb.1.less (33), %bb.2.exit(67) Index: llvm/trunk/test/CodeGen/MIR/X86/successor-basic-blocks.mir =================================================================== --- llvm/trunk/test/CodeGen/MIR/X86/successor-basic-blocks.mir +++ llvm/trunk/test/CodeGen/MIR/X86/successor-basic-blocks.mir @@ -32,7 +32,7 @@ name: foo body: | ; CHECK-LABEL: bb.0.entry: - ; CHECK: successors: %bb.1.less(0x40000000 / 0x80000000 = 50.00%), %bb.2.exit(0x40000000 / 0x80000000 = 50.00%) + ; CHECK: successors: %bb.1.less(0x40000000), %bb.2.exit(0x40000000) ; CHECK-LABEL: bb.1.less: bb.0.entry: successors: %bb.1.less, %bb.2.exit @@ -58,7 +58,7 @@ ; Verify that we can have multiple lists of successors that will be merged ; into one. ; CHECK-LABEL: bb.0.entry: - ; CHECK: successors: %bb.1(0x80000000 / 0x80000000 = 100.00%), %bb.2(0x00000000 / 0x80000000 = 0.00%) + ; CHECK: successors: %bb.1(0x80000000), %bb.2(0x00000000) bb.0.entry: liveins: %edi successors: %bb.1