Lei Zhang
097ff25ea7
Allow OpUndef appearing in the type and global variable section.
...
Also clean up API functions for adding instructions into the
type and global values section.
2016-08-15 10:44:14 -04:00
qining
d065593404
Add iterator getter interface for types_values_
2016-08-12 15:10:51 -04:00
Lei Zhang
95dc16d1ec
Add make_range() & make_const_range() for creating iterator ranges.
2016-08-12 10:34:47 -04:00
Lei Zhang
4b3247feba
Avoid non-oneliner definition in class and add missing iterators.
2016-08-12 10:34:47 -04:00
Lei Zhang
645ee1d9e0
Create an iterator class for in-memory representation.
2016-08-11 18:35:12 -04:00
Lei Zhang
c562e231e3
Optimization: Add type manager.
...
Type manager will construct a map of types gradually from
instructions.
2016-08-10 12:53:17 -04:00
Lei Zhang
80c94a4fa8
Change the interfaces of in-memory representation to use pointers.
...
Previously we use vectors of objects and move semantics to handle
ownership. That approach has the flaw that inserting an object into
the middle of a vector, which may trigger a vector reallocation,
can invalidate some addresses taken from instructions.
Now the in-memory representation internally uses vector of unique
pointers to handle ownership. Since objects are explicitly heap-
allocated now, pointers to them won't be invalidated by vector
resizing anymore.
2016-08-10 12:11:33 -04:00
qining
51a2484b36
Dead constant elimination
...
A pass to remove dead constants, including both front-end constants and spec
constants.
This pass does not handle dead variables and types.
2016-08-08 17:17:15 -04:00
Lei Zhang
dcf28bf6ce
Allow missing memory model instructions in modules.
2016-07-29 00:58:09 -04:00
Lei Zhang
abf8f6413c
Promote ir namespace and create draft libspirv.{h|c}pp.
2016-06-28 14:52:34 -04:00
Lei Zhang
8590f9cc81
Add IrBuilder for constructing SPIR-V in-memory representation.
2016-06-27 16:57:42 -04:00
Lei Zhang
3df8f7cebd
Add classes for representing SPIR-V language constructs in memory.
2016-06-24 20:54:06 -04:00