[SystemZ] Create brcl 0,0 instead of brcl 0,3 in EmitNop for 6 bytes.

For consistency with GCC, the target label is moved to the brcl itself
instead of the next instruction.

Review: Ulrich Weigand
This commit is contained in:
Jonas Paulsson 2019-12-30 22:14:43 +01:00
parent 1fcc9b6ff8
commit 982695c069
3 changed files with 85 additions and 72 deletions

View File

@ -545,9 +545,9 @@ static unsigned EmitNop(MCContext &OutContext, MCStreamer &OutStreamer,
else {
MCSymbol *DotSym = OutContext.createTempSymbol();
const MCSymbolRefExpr *Dot = MCSymbolRefExpr::create(DotSym, OutContext);
OutStreamer.EmitLabel(DotSym);
OutStreamer.EmitInstruction(MCInstBuilder(SystemZ::BRCLAsm)
.addImm(0).addExpr(Dot), STI);
OutStreamer.EmitLabel(DotSym);
return 6;
}
}

View File

@ -23,8 +23,8 @@ entry:
; CHECK: .quad .Ltmp1
; CHECK: .text
; CHECK: .Ltmp1:
; CHECK: brcl 0, .Ltmp2
; CHECK: .Ltmp2:
; CHECK: brcl 0, .Ltmp2
; CHECK: br %r14
}

View File

