@@ -37,10 +37,26 @@ function ceilfloor(x::Float64)
37
37
end
38
38
@test ceilfloor (7.4 ) == 8.0
39
39
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 )
44
43
g () = ccall (" extern time" , llvmcall, Cvoid, (Ptr{Cvoid},), C_NULL )
45
44
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
46
62
end
0 commit comments