llvm/llvm/test/MC/MachO/lto-set-conditional.s

# RUN: llvm-mc -filetype=obj -triple i386-apple-darwin9 < %s | llvm-readobj --symbols - | FileCheck %s
# RUN: not llvm-mc -filetype=obj -triple i386-apple-darwin9 --defsym ERR=1 %s 2>&1 |\
# RUN:         FileCheck %s --check-prefix=ERR

.byte 0

.lto_set_conditional b, a
.lto_set_conditional d, a
.lto_set_conditional c, b
.lto_set_conditional e, n

# CHECK:      Symbol {
# CHECK:        Name: a
# CHECK:        Flags [
# CHECK-NEXT:     NoDeadStrip
# CHECK:        Value: 0x1
a:
.byte 0
.no_dead_strip a

# Verify that pending conditional symbols are emitted next

# CHECK:      Symbol {
# CHECK-NEXT:   Name: b
# CHECK:        Flags [
# CHECK-NEXT:     NoDeadStrip
# CHECK:        Value: 0x1
# CHECK:      Symbol {
# CHECK-NEXT:   Name: c
# CHECK:        Flags [
# CHECK-NEXT:     NoDeadStrip
# CHECK:        Value: 0x1
# CHECK:      Symbol {
# CHECK-NEXT:   Name: d
# CHECK:        Flags [
# CHECK-NEXT:     NoDeadStrip
# CHECK:        Value: 0x1

# CHECK-NOT:    Name: e

# Remaining conditional symbols are emitted immediately

# CHECK:      Symbol {
# CHECK-NEXT:   Name: f
# CHECK:        Flags [
# CHECK-NEXT:     NoDeadStrip
# CHECK:        Value: 0x1
.lto_set_conditional f, a

# CHECK:      Symbol {
# CHECK-NEXT:   Name: g
# CHECK:        Flags [
# CHECK-NEXT:     NoDeadStrip
# CHECK:        Value: 0x1
.lto_set_conditional g, b

# CHECK:      Symbol {
# CHECK-NEXT:   Name: m
# CHECK:        Flags [
# CHECK-NOT :     NoDeadStrip
# CHECK:        Value: 0x2
m:

# CHECK:      Symbol {
# CHECK-NEXT:   Name: h
# CHECK:        Flags [
# CHECK-NOT :     NoDeadStrip
# CHECK:        Value: 0x2
.lto_set_conditional h, m

.ifdef ERR
.text
# ERR: {{.*}}.s:[[#@LINE+1]]:25: error: expected identifier
.lto_set_conditional i, ERR
.endif