[XRay] Fix Hexagon sled version
authorFangrui Song <i@maskray.me>
Wed, 28 Dec 2022 20:03:09 +0000 (12:03 -0800)
committerFangrui Song <i@maskray.me>
Wed, 28 Dec 2022 20:03:09 +0000 (12:03 -0800)
D113638 emitted version 0 for XRaySledEntry, which will lead to an incorrect
address computation in the runtime.

While here, improve the test.

llvm/lib/Target/Hexagon/HexagonAsmPrinter.cpp
llvm/test/CodeGen/Hexagon/xray.ll

index 27bc4bf..688fe68 100644 (file)
@@ -822,7 +822,7 @@ void HexagonAsmPrinter::EmitSled(const MachineInstr &MI, SledKind Kind) {
   emitNops(NoopsInSledCount);
 
   OutStreamer->emitLabel(PostSled);
-  recordSled(CurSled, MI, Kind, 0);
+  recordSled(CurSled, MI, Kind, 2);
 }
 
 void HexagonAsmPrinter::LowerPATCHABLE_FUNCTION_ENTER(const MachineInstr &MI) {
index b9b25b8..8f1d9b3 100644 (file)
@@ -19,11 +19,16 @@ define i32 @foo() nounwind noinline uwtable "function-instrument"="xray-always"
 ; CHECK-LABEL: .Ltmp1:
 ; CHECK:       jumpr r31
 }
-; CHECK-LABEL: xray_instr_map
-; CHECK-LABEL: .Lxray_sleds_start0:
-; CHECK:       .word {{.*}}Lxray_sled_0
-; CHECK:       .word {{.*}}Lxray_sled_1
+; CHECK:       .section xray_instr_map,"ao",@progbits,foo
+; CHECK-NEXT:  .Lxray_sleds_start0:
+; CHECK-NEXT:  .Ltmp2:
+; CHECK-NEXT:  .word .Lxray_sled_0-.Ltmp2
+; CHECK-NEXT:  .word .Lfunc_begin0-(.Ltmp2+4)
+; CHECK-NEXT:  .byte 0x00
+; CHECK-NEXT:  .byte 0x01
+; CHECK-NEXT:  .byte 0x02
+; CHECK-NEXT:  .space 5
 ; CHECK-LABEL: .Lxray_sleds_end0:
 ; CHECK-LABEL: xray_fn_idx
-; CHECK:       .word {{.*}}Lxray_sleds_start0
-; CHECK-NEXT:  .word {{.*}}Lxray_sleds_end0
+; CHECK:       .word .Lxray_sleds_start0{{$}}
+; CHECK-NEXT:  .word .Lxray_sleds_end0{{$}}