aboutsummaryrefslogtreecommitdiffhomepage
path: root/interp/testdata/alloc.ll
blob: 28b0c84e44882895f3cbb6b039e7601c30cc80e4 (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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
target datalayout = "e-m:e-p:32:32-i64:64-n32:64-S128"
target triple = "wasm32--wasi"

@"runtime/gc.layout:62-2000000000000001" = linkonce_odr unnamed_addr constant { i32, [8 x i8] } { i32 62, [8 x i8] c"\01\00\00\00\00\00\00 " }
@pointerFree12 = global i8* null
@pointerFree7 = global i8* null
@pointerFree3 = global i8* null
@pointerFree0 = global i8* null
@layout1 = global i8* null
@layout2 = global i8* null
@layout3 = global i8* null
@layout4 = global i8* null
@bigobj1 = global i8* null

declare i8* @runtime.alloc(i32, i8*) unnamed_addr

define void @runtime.initAll() unnamed_addr {
  call void @main.init()
  ret void
}

define internal void @main.init() unnamed_addr {
  ; Object that's word-aligned.
  %pointerFree12 = call i8* @runtime.alloc(i32 12, i8* inttoptr (i32 3 to i8*))
  store i8* %pointerFree12, i8** @pointerFree12
  ; Object larger than a word but not word-aligned.
  %pointerFree7 = call i8* @runtime.alloc(i32 7, i8* inttoptr (i32 3 to i8*))
  store i8* %pointerFree7, i8** @pointerFree7
  ; Object smaller than a word (and of course not word-aligned).
  %pointerFree3 = call i8* @runtime.alloc(i32 3, i8* inttoptr (i32 3 to i8*))
  store i8* %pointerFree3, i8** @pointerFree3
  ; Zero-sized object.
  %pointerFree0 = call i8* @runtime.alloc(i32 0, i8* inttoptr (i32 3 to i8*))
  store i8* %pointerFree0, i8** @pointerFree0

  ; Object made out of 3 pointers.
  %layout1 = call i8* @runtime.alloc(i32 12, i8* inttoptr (i32 67 to i8*))
  store i8* %layout1, i8** @layout1
  ; Array (or slice) of 5 slices.
  %layout2 = call i8* @runtime.alloc(i32 60, i8* inttoptr (i32 71 to i8*))
  store i8* %layout2, i8** @layout2
  ; Oddly shaped object, using all bits in the layout integer.
  %layout3 = call i8* @runtime.alloc(i32 104, i8* inttoptr (i32 2467830261 to i8*))
  store i8* %layout3, i8** @layout3
  ; ...repeated.
  %layout4 = call i8* @runtime.alloc(i32 312, i8* inttoptr (i32 2467830261 to i8*))
  store i8* %layout4, i8** @layout4

  ; Large object that needs to be stored in a separate global.
  %bigobj1 = call i8* @runtime.alloc(i32 248, i8* bitcast ({ i32, [8 x i8] }* @"runtime/gc.layout:62-2000000000000001" to i8*))
  store i8* %bigobj1, i8** @bigobj1
  ret void
}