# RUN: not llvm-mc --filetype=obj --triple=loongarch64 --mattr=-relax %s -o /dev/null 2>&1 | FileCheck %s --check-prefixes=ERR,NORELAX --implicit-check-not=error:
# RUN: not llvm-mc --filetype=obj --triple=loongarch64 --mattr=+relax %s -o /dev/null 2>&1 | FileCheck %s --check-prefixes=ERR,RELAX --implicit-check-not=error:

a:
  nop
b:
  la.pcrel $t0, a
c:
  nop
d:

.data
## Positive subsection numbers
## With relaxation, report an error as c-b is not an assemble-time constant.
# RELAX: :[[#@LINE+1]]:14: error: cannot evaluate subsection number
.subsection c-b
# RELAX: :[[#@LINE+1]]:14: error: cannot evaluate subsection number
.subsection d-b
# RELAX: :[[#@LINE+1]]:14: error: cannot evaluate subsection number
.subsection c-a

.subsection b-a
.subsection d-c

## Negative subsection numbers
# NORELAX: :[[#@LINE+2]]:14: error: subsection number -8 is not within [0,2147483647]
# RELAX:   :[[#@LINE+1]]:14: error: cannot evaluate subsection number
.subsection b-c
# NORELAX: :[[#@LINE+2]]:14: error: subsection number -12 is not within [0,2147483647]
# RELAX:   :[[#@LINE+1]]:14: error: cannot evaluate subsection number
.subsection b-d
# NORELAX: :[[#@LINE+2]]:14: error: subsection number -12 is not within [0,2147483647]
# RELAX:   :[[#@LINE+1]]:14: error: cannot evaluate subsection number
.subsection a-c
# ERR:     :[[#@LINE+1]]:14: error: subsection number -4 is not within [0,2147483647]
.subsection a-b
# ERR:     :[[#@LINE+1]]:14: error: subsection number -4 is not within [0,2147483647]
.subsection c-d
