diff options
Diffstat (limited to 'test/CodeGen/CBackend/2004-11-13-FunctionPointerCast.llx')
-rw-r--r-- | test/CodeGen/CBackend/2004-11-13-FunctionPointerCast.llx | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/test/CodeGen/CBackend/2004-11-13-FunctionPointerCast.llx b/test/CodeGen/CBackend/2004-11-13-FunctionPointerCast.llx new file mode 100644 index 0000000..99bb602 --- /dev/null +++ b/test/CodeGen/CBackend/2004-11-13-FunctionPointerCast.llx @@ -0,0 +1,17 @@ +; The CBE should not emit code that casts the function pointer. This causes +; GCC to get testy and insert trap instructions instead of doing the right +; thing. :( +; RUN: llvm-upgrade < %s | llvm-as | llc -march=c + +implementation + +declare void %external(sbyte*) + +int %test(int *%X) { + %RV = call int (int*)* cast (void(sbyte*)* %external to int(int*)*)(int* %X) + ret int %RV +} + + + + |