mirror of
https://github.com/xomboverlord/ldc.git
synced 2026-04-30 15:31:30 +02:00
Committing LLVM binding for D as it currently exists in the SVN repository.
This commit is contained in:
35
tools/binding/llvmsample3.d
Normal file
35
tools/binding/llvmsample3.d
Normal file
@@ -0,0 +1,35 @@
|
||||
// simple example that shows off getting D wrappers from C values.
|
||||
module llvmsample3;
|
||||
|
||||
import llvm.c.Core;
|
||||
import llvm.llvm;
|
||||
|
||||
void main()
|
||||
{
|
||||
auto m = new Module("sample3");
|
||||
|
||||
// global int32
|
||||
auto gi = m.addGlobal(Type.Int32, "myint");
|
||||
gi.initializer = ConstantInt.GetU(Type.Int32, 42);
|
||||
|
||||
// this is not a cached value, it's recreated dynamically
|
||||
auto _i = gi.initializer;
|
||||
auto ci = cast(ConstantInt)_i;
|
||||
assert(ci !is null);
|
||||
ci.dump;
|
||||
|
||||
// global struct
|
||||
auto st = StructType.Get([Type.Double,Type.Double,Type.Double]);
|
||||
auto gs = m.addGlobal(st, "mystruct");
|
||||
auto elems = new Constant[3];
|
||||
foreach(i,ref e; elems)
|
||||
e = ConstantReal.Get(Type.Double, i+1);
|
||||
gs.initializer = ConstantStruct.Get(elems);
|
||||
|
||||
// again this is not a cached value.
|
||||
auto s = gs.initializer;
|
||||
auto cs = cast(ConstantStruct)s;
|
||||
assert(cs !is null);
|
||||
|
||||
cs.dump;
|
||||
}
|
||||
Reference in New Issue
Block a user