@@ -37,10 +37,26 @@ function ceilfloor(x::Float64)
3737end
3838@test ceilfloor (7.4 ) == 8.0
3939
40- # support for calling external functions
41- begin
42- f () = ccall (" time" , llvmcall, Cvoid, (Ptr{Cvoid},), C_NULL )
43- @test_throws ErrorException f ()
40+ let err = ErrorException (" llvmcall only supports intrinsic calls" )
41+ # support for calling external functions
42+ @test_throws err @eval ccall (" time" , llvmcall, Cvoid, (Ptr{Cvoid},), C_NULL )
4443 g () = ccall (" extern time" , llvmcall, Cvoid, (Ptr{Cvoid},), C_NULL )
4544 g ()
45+ @test_throws err @eval ccall (" extern llvm.floor" , llvmcall, Float64, (Float64,), 0.0 )
46+
47+ # support for mangling
48+ @test (@eval ccall (" llvm.floor.f64" , llvmcall, Float64, (Float64,), 0.0 )) === 0.0
49+ @test (@eval ccall (" llvm.floor" , llvmcall, Float64, (Float64,), 0.0 ),
50+ ccall (" llvm.floor" , llvmcall, Float32, (Float32,), 0.0 )) === (0.0 , 0.0f0 )
51+ @test_throws err @eval ccall (" llvm.floor.f64" , llvmcall, Float32, (Float64,), 0.0 )
52+ @test_throws err @eval ccall (" llvm.floor.f64" , llvmcall, Float32, (Float32,), 0.0f0 )
53+ @test_throws err @eval ccall (" llvm.floor.f64" , llvmcall, Float64, (Float32,), 0.0f0 )
54+ @test_throws err @eval ccall (" llvm.floor.f64" , llvmcall, Float64, (Int,), 0 )
55+ @test_throws err @eval ccall (" llvm.floor.f64" , llvmcall, Int, (Int,), 0 )
56+ @test_throws err @eval ccall (" llvm.floor" , llvmcall, Float64, (Float32,), 0.0f0 )
57+ @test_throws err @eval ccall (" llvm.floor" , llvmcall, Float64, (Int,), 0 )
58+ @test_throws err @eval ccall (" llvm.floor" , llvmcall, Int, (Int,), 0 )
59+
60+ @test_throws err (@eval ccall (" llvm.floor.f64" , llvmcall, Float64, (Float64, Float64... ,), 0.0 )) === 0.0
61+ @test_throws err (@eval ccall (" llvm.floor" , llvmcall, Float64, (Float64, Float64... ,), 0.0 )) === 0.0
4662end
0 commit comments