blob: d05b70d0c30be904b5f86a2a930a232c7728a03d [file] [log] [blame]
Reid Spencer69ccadd2006-12-02 04:23:10 +00001; RUN: llvm-upgrade < %s | llvm-as | llvm-dis > %t1.ll
Tanya Lattner3f7706b2004-11-07 06:08:43 +00002; RUN: llvm-as %t1.ll -o - | llvm-dis > %t2.ll
3; RUN: diff %t1.ll %t2.ll
4
Vikram S. Adve71de0ce2001-07-21 12:46:12 +00005%inners = type {float, {ubyte } }
6%struct = type { int , {float, {ubyte } } , ulong }
7
8implementation
9
Chris Lattner740d3cd2002-05-22 22:28:27 +000010int %testfunction(int %i0, int %j0)
Vikram S. Adve71de0ce2001-07-21 12:46:12 +000011begin
Chris Lattnerf493a562001-12-14 16:46:53 +000012 alloca ubyte, uint 5
Vikram S. Adve71de0ce2001-07-21 12:46:12 +000013 %ptr = alloca int ; yields {int*}:ptr
14 store int 3, int* %ptr ; yields {void}
15 %val = load int* %ptr ; yields {int}:val = int %3
16
17 %sptr = alloca %struct ; yields {%struct*}:sptr
Reid Spencere5d4efa2006-11-23 15:14:52 +000018 %nsptr = getelementptr %struct * %sptr, long 0, uint 1 ; yields {inners*}:nsptr
19 %ubsptr = getelementptr %inners * %nsptr, long 0, uint 1 ; yields {{ubyte}*}:ubsptr
20 %idx = getelementptr {ubyte} * %ubsptr, long 0, uint 0
Chris Lattner6458c312002-08-22 16:04:03 +000021 store ubyte 4, ubyte* %idx
Vikram S. Adve71de0ce2001-07-21 12:46:12 +000022
Reid Spencere5d4efa2006-11-23 15:14:52 +000023 %fptr = getelementptr %struct * %sptr, long 0, uint 1, uint 0 ; yields {float*}:fptr
Vikram S. Adve71de0ce2001-07-21 12:46:12 +000024 store float 4.0, float * %fptr
25
26 ret int 3
27end
28