@ -11,108 +11,121 @@ entry:
; CHECK: bc 0, 0
; 6
; CHECK: brcl 0, [[LAB:.Ltmp[0-9]+]]
; CHECK-NEXT: [[LAB]]:
; CHECK: .Ltmp
; CHECK-NEXT: [[LAB:.Ltmp[0-9]+]]:
; CHECK-NEXT: brcl 0, [[LAB]]
; 8
; CHECK: brcl 0, [[LAB:.Ltmp[0-9]+]]
; CHECK-NEXT: [[LAB]]:
; CHECK: .Ltmp
; CHECK-NEXT: [[LAB:.Ltmp[0-9]+]]:
; CHECK-NEXT: brcl 0, [[LAB]]
; CHECK: bcr 0, %r0
; 10
; CHECK: brcl 0, [[LAB:.Ltmp[0-9]+]]
; CHECK-NEXT: [[LAB]]:
; CHECK: .Ltmp
; CHECK-NEXT: [[LAB:.Ltmp[0-9]+]]:
; CHECK-NEXT: brcl 0, [[LAB]]
; CHECK: bc 0, 0
; 12
; CHECK: brcl 0, [[LAB:.Ltmp[0-9]+]]
; CHECK-NEXT: [[LAB]]:
; CHECK: brcl 0, [[LAB:.Ltmp[0-9]+]]
; CHECK-NEXT: [[LAB]]:
; CHECK: .Ltmp
; CHECK-NEXT: [[LAB:.Ltmp[0-9]+]]:
; CHECK-NEXT: brcl 0, [[LAB]]
; CHECK: [[LAB:.Ltmp[0-9]+]]:
; CHECK-NEXT: brcl 0, [[LAB]]
; 14
; CHECK: brcl 0, [[LAB:.Ltmp[0-9]+]]
; CHECK-NEXT: [[LAB]]:
; CHECK: brcl 0, [[LAB:.Ltmp[0-9]+]]
; CHECK-NEXT: [[LAB]]:
; CHECK: .Ltmp
; CHECK-NEXT: [[LAB:.Ltmp[0-9]+]]:
; CHECK-NEXT: brcl 0, [[LAB]]
; CHECK: [[LAB:.Ltmp[0-9]+]]:
; CHECK-NEXT: brcl 0, [[LAB]]
; CHECK: bcr 0, %r0
; 16
; CHECK: brcl 0, [[LAB:.Ltmp[0-9]+]]
; CHECK-NEXT: [[LAB]]:
; CHECK: brcl 0, [[LAB:.Ltmp[0-9]+]]
; CHECK-NEXT: [[LAB]]:
; CHECK: .Ltmp
; CHECK-NEXT: [[LAB:.Ltmp[0-9]+]]:
; CHECK-NEXT: brcl 0, [[LAB]]
; CHECK: [[LAB:.Ltmp[0-9]+]]:
; CHECK-NEXT: brcl 0, [[LAB]]
; CHECK: bc 0, 0
; 18
; CHECK: brcl 0, [[LAB:.Ltmp[0-9]+]]
; CHECK-NEXT: [[LAB]]:
; CHECK: brcl 0, [[LAB:.Ltmp[0-9]+]]
; CHECK-NEXT: [[LAB]]:
; CHECK: brcl 0, [[LAB:.Ltmp[0-9]+]]
; CHECK-NEXT: [[LAB]]:
; CHECK: .Ltmp
; CHECK-NEXT: [[LAB:.Ltmp[0-9]+]]:
; CHECK-NEXT: brcl 0, [[LAB]]
; CHECK: [[LAB:.Ltmp[0-9]+]]:
; CHECK-NEXT: brcl 0, [[LAB]]
; CHECK: [[LAB:.Ltmp[0-9]+]]:
; CHECK-NEXT: brcl 0, [[LAB]]
; 20
; CHECK: brcl 0, [[LAB:.Ltmp[0-9]+]]
; CHECK-NEXT: [[LAB]]:
; CHECK: brcl 0, [[LAB:.Ltmp[0-9]+]]
; CHECK-NEXT: [[LAB]]:
; CHECK: brcl 0, [[LAB:.Ltmp[0-9]+]]
; CHECK-NEXT: [[LAB]]:
; CHECK: .Ltmp
; CHECK-NEXT: [[LAB:.Ltmp[0-9]+]]:
; CHECK-NEXT: brcl 0, [[LAB]]
; CHECK: [[LAB:.Ltmp[0-9]+]]:
; CHECK-NEXT: brcl 0, [[LAB]]
; CHECK: [[LAB:.Ltmp[0-9]+]]:
; CHECK-NEXT: brcl 0, [[LAB]]
; CHECK: bcr 0, %r0
; 22
; CHECK: brcl 0, [[LAB:.Ltmp[0-9]+]]
; CHECK-NEXT: [[LAB]]:
; CHECK: brcl 0, [[LAB:.Ltmp[0-9]+]]
; CHECK-NEXT: [[LAB]]:
; CHECK: brcl 0, [[LAB:.Ltmp[0-9]+]]
; CHECK-NEXT: [[LAB]]:
; CHECK: .Ltmp
; CHECK-NEXT: [[LAB:.Ltmp[0-9]+]]:
; CHECK-NEXT: brcl 0, [[LAB]]
; CHECK: [[LAB:.Ltmp[0-9]+]]:
; CHECK-NEXT: brcl 0, [[LAB]]
; CHECK: [[LAB:.Ltmp[0-9]+]]:
; CHECK-NEXT: brcl 0, [[LAB]]
; CHECK: bc 0, 0
; 24
; CHECK: brcl 0, [[LAB:.Ltmp[0-9]+]]
; CHECK-NEXT: [[LAB]]:
; CHECK: brcl 0, [[LAB:.Ltmp[0-9]+]]
; CHECK-NEXT: [[LAB]]:
; CHECK: brcl 0, [[LAB:.Ltmp[0-9]+]]
; CHECK-NEXT: [[LAB]]:
; CHECK: brcl 0, [[LAB:.Ltmp[0-9]+]]
; CHECK-NEXT: [[LAB]]:
; CHECK: .Ltmp
; CHECK-NEXT: [[LAB:.Ltmp[0-9]+]]:
; CHECK-NEXT: brcl 0, [[LAB]]
; CHECK: [[LAB:.Ltmp[0-9]+]]:
; CHECK-NEXT: brcl 0, [[LAB]]
; CHECK: [[LAB:.Ltmp[0-9]+]]:
; CHECK-NEXT: brcl 0, [[LAB]]
; CHECK: [[LAB:.Ltmp[0-9]+]]:
; CHECK-NEXT: brcl 0, [[LAB]]
; 26
; CHECK: brcl 0, [[LAB:.Ltmp[0-9]+]]
; CHECK-NEXT: [[LAB]]:
; CHECK: brcl 0, [[LAB:.Ltmp[0-9]+]]
; CHECK-NEXT: [[LAB]]:
; CHECK: brcl 0, [[LAB:.Ltmp[0-9]+]]
; CHECK-NEXT: [[LAB]]:
; CHECK: brcl 0, [[LAB:.Ltmp[0-9]+]]
; CHECK-NEXT: [[LAB]]:
; CHECK: .Ltmp
; CHECK-NEXT: [[LAB:.Ltmp[0-9]+]]:
; CHECK-NEXT: brcl 0, [[LAB]]
; CHECK: [[LAB:.Ltmp[0-9]+]]:
; CHECK-NEXT: brcl 0, [[LAB]]
; CHECK: [[LAB:.Ltmp[0-9]+]]:
; CHECK-NEXT: brcl 0, [[LAB]]
; CHECK: [[LAB:.Ltmp[0-9]+]]:
; CHECK-NEXT: brcl 0, [[LAB]]
; CHECK: bcr 0, %r0
; 28
; CHECK: brcl 0, [[LAB:.Ltmp[0-9]+]]
; CHECK-NEXT: [[LAB]]:
; CHECK: brcl 0, [[LAB:.Ltmp[0-9]+]]
; CHECK-NEXT: [[LAB]]:
; CHECK: brcl 0, [[LAB:.Ltmp[0-9]+]]
; CHECK-NEXT: [[LAB]]:
; CHECK: brcl 0, [[LAB:.Ltmp[0-9]+]]
; CHECK-NEXT: [[LAB]]:
; CHECK: .Ltmp
; CHECK-NEXT: [[LAB:.Ltmp[0-9]+]]:
; CHECK-NEXT: brcl 0, [[LAB]]
; CHECK: [[LAB:.Ltmp[0-9]+]]:
; CHECK-NEXT: brcl 0, [[LAB]]
; CHECK: [[LAB:.Ltmp[0-9]+]]:
; CHECK-NEXT: brcl 0, [[LAB]]
; CHECK: [[LAB:.Ltmp[0-9]+]]:
; CHECK-NEXT: brcl 0, [[LAB]]
; CHECK: bc 0, 0
; 30
; CHECK: brcl 0, [[LAB:.Ltmp[0-9]+]]
; CHECK-NEXT: [[LAB]]:
; CHECK: brcl 0, [[LAB:.Ltmp[0-9]+]]
; CHECK-NEXT: [[LAB]]:
; CHECK: brcl 0, [[LAB:.Ltmp[0-9]+]]
; CHECK-NEXT: [[LAB]]:
; CHECK: brcl 0, [[LAB:.Ltmp[0-9]+]]
; CHECK-NEXT: [[LAB]]:
; CHECK: brcl 0, [[LAB:.Ltmp[0-9]+]]
; CHECK-NEXT: [[LAB]]:
; CHECK: .Ltmp
; CHECK-NEXT: [[LAB:.Ltmp[0-9]+]]:
; CHECK-NEXT: brcl 0, [[LAB]]
; CHECK: [[LAB:.Ltmp[0-9]+]]:
; CHECK-NEXT: brcl 0, [[LAB]]
; CHECK: [[LAB:.Ltmp[0-9]+]]:
; CHECK-NEXT: brcl 0, [[LAB]]
; CHECK: [[LAB:.Ltmp[0-9]+]]:
; CHECK-NEXT: brcl 0, [[LAB]]
; CHECK: [[LAB:.Ltmp[0-9]+]]:
; CHECK-NEXT: brcl 0, [[LAB]]
tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 0, i32 0)
tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 2, i32 2)