# This test is to verify that BOLT won't take a label pointing to constant
# island as a secondary entry point (function `_start` doesn't have ELF size
# set originally) and the function won't otherwise be mistaken as non-simple.

# RUN: %clang %cflags -pie %s -o %t.so -Wl,-q -Wl,--init=_foo -Wl,--fini=_foo
# RUN: llvm-bolt %t.so -o %t.bolt.so --print-cfg 2>&1 | FileCheck %s
# CHECK-NOT: BOLT-WARNING: reference in the middle of instruction detected \
# CHECK-NOT:   function _start at offset 0x{{[0-9a-f]+}}
# CHECK: Binary Function "_start" after building cfg

  .text

  .global _foo
  .type _foo, %function
_foo:
  ret

  .global _start
  .type _start, %function
_start:
  j _foo

  .balign 16
_random_consts:
  .long 0x12345678
  .long 0x90abcdef

  .global _bar
  .type _bar, %function
_bar:
  ret

  # Dummy relocation to force relocation mode
  .reloc 0, R_RISCV_NONE
