Beispiel #1
0
        public void TvrReplaceInMem()
        {
            var id1  = new Identifier("pptr", PrimitiveType.Word32, null);
            var id2  = new Identifier("ptr", PrimitiveType.Word32, null);
            var id3  = new Identifier("v", PrimitiveType.Word32, null);
            var ass1 = new Assignment(id2, MemLoad(id1, 0, PrimitiveType.Word32));
            var ass2 = new Assignment(id3, MemLoad(id2, 0, PrimitiveType.Word32));

            eqb.VisitAssignment(ass1);
            eqb.VisitAssignment(ass2);

            var prog = new Program();

            prog.Architecture = new FakeArchitecture();
            prog.Platform     = new DefaultPlatform(null, prog.Architecture);
            trco = new TraitCollector(factory, store, dtb, prog);
            trco.VisitAssignment(ass1);
            trco.VisitAssignment(ass2);
            dtb.BuildEquivalenceClassDataTypes();

            var tvr = new TypeVariableReplacer(store);

            tvr.ReplaceTypeVariables();
            Verify("Typing/TvrReplaceInMem.txt");
        }
Beispiel #2
0
        public void DtbRepeatedLoads()
        {
            Identifier pfoo = new Identifier("pfoo", PrimitiveType.Word32, null);
            Identifier x    = new Identifier("x", PrimitiveType.Word32, null);
            Assignment ass1 = new Assignment(x, MemLoad(pfoo, 4, PrimitiveType.Word32));
            Assignment ass2 = new Assignment(x, MemLoad(pfoo, 4, PrimitiveType.Word32));

            ass1.Accept(eqb);
            ass2.Accept(eqb);
            TraitCollector trco = new TraitCollector(factory, store, dtb, program);

            trco.VisitAssignment(ass1);
            trco.VisitAssignment(ass2);
            dtb.BuildEquivalenceClassDataTypes();

            Verify("Typing/DtbRepeatedLoads.txt");
        }
Beispiel #3
0
        public void DtbSameMemFetch()
        {
            Identifier foo  = new Identifier("foo", PrimitiveType.Word32, null);
            Identifier bar  = new Identifier("bar", PrimitiveType.Word16, null);
            Identifier baz  = new Identifier("baz", PrimitiveType.Word16, null);
            Assignment ass1 = new Assignment(bar, MemLoad(foo, 4, PrimitiveType.Word16));
            Assignment ass2 = new Assignment(baz, MemLoad(foo, 4, PrimitiveType.Word16));

            ass1.Accept(eqb);
            ass2.Accept(eqb);
            TraitCollector trco = new TraitCollector(factory, store, dtb, program);

            trco.VisitAssignment(ass1);
            trco.VisitAssignment(ass2);
            dtb.BuildEquivalenceClassDataTypes();

            Verify("Typing/DtbSameMemFetch.txt");
        }
Beispiel #4
0
        public void TvrReplaceInMem()
        {
            var id1 = new Identifier("pptr", PrimitiveType.Word32, null);
            var id2 = new Identifier("ptr", PrimitiveType.Word32, null);
            var id3 = new Identifier("v", PrimitiveType.Word32, null);
            var ass1 = new Assignment(id2, MemLoad(id1, 0, PrimitiveType.Word32));
            var ass2 = new Assignment(id3, MemLoad(id2, 0, PrimitiveType.Word32));
            eqb.VisitAssignment(ass1);
            eqb.VisitAssignment(ass2);

            var prog = new Program();
            prog.Architecture = new FakeArchitecture();
            prog.Platform = new DefaultPlatform(null, prog.Architecture);
            trco = new TraitCollector(factory, store, dtb, prog);
            trco.VisitAssignment(ass1);
            trco.VisitAssignment(ass2);
            dtb.BuildEquivalenceClassDataTypes();

            var tvr = new TypeVariableReplacer(store);
            tvr.ReplaceTypeVariables();
            Verify("Typing/TvrReplaceInMem.txt");
        }
        public void DtbSameMemFetch()
        {
            Identifier foo = new Identifier("foo", PrimitiveType.Word32, null);
            Identifier bar = new Identifier("bar", PrimitiveType.Word16, null);
            Identifier baz = new Identifier("baz", PrimitiveType.Word16, null);
            Assignment ass1 = new Assignment(bar, MemLoad(foo, 4, PrimitiveType.Word16));
            Assignment ass2 = new Assignment(baz, MemLoad(foo, 4, PrimitiveType.Word16));
            ass1.Accept(eqb);
            ass2.Accept(eqb);
            TraitCollector trco = new TraitCollector(factory, store, dtb, prog);
            trco.VisitAssignment(ass1);
            trco.VisitAssignment(ass2);
            dtb.BuildEquivalenceClassDataTypes();

            Verify("Typing/DtbSameMemFetch.txt");
        }
        public void DtbRepeatedLoads()
        {
            Identifier pfoo = new Identifier("pfoo", PrimitiveType.Word32, null);
            Identifier x = new Identifier("x", PrimitiveType.Word32, null);
            Assignment ass1 = new Assignment(x, MemLoad(pfoo, 4, PrimitiveType.Word32));
            Assignment ass2 = new Assignment(x, MemLoad(pfoo, 4, PrimitiveType.Word32));
            ass1.Accept(eqb);
            ass2.Accept(eqb);
            TraitCollector trco = new TraitCollector(factory, store, dtb, prog);
            trco.VisitAssignment(ass1);
            trco.VisitAssignment(ass2);
            dtb.BuildEquivalenceClassDataTypes();

            Verify("Typing/DtbRepeatedLoads.txt");
        }