llvm/llvm/test/Linker/nofpclass.ll

; RUN: llvm-link %s %S/Inputs/nofpclass.ll -S -o - | FileCheck -check-prefix=ORDER1 %s
; RUN: llvm-link %S/Inputs/nofpclass.ll %s -S -o - | FileCheck -check-prefix=ORDER2 %s

; Make sure nofpclass is dropped if the function was declared as
; nofpclass, but not defined with nofpclass.

; ORDER1: define float @caller(float %arg) {
; ORDER1-NEXT: %result = call float @declared_as_nonan(float %arg)
; ORDER1-NEXT: ret float %result

; ORDER1: define float @declared_as_nonan(float %arg) {
; ORDER1-NEXT: %add = fadd float %arg, 1.000000e+00
; ORDER1-NEXT: ret float %add


; ORDER2: define float @declared_as_nonan(float %arg) {
; ORDER2-NEXT: %add = fadd float %arg, 1.000000e+00
; ORDER2-NEXT: ret float %add

; ORDER2: define float @caller(float %arg) {
; ORDER2-NEXT: %result = call float @declared_as_nonan(float %arg)
; ORDER2-NEXT: ret float %result


declare nofpclass(nan) float @declared_as_nonan(float nofpclass(nan))

define float @caller(float %arg) {
  %result = call float @declared_as_nonan(float %arg)
  ret float %result
}