aboutsummaryrefslogtreecommitdiffstats
path: root/test/CodeGen/Generic/2010-11-11-ReturnBigBuffer.ll
blob: bf5939dc3c9892d952511304df4a70983e54d004 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
; RUN: llc < %s
; PR8287: SelectionDag scheduling time. 
; Yes, some front end really produces this code. But that is a
; separate bug. This is more an example than a real test, because I
; don't know how give llvm-lit a timeout.

define void @foo([4096 x i8]* %arg1, [4096 x i8]* %arg2) {
  %buffer = alloca [4096 x i8]
  %pbuf = alloca [4096 x i8]*
  store [4096 x i8]* %buffer, [4096 x i8]** %pbuf

  %parg1 = alloca [4096 x i8]*
  store [4096 x i8]* %arg1, [4096 x i8]** %parg1

  %parg2 = alloca [4096 x i8]*
  store [4096 x i8]* %arg2, [4096 x i8]** %parg2

  ; The original test case has intermediate blocks.
  ; Presumably something fills in "buffer".

  %bufferCopy1 = load [4096 x i8]** %pbuf
  %dataCopy1 = load [4096 x i8]* %bufferCopy1
  %arg1Copy = load [4096 x i8]** %parg1
  store [4096 x i8] %dataCopy1, [4096 x i8]* %arg1Copy

  %bufferCopy2 = load [4096 x i8]** %pbuf
  %dataCopy2 = load [4096 x i8]* %bufferCopy2
  %arg2Copy = load [4096 x i8]** %parg2
  store [4096 x i8] %dataCopy2, [4096 x i8]* %arg2Copy

  ret void
}