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 | ; |
| 7 | ; RUN: llvm-as < %s | llc -march=c | not grep _memcpy |
| 8 | |
| 9 | declare void %llvm.memcpy(sbyte*, sbyte*, uint,uint) |
| 10 | declare float* %memcpy(int*, uint,int) |
| 11 | |
| 12 | int %test(sbyte *%A, sbyte* %B, int* %C) { |
| 13 | call float* %memcpy(int* %C, uint 4, int 17) |
| 14 | call void %llvm.memcpy(sbyte* %A, sbyte* %B, uint 123, uint 14) |
| 15 | ret int 7 |
| 16 | } |