# Check that --print-mem-data option works properly in llvm-bolt

# RUN: split-file %s %t
# RUN: %clang %cflags -fPIC -pie %t/main.s -o %t.exe -nostdlib -Wl,-q
# RUN: llvm-bolt %t.exe -o %t.bolt --print-mem-data=true --print-cfg \
# RUN:   --data %t/fdata | FileCheck %s -check-prefix=CHECK-PRINT
# RUN: llvm-bolt %t.exe -o %t.bolt --print-cfg \
# RUN:   --data %t/fdata | FileCheck %s -check-prefix=CHECK-DEFAULT

# CHECK-PRINT: ldr	w2, [x1], #0x4 # MemoryAccessProfile: 7 total counts :
# CHECK-PRINT-NEXT: { 0x123: 1 },
# CHECK-PRINT-NEXT: { 0x456: 2 },
# CHECK-PRINT-NEXT: { 0xabc: 4 }
# CHECK-DEFAULT-NOT: MemoryAccessProfile

#--- main.s
  .text
  .align 4
  .global main
  .type	main, %function
main:
  sub sp, sp, #48
  add x1, sp, 8
  add x3, sp, 48
  mov w0, 0
.L2:
  ldr w2, [x1], 4
  add w0, w0, w2
  cmp x1, x3
  bne .L2
  add sp, sp, 48
  ret
  .size main, .-main

# The three memory access data generated by the load at
# offset 0x10 in the main.
#--- fdata
4 main 10 4 otherSym 123 1
4 main 10 4 otherSym 456 2
4 main 10 4 otherSym abc 4
