diff options
Diffstat (limited to 'test/CodeGen/CBackend/2004-02-15-PreexistingExternals.ll')
-rw-r--r-- | test/CodeGen/CBackend/2004-02-15-PreexistingExternals.ll | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/test/CodeGen/CBackend/2004-02-15-PreexistingExternals.ll b/test/CodeGen/CBackend/2004-02-15-PreexistingExternals.ll new file mode 100644 index 000000000000..1629debc58fb --- /dev/null +++ b/test/CodeGen/CBackend/2004-02-15-PreexistingExternals.ll @@ -0,0 +1,18 @@ +; The intrinsic lowering pass was lowering intrinsics like llvm.memcpy to +; explicitly specified prototypes, inserting a new function if the old one +; didn't exist. This caused there to be two external memcpy functions in +; this testcase for example, which caused the CBE to mangle one, screwing +; everything up. :( Test that this does not happen anymore. +; +; RUN: llvm-as < %s | llc -march=c | not grep _memcpy + +declare void @llvm.memcpy.i32(i8*, i8*, i32, i32) + +declare float* @memcpy(i32*, i32, i32) + +define i32 @test(i8* %A, i8* %B, i32* %C) { + call float* @memcpy( i32* %C, i32 4, i32 17 ) ; <float*>:1 [#uses=0] + call void @llvm.memcpy.i32( i8* %A, i8* %B, i32 123, i32 14 ) + ret i32 7 +} + |