Exemple #1
0
        public void ReturnsSizeOf()
        {
            using (var module = Module.Create("test_sizeof"))
            {
                var str = StructType.Create(new[] { Type.Int32, Type.Int32 }, true);
                var def = module.AddFunction(
                    Type.Int32, "structure", new Type[0], (f, b) =>
                {
                    var sz   = ConstantExpr.GetSizeOf(str);
                    var sz32 = b.CreateBitCast(sz, Type.Int32);
                    var ret  = b.CreateRet(sz32);
                });
                module.Verify();

                Initialize.X86.All();
                using (var engine = ExecutionEngine.CreateMCJITCompilerForModule(module))
                {
                    var func = engine.GetDelegate <Int32Delegate>(def);
                    Assert.AreEqual(8, func());
                }
            }
        }