Goose  Diff

Differences From Artifact [2a9f48a48e]:

  • File bs/builtins/builders/cb_interface.cpp — part of check-in [35ff2a536e] at 2021-11-26 22:42:06 on branch trunk —
    • Fixed adding predicates to a type alias created with using that modified the original type
    • Fixed ambiguous parsing of using expressions that were mistook for overload redefinitions in some cases
    (user: zlodo size: 5525)

To Artifact [523db065c9]:

  • File bs/builtins/builders/cb_interface.cpp — part of check-in [68260b65f2] at 2022-03-14 19:23:09 on branch trunk —
    • bracket blocks inlined in the code are no longer proposition lists but a new type of block to contain "ghost code" (ie a verification specific cfg)
    • added a GhostBranch instruction to insert the above in the middle of regular code
    • removed a bunch of hacks to ignore load/stores involving ghost funcs during execution and codegen since they are now separated from normal code using the above
    • miscellaneous other refactorings and improvements
    • as a result ghost code is now more flexible and can use idiomatic tuple assignments to exchange the values of two ghost function closures
    (user: zlodo size: 5286)

10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
    {
        RegisterBuiltinFunc< Eager< void > ( TypeWrapper< ptr< CodeBuilder > > ) >( e, e.extPoisonBuilder(),
            []( const TypeWrapper< ptr< CodeBuilder > >& cb )
            {
                cb->poison();
            } );

        RegisterBuiltinFunc< Eager< bool > ( TypeWrapper< ptr< CodeBuilder > > ) >( e, e.extBuilderAllowsVarDecl(),
            []( const TypeWrapper< ptr< CodeBuilder > >& cb )
            {
                return true;
            } );

        RegisterBuiltinFunc< Eager< bool > ( TypeWrapper< ptr< CodeBuilder > > ) >( e, e.extBuilderAllowsOverloading(),
            []( const TypeWrapper< ptr< CodeBuilder > >& cb )
            {
                return true;
            } );

        RegisterBuiltinFunc< Eager< TypeWrapper< ptr< cir::CFG > > > ( TypeWrapper< ptr< CodeBuilder > > ) >( e, e.extGetCFG(),







<
<
<
<
<
<







10
11
12
13
14
15
16






17
18
19
20
21
22
23
    {
        RegisterBuiltinFunc< Eager< void > ( TypeWrapper< ptr< CodeBuilder > > ) >( e, e.extPoisonBuilder(),
            []( const TypeWrapper< ptr< CodeBuilder > >& cb )
            {
                cb->poison();
            } );







        RegisterBuiltinFunc< Eager< bool > ( TypeWrapper< ptr< CodeBuilder > > ) >( e, e.extBuilderAllowsOverloading(),
            []( const TypeWrapper< ptr< CodeBuilder > >& cb )
            {
                return true;
            } );

        RegisterBuiltinFunc< Eager< TypeWrapper< ptr< cir::CFG > > > ( TypeWrapper< ptr< CodeBuilder > > ) >( e, e.extGetCFG(),