Chris Lattner | b83530f | 2004-02-15 22:14:46 +0000 | [diff] [blame] | 1 | ; The intrinsic lowering pass was lowering intrinsics like llvm.memcpy to |
| 2 | ; explicitly specified prototypes, inserting a new function if the old one |
| 3 | ; didn't exist. This caused there to be two external memcpy functions in |
| 4 | ; this testcase for example, which caused the CBE to mangle one, screwing |
| 5 | ; everything up. :( Test that this does not happen anymore. |
| 6 | ; |
Dan Gohman | fce288f | 2009-09-09 00:09:15 +0000 | [diff] [blame] | 7 | ; RUN: llc < %s -march=c | not grep _memcpy |
Chris Lattner | b83530f | 2004-02-15 22:14:46 +0000 | [diff] [blame] | 8 | |
Tanya Lattner | 53a66d1 | 2008-02-19 01:41:04 +0000 | [diff] [blame] | 9 | declare void @llvm.memcpy.i32(i8*, i8*, i32, i32) |
Chris Lattner | b83530f | 2004-02-15 22:14:46 +0000 | [diff] [blame] | 10 | |
Tanya Lattner | 53a66d1 | 2008-02-19 01:41:04 +0000 | [diff] [blame] | 11 | declare float* @memcpy(i32*, i32, i32) |
| 12 | |
| 13 | define i32 @test(i8* %A, i8* %B, i32* %C) { |
| 14 | call float* @memcpy( i32* %C, i32 4, i32 17 ) ; <float*>:1 [#uses=0] |
| 15 | call void @llvm.memcpy.i32( i8* %A, i8* %B, i32 123, i32 14 ) |
| 16 | ret i32 7 |
Chris Lattner | b83530f | 2004-02-15 22:14:46 +0000 | [diff] [blame] | 17 | } |
Tanya Lattner | 53a66d1 | 2008-02-19 01:41:04 +0000 | [diff] [blame] | 18 | |