author | Jan Vrany <jan.vrany@fit.cvut.cz> |
Tue, 30 Aug 2016 16:57:29 +0100 | |
changeset 78 | 7a4c769a9fea |
parent 62 | 2936ec426df6 |
permissions | -rw-r--r-- |
14
c7dea3fcc5a7
Added short README, license.txt and updated copyright information
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
13
diff
changeset
|
1 |
" |
c7dea3fcc5a7
Added short README, license.txt and updated copyright information
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
13
diff
changeset
|
2 |
Copyright (C) 2015-now Jan Vrany |
c7dea3fcc5a7
Added short README, license.txt and updated copyright information
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
13
diff
changeset
|
3 |
|
c7dea3fcc5a7
Added short README, license.txt and updated copyright information
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
13
diff
changeset
|
4 |
This code is not an open-source (yet). You may use this code |
c7dea3fcc5a7
Added short README, license.txt and updated copyright information
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
13
diff
changeset
|
5 |
for your own experiments and projects, given that: |
c7dea3fcc5a7
Added short README, license.txt and updated copyright information
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
13
diff
changeset
|
6 |
|
c7dea3fcc5a7
Added short README, license.txt and updated copyright information
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
13
diff
changeset
|
7 |
* all modification to the code will be sent to the |
c7dea3fcc5a7
Added short README, license.txt and updated copyright information
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
13
diff
changeset
|
8 |
original author for inclusion in future releases |
c7dea3fcc5a7
Added short README, license.txt and updated copyright information
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
13
diff
changeset
|
9 |
* this is not used in any commercial software |
c7dea3fcc5a7
Added short README, license.txt and updated copyright information
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
13
diff
changeset
|
10 |
|
c7dea3fcc5a7
Added short README, license.txt and updated copyright information
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
13
diff
changeset
|
11 |
This license is provisional and may (will) change in |
c7dea3fcc5a7
Added short README, license.txt and updated copyright information
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
13
diff
changeset
|
12 |
a future. |
c7dea3fcc5a7
Added short README, license.txt and updated copyright information
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
13
diff
changeset
|
13 |
" |
12
f98e97fd02ef
Package renamed from jv:libllvms to jv:llvm_s
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
5
diff
changeset
|
14 |
"{ Package: 'jv:llvm_s' }" |
0 | 15 |
|
16 |
"{ NameSpace: Smalltalk }" |
|
17 |
||
1
e3dcb6272f0b
Introduced abstract superclasses LLVMObject and LLVMDisposableObject
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
0
diff
changeset
|
18 |
LLVMObject subclass:#LLVMBasicBlock |
22
789a35bd30ac
Added example for compiling conditional. Added convenience API to simply code generation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
14
diff
changeset
|
19 |
instanceVariableNames:'function' |
0 | 20 |
classVariableNames:'' |
21 |
poolDictionaries:'' |
|
13
fa967c0e1827
Renamed class categories to begin with LLVM-S
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
12
diff
changeset
|
22 |
category:'LLVM-S-Core' |
0 | 23 |
! |
24 |
||
14
c7dea3fcc5a7
Added short README, license.txt and updated copyright information
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
13
diff
changeset
|
25 |
!LLVMBasicBlock class methodsFor:'documentation'! |
c7dea3fcc5a7
Added short README, license.txt and updated copyright information
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
13
diff
changeset
|
26 |
|
c7dea3fcc5a7
Added short README, license.txt and updated copyright information
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
13
diff
changeset
|
27 |
copyright |
c7dea3fcc5a7
Added short README, license.txt and updated copyright information
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
13
diff
changeset
|
28 |
" |
c7dea3fcc5a7
Added short README, license.txt and updated copyright information
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
13
diff
changeset
|
29 |
Copyright (C) 2015-now Jan Vrany |
c7dea3fcc5a7
Added short README, license.txt and updated copyright information
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
13
diff
changeset
|
30 |
|
c7dea3fcc5a7
Added short README, license.txt and updated copyright information
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
13
diff
changeset
|
31 |
This code is not an open-source (yet). You may use this code |
c7dea3fcc5a7
Added short README, license.txt and updated copyright information
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
13
diff
changeset
|
32 |
for your own experiments and projects, given that: |
c7dea3fcc5a7
Added short README, license.txt and updated copyright information
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
13
diff
changeset
|
33 |
|
c7dea3fcc5a7
Added short README, license.txt and updated copyright information
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
13
diff
changeset
|
34 |
* all modification to the code will be sent to the |
c7dea3fcc5a7
Added short README, license.txt and updated copyright information
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
13
diff
changeset
|
35 |
original author for inclusion in future releases |
c7dea3fcc5a7
Added short README, license.txt and updated copyright information
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
13
diff
changeset
|
36 |
* this is not used in any commercial software |
c7dea3fcc5a7
Added short README, license.txt and updated copyright information
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
13
diff
changeset
|
37 |
|
c7dea3fcc5a7
Added short README, license.txt and updated copyright information
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
13
diff
changeset
|
38 |
This license is provisional and may (will) change in |
c7dea3fcc5a7
Added short README, license.txt and updated copyright information
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
13
diff
changeset
|
39 |
a future. |
c7dea3fcc5a7
Added short README, license.txt and updated copyright information
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
13
diff
changeset
|
40 |
" |
c7dea3fcc5a7
Added short README, license.txt and updated copyright information
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
13
diff
changeset
|
41 |
! ! |
c7dea3fcc5a7
Added short README, license.txt and updated copyright information
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
13
diff
changeset
|
42 |
|
5 | 43 |
!LLVMBasicBlock methodsFor:'accessing'! |
44 |
||
22
789a35bd30ac
Added example for compiling conditional. Added convenience API to simply code generation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
14
diff
changeset
|
45 |
builder |
789a35bd30ac
Added example for compiling conditional. Added convenience API to simply code generation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
14
diff
changeset
|
46 |
"Return a builder positioned at the end of the receiver" |
28
97013ae2abae
Renamed LLVMBuilder to LLVMIRBuilder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
22
diff
changeset
|
47 |
|
22
789a35bd30ac
Added example for compiling conditional. Added convenience API to simply code generation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
14
diff
changeset
|
48 |
| builder | |
789a35bd30ac
Added example for compiling conditional. Added convenience API to simply code generation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
14
diff
changeset
|
49 |
|
28
97013ae2abae
Renamed LLVMBuilder to LLVMIRBuilder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
22
diff
changeset
|
50 |
builder := LLVMIRBuilder new. |
97013ae2abae
Renamed LLVMBuilder to LLVMIRBuilder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
22
diff
changeset
|
51 |
builder positionAtEnd:self. |
22
789a35bd30ac
Added example for compiling conditional. Added convenience API to simply code generation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
14
diff
changeset
|
52 |
^ builder |
789a35bd30ac
Added example for compiling conditional. Added convenience API to simply code generation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
14
diff
changeset
|
53 |
|
789a35bd30ac
Added example for compiling conditional. Added convenience API to simply code generation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
14
diff
changeset
|
54 |
"Created: / 08-08-2015 / 03:25:02 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
789a35bd30ac
Added example for compiling conditional. Added convenience API to simply code generation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
14
diff
changeset
|
55 |
! |
789a35bd30ac
Added example for compiling conditional. Added convenience API to simply code generation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
14
diff
changeset
|
56 |
|
789a35bd30ac
Added example for compiling conditional. Added convenience API to simply code generation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
14
diff
changeset
|
57 |
function |
789a35bd30ac
Added example for compiling conditional. Added convenience API to simply code generation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
14
diff
changeset
|
58 |
^ function |
789a35bd30ac
Added example for compiling conditional. Added convenience API to simply code generation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
14
diff
changeset
|
59 |
|
789a35bd30ac
Added example for compiling conditional. Added convenience API to simply code generation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
14
diff
changeset
|
60 |
"Created: / 08-08-2015 / 03:22:58 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
58
6b9f8fec013a
Added convenience LLVMIRBuilder>>continue:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
28
diff
changeset
|
61 |
! |
6b9f8fec013a
Added convenience LLVMIRBuilder>>continue:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
28
diff
changeset
|
62 |
|
6b9f8fec013a
Added convenience LLVMIRBuilder>>continue:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
28
diff
changeset
|
63 |
lastInstruction |
6b9f8fec013a
Added convenience LLVMIRBuilder>>continue:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
28
diff
changeset
|
64 |
^ LLVM GetLastInstruction: self. |
6b9f8fec013a
Added convenience LLVMIRBuilder>>continue:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
28
diff
changeset
|
65 |
|
6b9f8fec013a
Added convenience LLVMIRBuilder>>continue:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
28
diff
changeset
|
66 |
"Created: / 20-04-2016 / 22:02:48 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
22
789a35bd30ac
Added example for compiling conditional. Added convenience API to simply code generation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
14
diff
changeset
|
67 |
! ! |
789a35bd30ac
Added example for compiling conditional. Added convenience API to simply code generation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
14
diff
changeset
|
68 |
|
789a35bd30ac
Added example for compiling conditional. Added convenience API to simply code generation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
14
diff
changeset
|
69 |
!LLVMBasicBlock methodsFor:'converting'! |
789a35bd30ac
Added example for compiling conditional. Added convenience API to simply code generation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
14
diff
changeset
|
70 |
|
789a35bd30ac
Added example for compiling conditional. Added convenience API to simply code generation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
14
diff
changeset
|
71 |
asLLVMValue |
789a35bd30ac
Added example for compiling conditional. Added convenience API to simply code generation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
14
diff
changeset
|
72 |
"Return representation of the receiver as LLVMValue" |
789a35bd30ac
Added example for compiling conditional. Added convenience API to simply code generation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
14
diff
changeset
|
73 |
|
789a35bd30ac
Added example for compiling conditional. Added convenience API to simply code generation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
14
diff
changeset
|
74 |
^ LLVM BasicBlockAsValue: self |
789a35bd30ac
Added example for compiling conditional. Added convenience API to simply code generation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
14
diff
changeset
|
75 |
|
789a35bd30ac
Added example for compiling conditional. Added convenience API to simply code generation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
14
diff
changeset
|
76 |
"Created: / 08-08-2015 / 02:11:55 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
61
c2e287d54de5
Added support for PHI nodes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
58
diff
changeset
|
77 |
! |
c2e287d54de5
Added support for PHI nodes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
58
diff
changeset
|
78 |
|
c2e287d54de5
Added support for PHI nodes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
58
diff
changeset
|
79 |
asLLVMasicBlock |
c2e287d54de5
Added support for PHI nodes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
58
diff
changeset
|
80 |
^ self. |
c2e287d54de5
Added support for PHI nodes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
58
diff
changeset
|
81 |
|
c2e287d54de5
Added support for PHI nodes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
58
diff
changeset
|
82 |
"Created: / 21-04-2016 / 22:11:35 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
5 | 83 |
! ! |
84 |
||
85 |
!LLVMBasicBlock methodsFor:'initialization'! |
|
86 |
||
22
789a35bd30ac
Added example for compiling conditional. Added convenience API to simply code generation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
14
diff
changeset
|
87 |
function:anLLVMFunction |
789a35bd30ac
Added example for compiling conditional. Added convenience API to simply code generation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
14
diff
changeset
|
88 |
function := anLLVMFunction. |
789a35bd30ac
Added example for compiling conditional. Added convenience API to simply code generation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
14
diff
changeset
|
89 |
|
789a35bd30ac
Added example for compiling conditional. Added convenience API to simply code generation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
14
diff
changeset
|
90 |
"Created: / 08-08-2015 / 03:22:39 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
5 | 91 |
! ! |
92 |
||
61
c2e287d54de5
Added support for PHI nodes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
58
diff
changeset
|
93 |
!LLVMBasicBlock methodsFor:'testing'! |
c2e287d54de5
Added support for PHI nodes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
58
diff
changeset
|
94 |
|
c2e287d54de5
Added support for PHI nodes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
58
diff
changeset
|
95 |
isLLVMBasicBlock |
c2e287d54de5
Added support for PHI nodes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
58
diff
changeset
|
96 |
^ true |
c2e287d54de5
Added support for PHI nodes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
58
diff
changeset
|
97 |
|
c2e287d54de5
Added support for PHI nodes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
58
diff
changeset
|
98 |
"Created: / 21-04-2016 / 22:29:33 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
62
2936ec426df6
Added 'block form' of #if:then:else: for easier use
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
61
diff
changeset
|
99 |
! |
2936ec426df6
Added 'block form' of #if:then:else: for easier use
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
61
diff
changeset
|
100 |
|
2936ec426df6
Added 'block form' of #if:then:else: for easier use
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
61
diff
changeset
|
101 |
isTerminated |
2936ec426df6
Added 'block form' of #if:then:else: for easier use
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
61
diff
changeset
|
102 |
"Return true if this block is terminated, i.e, if it's |
2936ec426df6
Added 'block form' of #if:then:else: for easier use
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
61
diff
changeset
|
103 |
last instruction is a terminator. False otherwise or if |
2936ec426df6
Added 'block form' of #if:then:else: for easier use
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
61
diff
changeset
|
104 |
block has no instruction at all" |
2936ec426df6
Added 'block form' of #if:then:else: for easier use
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
61
diff
changeset
|
105 |
|
2936ec426df6
Added 'block form' of #if:then:else: for easier use
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
61
diff
changeset
|
106 |
| last | |
2936ec426df6
Added 'block form' of #if:then:else: for easier use
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
61
diff
changeset
|
107 |
|
2936ec426df6
Added 'block form' of #if:then:else: for easier use
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
61
diff
changeset
|
108 |
last := self lastInstruction. |
2936ec426df6
Added 'block form' of #if:then:else: for easier use
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
61
diff
changeset
|
109 |
last notNil ifTrue:[ ^ last isTerminatorInst ]. |
2936ec426df6
Added 'block form' of #if:then:else: for easier use
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
61
diff
changeset
|
110 |
^ false |
2936ec426df6
Added 'block form' of #if:then:else: for easier use
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
61
diff
changeset
|
111 |
|
2936ec426df6
Added 'block form' of #if:then:else: for easier use
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
61
diff
changeset
|
112 |
"Created: / 22-04-2016 / 10:14:46 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
61
c2e287d54de5
Added support for PHI nodes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
58
diff
changeset
|
113 |
! ! |
c2e287d54de5
Added support for PHI nodes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
58
diff
changeset
|
114 |