nameExpr is ?=? decl is ?=?: automatically generated inline static function with parameters _dst: pointer to instance of struct __anonymous0 _src: instance of struct __anonymous0 returning instance of struct __anonymous0 with body CompoundStmt Expression Statement: Applying untyped: Name: ?=? ...to: Address of: Member Expression, with field: a: signed int from aggregate: Applying untyped: Name: *? ...to: Variable Expression: _dst: pointer to instance of struct __anonymous0 Member Expression, with field: a: signed int from aggregate: Variable Expression: _src: instance of struct __anonymous0 Expression Statement: Applying untyped: Name: ?=? ...to: Address of: Member Expression, with field: b: double from aggregate: Applying untyped: Name: *? ...to: Variable Expression: _dst: pointer to instance of struct __anonymous0 Member Expression, with field: b: double from aggregate: Variable Expression: _src: instance of struct __anonymous0 Return Statement, returning: Variable Expression: _src: instance of struct __anonymous0 newExpr is Variable Expression: ?=?: inline static function with parameters _dst: pointer to instance of struct __anonymous0 _src: instance of struct __anonymous0 returning instance of struct __anonymous0 alternatives before prune: Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function with parameters _dst: pointer to instance of struct __anonymous0 _src: instance of struct __anonymous0 returning instance of struct __anonymous0 (types: pointer to function with parameters _dst: pointer to instance of struct __anonymous0 _src: instance of struct __anonymous0 returning instance of struct __anonymous0 ) Environment: there are 1 alternatives before elimination there are 1 alternatives after elimination alternatives before prune: Cost ( 0, 0, 0 ): Member Expression, with field: a: signed int from aggregate: Applying untyped: Name: *? ...to: Variable Expression: _dst: pointer to instance of struct __anonymous0 (types: lvalue signed int ) Environment: there are 1 alternatives before elimination there are 1 alternatives after elimination alternatives before prune: Cost ( 0, 0, 0 ): Address of: Member Expression, with field: a: signed int from aggregate: Applying untyped: Name: *? ...to: Variable Expression: _dst: pointer to instance of struct __anonymous0 (types: pointer to signed int ) Environment: there are 1 alternatives before elimination there are 1 alternatives after elimination findSubExprs Cost ( 0, 0, 0 ): Address of: Member Expression, with field: a: signed int from aggregate: Applying untyped: Name: *? ...to: Variable Expression: _dst: pointer to instance of struct __anonymous0 (types: pointer to signed int ) Environment: alternatives before prune: Cost ( 0, 0, 0 ): Member Expression, with field: a: signed int from aggregate: Variable Expression: _src: instance of struct __anonymous0 (types: lvalue signed int ) Environment: there are 1 alternatives before elimination there are 1 alternatives after elimination findSubExprs Cost ( 0, 0, 0 ): Member Expression, with field: a: signed int from aggregate: Variable Expression: _src: instance of struct __anonymous0 (types: lvalue signed int ) Environment: working on alternative: Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function with parameters _dst: pointer to instance of struct __anonymous0 _src: instance of struct __anonymous0 returning instance of struct __anonymous0 (types: pointer to function with parameters _dst: pointer to instance of struct __anonymous0 _src: instance of struct __anonymous0 returning instance of struct __anonymous0 ) Environment: formal type is pointer to instance of struct __anonymous0 actual type is pointer to signed int nameExpr is ?=? decl is ?=?: automatically generated inline static function with parameters _dst: pointer to instance of struct __anonymous0 _src: instance of struct __anonymous0 returning instance of struct __anonymous0 with body CompoundStmt Expression Statement: Applying untyped: Name: ?=? ...to: Address of: Member Expression, with field: a: signed int from aggregate: Applying untyped: Name: *? ...to: Variable Expression: _dst: pointer to instance of struct __anonymous0 Member Expression, with field: a: signed int from aggregate: Variable Expression: _src: instance of struct __anonymous0 Expression Statement: Applying untyped: Name: ?=? ...to: Address of: Member Expression, with field: b: double from aggregate: Applying untyped: Name: *? ...to: Variable Expression: _dst: pointer to instance of struct __anonymous0 Member Expression, with field: b: double from aggregate: Variable Expression: _src: instance of struct __anonymous0 Return Statement, returning: Variable Expression: _src: instance of struct __anonymous0 newExpr is Variable Expression: ?=?: inline static function with parameters _dst: pointer to instance of struct __anonymous0 _src: instance of struct __anonymous0 returning instance of struct __anonymous0 alternatives before prune: Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function with parameters _dst: pointer to instance of struct __anonymous0 _src: instance of struct __anonymous0 returning instance of struct __anonymous0 (types: pointer to function with parameters _dst: pointer to instance of struct __anonymous0 _src: instance of struct __anonymous0 returning instance of struct __anonymous0 ) Environment: there are 1 alternatives before elimination there are 1 alternatives after elimination alternatives before prune: Cost ( 0, 0, 0 ): Member Expression, with field: b: double from aggregate: Applying untyped: Name: *? ...to: Variable Expression: _dst: pointer to instance of struct __anonymous0 (types: lvalue double ) Environment: there are 1 alternatives before elimination there are 1 alternatives after elimination alternatives before prune: Cost ( 0, 0, 0 ): Address of: Member Expression, with field: b: double from aggregate: Applying untyped: Name: *? ...to: Variable Expression: _dst: pointer to instance of struct __anonymous0 (types: pointer to double ) Environment: there are 1 alternatives before elimination there are 1 alternatives after elimination findSubExprs Cost ( 0, 0, 0 ): Address of: Member Expression, with field: b: double from aggregate: Applying untyped: Name: *? ...to: Variable Expression: _dst: pointer to instance of struct __anonymous0 (types: pointer to double ) Environment: alternatives before prune: Cost ( 0, 0, 0 ): Member Expression, with field: b: double from aggregate: Variable Expression: _src: instance of struct __anonymous0 (types: lvalue double ) Environment: there are 1 alternatives before elimination there are 1 alternatives after elimination findSubExprs Cost ( 0, 0, 0 ): Member Expression, with field: b: double from aggregate: Variable Expression: _src: instance of struct __anonymous0 (types: lvalue double ) Environment: working on alternative: Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function with parameters _dst: pointer to instance of struct __anonymous0 _src: instance of struct __anonymous0 returning instance of struct __anonymous0 (types: pointer to function with parameters _dst: pointer to instance of struct __anonymous0 _src: instance of struct __anonymous0 returning instance of struct __anonymous0 ) Environment: formal type is pointer to instance of struct __anonymous0 actual type is pointer to double alternatives before prune: Cost ( 0, 0, 0 ): Variable Expression: _src: instance of struct __anonymous0 (types: lvalue instance of struct __anonymous0 ) Environment: there are 1 alternatives before elimination there are 1 alternatives after elimination alternatives before prune: Cost ( 0, 0, 0 ): Cast of: Variable Expression: _src: instance of struct __anonymous0 to: instance of struct __anonymous0 (types: instance of struct __anonymous0 ) Environment: there are 1 alternatives before elimination there are 1 alternatives after elimination nameExpr is ?=? decl is ?=?: automatically generated inline static function with parameters _dst: pointer to instance of struct __anonymous0 _src: instance of struct __anonymous0 returning instance of struct __anonymous0 with body CompoundStmt Expression Statement: Applying untyped: Name: ?=? ...to: Address of: Member Expression, with field: a: signed int from aggregate: Applying untyped: Name: *? ...to: Variable Expression: _dst: pointer to instance of struct __anonymous0 Member Expression, with field: a: signed int from aggregate: Variable Expression: _src: instance of struct __anonymous0 Expression Statement: Applying untyped: Name: ?=? ...to: Address of: Member Expression, with field: b: double from aggregate: Applying untyped: Name: *? ...to: Variable Expression: _dst: pointer to instance of struct __anonymous0 Member Expression, with field: b: double from aggregate: Variable Expression: _src: instance of struct __anonymous0 Return Statement, returning: Cast of: Variable Expression: _src: instance of struct __anonymous0 to: instance of struct __anonymous0 with environment: Types: Non-types: newExpr is Variable Expression: ?=?: inline static function with parameters _dst: pointer to instance of struct __anonymous0 _src: instance of struct __anonymous0 returning instance of struct __anonymous0 decl is ?=?: automatically generated function with parameters _dst: pointer to instance of type u (not function type) _src: instance of type u (not function type) returning instance of type u (not function type) with body CompoundStmt Return Statement, returning: Applying untyped: Name: ?=? ...to: Cast of: Variable Expression: _dst: pointer to instance of type u (not function type) to: pointer to instance of struct __anonymous0 Cast of: Variable Expression: _src: instance of type u (not function type) to: instance of struct __anonymous0 newExpr is Variable Expression: ?=?: function with parameters _dst: pointer to instance of type u (not function type) _src: instance of type u (not function type) returning instance of type u (not function type) alternatives before prune: Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function with parameters _dst: pointer to instance of struct __anonymous0 _src: instance of struct __anonymous0 returning instance of struct __anonymous0 (types: pointer to function with parameters _dst: pointer to instance of struct __anonymous0 _src: instance of struct __anonymous0 returning instance of struct __anonymous0 ) Environment: Cost ( 0, 0, 0 ): Variable Expression: ?=?: function with parameters _dst: pointer to instance of type u (not function type) _src: instance of type u (not function type) returning instance of type u (not function type) (types: pointer to function with parameters _dst: pointer to instance of type u (not function type) _src: instance of type u (not function type) returning instance of type u (not function type) ) Environment: there are 2 alternatives before elimination there are 2 alternatives after elimination alternatives before prune: Cost ( 0, 0, 0 ): Variable Expression: _dst: pointer to instance of type u (not function type) (types: lvalue pointer to instance of type u (not function type) ) Environment: there are 1 alternatives before elimination there are 1 alternatives after elimination nameExpr is y decl is y: double newExpr is Variable Expression: y: double alternatives before prune: Cost ( 0, 0, 0 ): Variable Expression: y: double (types: lvalue double ) Environment: there are 1 alternatives before elimination there are 1 alternatives after elimination nameExpr is ?=? decl is ?=?: automatically generated inline static function with parameters _dst: pointer to instance of struct __anonymous0 _src: instance of struct __anonymous0 returning instance of struct __anonymous0 with body CompoundStmt Expression Statement: Applying untyped: Name: ?=? ...to: Address of: Member Expression, with field: a: signed int from aggregate: Applying untyped: Name: *? ...to: Variable Expression: _dst: pointer to instance of struct __anonymous0 Member Expression, with field: a: signed int from aggregate: Variable Expression: _src: instance of struct __anonymous0 Expression Statement: Applying untyped: Name: ?=? ...to: Address of: Member Expression, with field: b: double from aggregate: Applying untyped: Name: *? ...to: Variable Expression: _dst: pointer to instance of struct __anonymous0 Member Expression, with field: b: double from aggregate: Variable Expression: _src: instance of struct __anonymous0 Return Statement, returning: Cast of: Variable Expression: _src: instance of struct __anonymous0 to: instance of struct __anonymous0 with environment: Types: Non-types: newExpr is Variable Expression: ?=?: inline static function with parameters _dst: pointer to instance of struct __anonymous0 _src: instance of struct __anonymous0 returning instance of struct __anonymous0 decl is ?=?: automatically generated function with parameters _dst: pointer to instance of type u (not function type) _src: instance of type u (not function type) returning instance of type u (not function type) with body CompoundStmt Return Statement, returning: Applying untyped: Name: ?=? ...to: Cast of: Variable Expression: _dst: pointer to instance of type u (not function type) to: pointer to instance of struct __anonymous0 Cast of: Variable Expression: _src: instance of type u (not function type) to: instance of struct __anonymous0 newExpr is Variable Expression: ?=?: function with parameters _dst: pointer to instance of type u (not function type) _src: instance of type u (not function type) returning instance of type u (not function type) decl is ?=?: automatically generated function with parameters _dst: pointer to instance of type x (not function type) _src: instance of type x (not function type) returning instance of type x (not function type) newExpr is Variable Expression: ?=?: function with parameters _dst: pointer to instance of type x (not function type) _src: instance of type x (not function type) returning instance of type x (not function type) alternatives before prune: Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function with parameters _dst: pointer to instance of struct __anonymous0 _src: instance of struct __anonymous0 returning instance of struct __anonymous0 (types: pointer to function with parameters _dst: pointer to instance of struct __anonymous0 _src: instance of struct __anonymous0 returning instance of struct __anonymous0 ) Environment: Cost ( 0, 0, 0 ): Variable Expression: ?=?: function with parameters _dst: pointer to instance of type u (not function type) _src: instance of type u (not function type) returning instance of type u (not function type) (types: pointer to function with parameters _dst: pointer to instance of type u (not function type) _src: instance of type u (not function type) returning instance of type u (not function type) ) Environment: Cost ( 0, 0, 0 ): Variable Expression: ?=?: function with parameters _dst: pointer to instance of type x (not function type) _src: instance of type x (not function type) returning instance of type x (not function type) (types: pointer to function with parameters _dst: pointer to instance of type x (not function type) _src: instance of type x (not function type) returning instance of type x (not function type) ) Environment: there are 3 alternatives before elimination there are 3 alternatives after elimination nameExpr is u nameExpr is t decl is t: function with parameters instance of type u (not function type) returning instance of type x (not function type) newExpr is Variable Expression: t: function with parameters instance of type u (not function type) returning instance of type x (not function type) alternatives before prune: Cost ( 0, 0, 0 ): Variable Expression: t: function with parameters instance of type u (not function type) returning instance of type x (not function type) (types: pointer to function with parameters instance of type u (not function type) returning instance of type x (not function type) ) Environment: there are 1 alternatives before elimination there are 1 alternatives after elimination nameExpr is u nameExpr is ?=? decl is ?=?: automatically generated inline static function with parameters _dst: pointer to instance of struct __anonymous0 _src: instance of struct __anonymous0 returning instance of struct __anonymous0 with body CompoundStmt Expression Statement: Applying untyped: Name: ?=? ...to: Address of: Member Expression, with field: a: signed int from aggregate: Applying untyped: Name: *? ...to: Variable Expression: _dst: pointer to instance of struct __anonymous0 Member Expression, with field: a: signed int from aggregate: Variable Expression: _src: instance of struct __anonymous0 Expression Statement: Applying untyped: Name: ?=? ...to: Address of: Member Expression, with field: b: double from aggregate: Applying untyped: Name: *? ...to: Variable Expression: _dst: pointer to instance of struct __anonymous0 Member Expression, with field: b: double from aggregate: Variable Expression: _src: instance of struct __anonymous0 Return Statement, returning: Cast of: Variable Expression: _src: instance of struct __anonymous0 to: instance of struct __anonymous0 with environment: Types: Non-types: newExpr is Variable Expression: ?=?: inline static function with parameters _dst: pointer to instance of struct __anonymous0 _src: instance of struct __anonymous0 returning instance of struct __anonymous0 decl is ?=?: automatically generated function with parameters _dst: pointer to instance of type u (not function type) _src: instance of type u (not function type) returning instance of type u (not function type) with body CompoundStmt Return Statement, returning: Applying untyped: Name: ?=? ...to: Cast of: Variable Expression: _dst: pointer to instance of type u (not function type) to: pointer to instance of struct __anonymous0 Cast of: Variable Expression: _src: instance of type u (not function type) to: instance of struct __anonymous0 newExpr is Variable Expression: ?=?: function with parameters _dst: pointer to instance of type u (not function type) _src: instance of type u (not function type) returning instance of type u (not function type) decl is ?=?: automatically generated function with parameters _dst: pointer to instance of type x (not function type) _src: instance of type x (not function type) returning instance of type x (not function type) newExpr is Variable Expression: ?=?: function with parameters _dst: pointer to instance of type x (not function type) _src: instance of type x (not function type) returning instance of type x (not function type) alternatives before prune: Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function with parameters _dst: pointer to instance of struct __anonymous0 _src: instance of struct __anonymous0 returning instance of struct __anonymous0 (types: pointer to function with parameters _dst: pointer to instance of struct __anonymous0 _src: instance of struct __anonymous0 returning instance of struct __anonymous0 ) Environment: Cost ( 0, 0, 0 ): Variable Expression: ?=?: function with parameters _dst: pointer to instance of type u (not function type) _src: instance of type u (not function type) returning instance of type u (not function type) (types: pointer to function with parameters _dst: pointer to instance of type u (not function type) _src: instance of type u (not function type) returning instance of type u (not function type) ) Environment: Cost ( 0, 0, 0 ): Variable Expression: ?=?: function with parameters _dst: pointer to instance of type x (not function type) _src: instance of type x (not function type) returning instance of type x (not function type) (types: pointer to function with parameters _dst: pointer to instance of type x (not function type) _src: instance of type x (not function type) returning instance of type x (not function type) ) Environment: there are 3 alternatives before elimination there are 3 alternatives after elimination nameExpr is z decl is z: double newExpr is Variable Expression: z: double alternatives before prune: Cost ( 0, 0, 0 ): Variable Expression: z: double (types: lvalue double ) Environment: there are 1 alternatives before elimination there are 1 alternatives after elimination alternatives before prune: Cost ( 0, 0, 0 ): Address of: Variable Expression: z: double (types: pointer to double ) Environment: there are 1 alternatives before elimination there are 1 alternatives after elimination findSubExprs Cost ( 0, 0, 0 ): Address of: Variable Expression: z: double (types: pointer to double ) Environment: nameExpr is t decl is t: function with parameters instance of type u (not function type) returning instance of type x (not function type) newExpr is Variable Expression: t: function with parameters instance of type u (not function type) returning instance of type x (not function type) alternatives before prune: Cost ( 0, 0, 0 ): Variable Expression: t: function with parameters instance of type u (not function type) returning instance of type x (not function type) (types: pointer to function with parameters instance of type u (not function type) returning instance of type x (not function type) ) Environment: there are 1 alternatives before elimination there are 1 alternatives after elimination nameExpr is u nameExpr is u decl is u: pointer to function with parameters instance of type t (not function type) returning instance of type t (not function type) newExpr is Variable Expression: u: pointer to function with parameters instance of type t (not function type) returning instance of type t (not function type) alternatives before prune: Cost ( 0, 0, 0 ): Variable Expression: u: pointer to function with parameters instance of type t (not function type) returning instance of type t (not function type) (types: lvalue pointer to function with parameters instance of type t (not function type) returning instance of type t (not function type) ) Environment: there are 1 alternatives before elimination there are 1 alternatives after elimination nameExpr is the_t decl is the_t: instance of type t (not function type) newExpr is Variable Expression: the_t: instance of type t (not function type) alternatives before prune: Cost ( 0, 0, 0 ): Variable Expression: the_t: instance of type t (not function type) (types: lvalue instance of type t (not function type) ) Environment: there are 1 alternatives before elimination there are 1 alternatives after elimination findSubExprs Cost ( 0, 0, 0 ): Variable Expression: the_t: instance of type t (not function type) (types: lvalue instance of type t (not function type) ) Environment: working on alternative: Cost ( 0, 0, 0 ): Variable Expression: u: pointer to function with parameters instance of type t (not function type) returning instance of type t (not function type) (types: lvalue pointer to function with parameters instance of type t (not function type) returning instance of type t (not function type) ) Environment: formal type is instance of type t (not function type) actual type is lvalue instance of type t (not function type) need assertions: ============= original indexer ===idTable=== ===typeTable=== ===structTable=== ===enumTable=== ===unionTable=== ===contextTable=== ============= new indexer ===idTable=== ===typeTable=== ===structTable=== ===enumTable=== ===unionTable=== ===contextTable=== actual expression: Variable Expression: the_t: instance of type t (not function type) --- results are lvalue instance of type t (not function type) converting lvalue instance of type t (not function type) to instance of type t (not function type) cost is( 0, 0, 0 ) Case +++++++++++++ formals are: instance of type t (not function type) actuals are: Variable Expression: the_t: instance of type t (not function type) bindings are: cost of conversion is:( 0, 0, 0 ) alternatives before prune: Cost ( 0, 0, 0 ): Application of Variable Expression: u: pointer to function with parameters instance of type t (not function type) returning instance of type t (not function type) to arguments Variable Expression: the_t: instance of type t (not function type) (types: instance of type t (not function type) ) Environment: there are 1 alternatives before elimination there are 1 alternatives after elimination alternatives before prune: Cost ( 0, 0, 0 ): Cast of: Application of Variable Expression: u: pointer to function with parameters instance of type t (not function type) returning instance of type t (not function type) to arguments Variable Expression: the_t: instance of type t (not function type) to: instance of type t (not function type) (types: instance of type t (not function type) ) Environment: there are 1 alternatives before elimination there are 1 alternatives after elimination nameExpr is ?=? decl is ?=?: automatically generated inline static function with parameters _dst: pointer to instance of struct __anonymous0 _src: instance of struct __anonymous0 returning instance of struct __anonymous0 with body CompoundStmt Expression Statement: Applying untyped: Name: ?=? ...to: Address of: Member Expression, with field: a: signed int from aggregate: Applying untyped: Name: *? ...to: Variable Expression: _dst: pointer to instance of struct __anonymous0 Member Expression, with field: a: signed int from aggregate: Variable Expression: _src: instance of struct __anonymous0 Expression Statement: Applying untyped: Name: ?=? ...to: Address of: Member Expression, with field: b: double from aggregate: Applying untyped: Name: *? ...to: Variable Expression: _dst: pointer to instance of struct __anonymous0 Member Expression, with field: b: double from aggregate: Variable Expression: _src: instance of struct __anonymous0 Return Statement, returning: Cast of: Variable Expression: _src: instance of struct __anonymous0 to: instance of struct __anonymous0 with environment: Types: Non-types: newExpr is Variable Expression: ?=?: inline static function with parameters _dst: pointer to instance of struct __anonymous0 _src: instance of struct __anonymous0 returning instance of struct __anonymous0 decl is ?=?: automatically generated function with parameters _dst: pointer to instance of type u (not function type) _src: instance of type u (not function type) returning instance of type u (not function type) with body CompoundStmt Return Statement, returning: Applying untyped: Name: ?=? ...to: Cast of: Variable Expression: _dst: pointer to instance of type u (not function type) to: pointer to instance of struct __anonymous0 Cast of: Variable Expression: _src: instance of type u (not function type) to: instance of struct __anonymous0 newExpr is Variable Expression: ?=?: function with parameters _dst: pointer to instance of type u (not function type) _src: instance of type u (not function type) returning instance of type u (not function type) decl is ?=?: automatically generated function with parameters _dst: pointer to instance of type x (not function type) _src: instance of type x (not function type) returning instance of type x (not function type) newExpr is Variable Expression: ?=?: function with parameters _dst: pointer to instance of type x (not function type) _src: instance of type x (not function type) returning instance of type x (not function type) decl is ?=?: pointer to function with parameters pointer to instance of type t (not function type) instance of type t (not function type) returning instance of type t (not function type) newExpr is Variable Expression: ?=?: pointer to function with parameters pointer to instance of type t (not function type) instance of type t (not function type) returning instance of type t (not function type) alternatives before prune: Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function with parameters _dst: pointer to instance of struct __anonymous0 _src: instance of struct __anonymous0 returning instance of struct __anonymous0 (types: pointer to function with parameters _dst: pointer to instance of struct __anonymous0 _src: instance of struct __anonymous0 returning instance of struct __anonymous0 ) Environment: Cost ( 0, 0, 0 ): Variable Expression: ?=?: function with parameters _dst: pointer to instance of type u (not function type) _src: instance of type u (not function type) returning instance of type u (not function type) (types: pointer to function with parameters _dst: pointer to instance of type u (not function type) _src: instance of type u (not function type) returning instance of type u (not function type) ) Environment: Cost ( 0, 0, 0 ): Variable Expression: ?=?: function with parameters _dst: pointer to instance of type x (not function type) _src: instance of type x (not function type) returning instance of type x (not function type) (types: pointer to function with parameters _dst: pointer to instance of type x (not function type) _src: instance of type x (not function type) returning instance of type x (not function type) ) Environment: Cost ( 0, 0, 0 ): Variable Expression: ?=?: pointer to function with parameters pointer to instance of type t (not function type) instance of type t (not function type) returning instance of type t (not function type) (types: lvalue pointer to function with parameters pointer to instance of type t (not function type) instance of type t (not function type) returning instance of type t (not function type) ) Environment: there are 4 alternatives before elimination there are 4 alternatives after elimination nameExpr is y decl is y: instance of type t (not function type) with initializer Simple Initializer: Cast of: Application of Variable Expression: u: pointer to function with parameters instance of type t (not function type) returning instance of type t (not function type) to arguments Variable Expression: the_t: instance of type t (not function type) to: instance of type t (not function type) with environment: Types: Non-types: newExpr is Variable Expression: y: instance of type t (not function type) decl is y: double newExpr is Variable Expression: y: double alternatives before prune: Cost ( 0, 0, 0 ): Variable Expression: y: instance of type t (not function type) (types: lvalue instance of type t (not function type) ) Environment: Cost ( 0, 0, 0 ): Variable Expression: y: double (types: lvalue double ) Environment: there are 2 alternatives before elimination there are 2 alternatives after elimination alternatives before prune: Cost ( 0, 0, 0 ): Address of: Variable Expression: y: double (types: pointer to double ) Environment: Cost ( 0, 0, 0 ): Address of: Variable Expression: y: instance of type t (not function type) (types: pointer to instance of type t (not function type) ) Environment: there are 2 alternatives before elimination there are 2 alternatives after elimination findSubExprs Cost ( 0, 0, 0 ): Address of: Variable Expression: y: double (types: pointer to double ) Environment: Cost ( 0, 0, 0 ): Address of: Variable Expression: y: instance of type t (not function type) (types: pointer to instance of type t (not function type) ) Environment: nameExpr is u decl is u: pointer to function with parameters instance of type t (not function type) returning instance of type t (not function type) newExpr is Variable Expression: u: pointer to function with parameters instance of type t (not function type) returning instance of type t (not function type) alternatives before prune: Cost ( 0, 0, 0 ): Variable Expression: u: pointer to function with parameters instance of type t (not function type) returning instance of type t (not function type) (types: lvalue pointer to function with parameters instance of type t (not function type) returning instance of type t (not function type) ) Environment: there are 1 alternatives before elimination there are 1 alternatives after elimination nameExpr is the_t decl is the_t: instance of type t (not function type) newExpr is Variable Expression: the_t: instance of type t (not function type) alternatives before prune: Cost ( 0, 0, 0 ): Variable Expression: the_t: instance of type t (not function type) (types: lvalue instance of type t (not function type) ) Environment: there are 1 alternatives before elimination there are 1 alternatives after elimination findSubExprs Cost ( 0, 0, 0 ): Variable Expression: the_t: instance of type t (not function type) (types: lvalue instance of type t (not function type) ) Environment: working on alternative: Cost ( 0, 0, 0 ): Variable Expression: u: pointer to function with parameters instance of type t (not function type) returning instance of type t (not function type) (types: lvalue pointer to function with parameters instance of type t (not function type) returning instance of type t (not function type) ) Environment: formal type is instance of type t (not function type) actual type is lvalue instance of type t (not function type) need assertions: ============= original indexer ===idTable=== ===typeTable=== ===structTable=== ===enumTable=== ===unionTable=== ===contextTable=== ============= new indexer ===idTable=== ===typeTable=== ===structTable=== ===enumTable=== ===unionTable=== ===contextTable=== actual expression: Variable Expression: the_t: instance of type t (not function type) --- results are lvalue instance of type t (not function type) converting lvalue instance of type t (not function type) to instance of type t (not function type) cost is( 0, 0, 0 ) Case +++++++++++++ formals are: instance of type t (not function type) actuals are: Variable Expression: the_t: instance of type t (not function type) bindings are: cost of conversion is:( 0, 0, 0 ) alternatives before prune: Cost ( 0, 0, 0 ): Application of Variable Expression: u: pointer to function with parameters instance of type t (not function type) returning instance of type t (not function type) to arguments Variable Expression: the_t: instance of type t (not function type) (types: instance of type t (not function type) ) Environment: there are 1 alternatives before elimination there are 1 alternatives after elimination findSubExprs Cost ( 0, 0, 0 ): Application of Variable Expression: u: pointer to function with parameters instance of type t (not function type) returning instance of type t (not function type) to arguments Variable Expression: the_t: instance of type t (not function type) (types: instance of type t (not function type) ) Environment: working on alternative: Cost ( 0, 0, 0 ): Variable Expression: ?=?: function with parameters _dst: pointer to instance of type x (not function type) _src: instance of type x (not function type) returning instance of type x (not function type) (types: pointer to function with parameters _dst: pointer to instance of type x (not function type) _src: instance of type x (not function type) returning instance of type x (not function type) ) Environment: formal type is pointer to instance of type x (not function type) actual type is pointer to double formal type is pointer to instance of type x (not function type) actual type is pointer to instance of type t (not function type) working on alternative: Cost ( 0, 0, 0 ): Variable Expression: ?=?: function with parameters _dst: pointer to instance of type u (not function type) _src: instance of type u (not function type) returning instance of type u (not function type) (types: pointer to function with parameters _dst: pointer to instance of type u (not function type) _src: instance of type u (not function type) returning instance of type u (not function type) ) Environment: formal type is pointer to instance of type u (not function type) actual type is pointer to double formal type is pointer to instance of type u (not function type) actual type is pointer to instance of type t (not function type) working on alternative: Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function with parameters _dst: pointer to instance of struct __anonymous0 _src: instance of struct __anonymous0 returning instance of struct __anonymous0 (types: pointer to function with parameters _dst: pointer to instance of struct __anonymous0 _src: instance of struct __anonymous0 returning instance of struct __anonymous0 ) Environment: formal type is pointer to instance of struct __anonymous0 actual type is pointer to double formal type is pointer to instance of struct __anonymous0 actual type is pointer to instance of type t (not function type) working on alternative: Cost ( 0, 0, 0 ): Variable Expression: ?=?: pointer to function with parameters pointer to instance of type t (not function type) instance of type t (not function type) returning instance of type t (not function type) (types: lvalue pointer to function with parameters pointer to instance of type t (not function type) instance of type t (not function type) returning instance of type t (not function type) ) Environment: formal type is pointer to instance of type t (not function type) actual type is pointer to double formal type is pointer to instance of type t (not function type) actual type is pointer to instance of type t (not function type) formal type is instance of type t (not function type) actual type is instance of type t (not function type) need assertions: ============= original indexer ===idTable=== ===typeTable=== ===structTable=== ===enumTable=== ===unionTable=== ===contextTable=== ============= new indexer ===idTable=== ===typeTable=== ===structTable=== ===enumTable=== ===unionTable=== ===contextTable=== actual expression: Address of: Variable Expression: y: instance of type t (not function type) --- results are pointer to instance of type t (not function type) converting pointer to instance of type t (not function type) to pointer to instance of type t (not function type) cost is( 0, 0, 0 ) actual expression: Application of Variable Expression: u: pointer to function with parameters instance of type t (not function type) returning instance of type t (not function type) to arguments Variable Expression: the_t: instance of type t (not function type) --- results are instance of type t (not function type) converting instance of type t (not function type) to instance of type t (not function type) cost is( 0, 0, 0 ) Case +++++++++++++ formals are: pointer to instance of type t (not function type) instance of type t (not function type) actuals are: Address of: Variable Expression: y: instance of type t (not function type) Application of Variable Expression: u: pointer to function with parameters instance of type t (not function type) returning instance of type t (not function type) to arguments Variable Expression: the_t: instance of type t (not function type) bindings are: cost of conversion is:( 0, 0, 0 ) alternatives before prune: Cost ( 0, 0, 0 ): Application of Variable Expression: ?=?: pointer to function with parameters pointer to instance of type t (not function type) instance of type t (not function type) returning instance of type t (not function type) to arguments Address of: Variable Expression: y: instance of type t (not function type) Application of Variable Expression: u: pointer to function with parameters instance of type t (not function type) returning instance of type t (not function type) to arguments Variable Expression: the_t: instance of type t (not function type) (types: instance of type t (not function type) ) Environment: there are 1 alternatives before elimination there are 1 alternatives after elimination alternatives before prune: Cost ( 0, 0, 1 ): Cast of: Application of Variable Expression: ?=?: pointer to function with parameters pointer to instance of type t (not function type) instance of type t (not function type) returning instance of type t (not function type) to arguments Address of: Variable Expression: y: instance of type t (not function type) Application of Variable Expression: u: pointer to function with parameters instance of type t (not function type) returning instance of type t (not function type) to arguments Variable Expression: the_t: instance of type t (not function type) to: nothing (types: ) Environment: there are 1 alternatives before elimination there are 1 alternatives after elimination nameExpr is x decl is x: char newExpr is Variable Expression: x: char decl is x: signed int newExpr is Variable Expression: x: signed int alternatives before prune: Cost ( 0, 0, 0 ): Variable Expression: x: char (types: lvalue char ) Environment: Cost ( 0, 0, 0 ): Variable Expression: x: signed int (types: lvalue signed int ) Environment: there are 2 alternatives before elimination there are 2 alternatives after elimination alternatives before prune: Cost ( 0, 0, 0 ): Cast of: Variable Expression: x: char to: char (types: char ) Environment: there are 1 alternatives before elimination there are 1 alternatives after elimination nameExpr is ?=? decl is ?=?: automatically generated inline static function with parameters _dst: pointer to instance of struct __anonymous0 _src: instance of struct __anonymous0 returning instance of struct __anonymous0 with body CompoundStmt Expression Statement: Applying untyped: Name: ?=? ...to: Address of: Member Expression, with field: a: signed int from aggregate: Applying untyped: Name: *? ...to: Variable Expression: _dst: pointer to instance of struct __anonymous0 Member Expression, with field: a: signed int from aggregate: Variable Expression: _src: instance of struct __anonymous0 Expression Statement: Applying untyped: Name: ?=? ...to: Address of: Member Expression, with field: b: double from aggregate: Applying untyped: Name: *? ...to: Variable Expression: _dst: pointer to instance of struct __anonymous0 Member Expression, with field: b: double from aggregate: Variable Expression: _src: instance of struct __anonymous0 Return Statement, returning: Cast of: Variable Expression: _src: instance of struct __anonymous0 to: instance of struct __anonymous0 with environment: Types: Non-types: newExpr is Variable Expression: ?=?: inline static function with parameters _dst: pointer to instance of struct __anonymous0 _src: instance of struct __anonymous0 returning instance of struct __anonymous0 decl is ?=?: automatically generated function with parameters _dst: pointer to instance of type u (not function type) _src: instance of type u (not function type) returning instance of type u (not function type) with body CompoundStmt Return Statement, returning: Applying untyped: Name: ?=? ...to: Cast of: Variable Expression: _dst: pointer to instance of type u (not function type) to: pointer to instance of struct __anonymous0 Cast of: Variable Expression: _src: instance of type u (not function type) to: instance of struct __anonymous0 newExpr is Variable Expression: ?=?: function with parameters _dst: pointer to instance of type u (not function type) _src: instance of type u (not function type) returning instance of type u (not function type) decl is ?=?: automatically generated function with parameters _dst: pointer to instance of type x (not function type) _src: instance of type x (not function type) returning instance of type x (not function type) newExpr is Variable Expression: ?=?: function with parameters _dst: pointer to instance of type x (not function type) _src: instance of type x (not function type) returning instance of type x (not function type) alternatives before prune: Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function with parameters _dst: pointer to instance of struct __anonymous0 _src: instance of struct __anonymous0 returning instance of struct __anonymous0 (types: pointer to function with parameters _dst: pointer to instance of struct __anonymous0 _src: instance of struct __anonymous0 returning instance of struct __anonymous0 ) Environment: Cost ( 0, 0, 0 ): Variable Expression: ?=?: function with parameters _dst: pointer to instance of type u (not function type) _src: instance of type u (not function type) returning instance of type u (not function type) (types: pointer to function with parameters _dst: pointer to instance of type u (not function type) _src: instance of type u (not function type) returning instance of type u (not function type) ) Environment: Cost ( 0, 0, 0 ): Variable Expression: ?=?: function with parameters _dst: pointer to instance of type x (not function type) _src: instance of type x (not function type) returning instance of type x (not function type) (types: pointer to function with parameters _dst: pointer to instance of type x (not function type) _src: instance of type x (not function type) returning instance of type x (not function type) ) Environment: there are 3 alternatives before elimination there are 3 alternatives after elimination nameExpr is z decl is z: char with initializer Simple Initializer: Cast of: Variable Expression: x: char to: char with environment: Types: Non-types: newExpr is Variable Expression: z: char decl is z: double newExpr is Variable Expression: z: double alternatives before prune: Cost ( 0, 0, 0 ): Variable Expression: z: char (types: lvalue char ) Environment: Cost ( 0, 0, 0 ): Variable Expression: z: double (types: lvalue double ) Environment: there are 2 alternatives before elimination there are 2 alternatives after elimination alternatives before prune: Cost ( 0, 0, 0 ): Address of: Variable Expression: z: double (types: pointer to double ) Environment: Cost ( 0, 0, 0 ): Address of: Variable Expression: z: char (types: pointer to char ) Environment: there are 2 alternatives before elimination there are 2 alternatives after elimination findSubExprs Cost ( 0, 0, 0 ): Address of: Variable Expression: z: double (types: pointer to double ) Environment: Cost ( 0, 0, 0 ): Address of: Variable Expression: z: char (types: pointer to char ) Environment: nameExpr is x decl is x: char newExpr is Variable Expression: x: char decl is x: signed int newExpr is Variable Expression: x: signed int alternatives before prune: Cost ( 0, 0, 0 ): Variable Expression: x: char (types: lvalue char ) Environment: Cost ( 0, 0, 0 ): Variable Expression: x: signed int (types: lvalue signed int ) Environment: there are 2 alternatives before elimination there are 2 alternatives after elimination findSubExprs Cost ( 0, 0, 0 ): Variable Expression: x: signed int (types: lvalue signed int ) Environment: Cost ( 0, 0, 0 ): Variable Expression: x: char (types: lvalue char ) Environment: working on alternative: Cost ( 0, 0, 0 ): Variable Expression: ?=?: function with parameters _dst: pointer to instance of type x (not function type) _src: instance of type x (not function type) returning instance of type x (not function type) (types: pointer to function with parameters _dst: pointer to instance of type x (not function type) _src: instance of type x (not function type) returning instance of type x (not function type) ) Environment: formal type is pointer to instance of type x (not function type) actual type is pointer to double formal type is pointer to instance of type x (not function type) actual type is pointer to char formal type is pointer to instance of type x (not function type) actual type is pointer to double formal type is pointer to instance of type x (not function type) actual type is pointer to char working on alternative: Cost ( 0, 0, 0 ): Variable Expression: ?=?: function with parameters _dst: pointer to instance of type u (not function type) _src: instance of type u (not function type) returning instance of type u (not function type) (types: pointer to function with parameters _dst: pointer to instance of type u (not function type) _src: instance of type u (not function type) returning instance of type u (not function type) ) Environment: formal type is pointer to instance of type u (not function type) actual type is pointer to double formal type is pointer to instance of type u (not function type) actual type is pointer to char formal type is pointer to instance of type u (not function type) actual type is pointer to double formal type is pointer to instance of type u (not function type) actual type is pointer to char working on alternative: Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function with parameters _dst: pointer to instance of struct __anonymous0 _src: instance of struct __anonymous0 returning instance of struct __anonymous0 (types: pointer to function with parameters _dst: pointer to instance of struct __anonymous0 _src: instance of struct __anonymous0 returning instance of struct __anonymous0 ) Environment: formal type is pointer to instance of struct __anonymous0 actual type is pointer to double formal type is pointer to instance of struct __anonymous0 actual type is pointer to char formal type is pointer to instance of struct __anonymous0 actual type is pointer to double formal type is pointer to instance of struct __anonymous0 actual type is pointer to char nameExpr is y decl is y: char newExpr is Variable Expression: y: char decl is y: double newExpr is Variable Expression: y: double decl is y: signed int newExpr is Variable Expression: y: signed int alternatives before prune: Cost ( 0, 0, 0 ): Variable Expression: y: char (types: lvalue char ) Environment: Cost ( 0, 0, 0 ): Variable Expression: y: double (types: lvalue double ) Environment: Cost ( 0, 0, 0 ): Variable Expression: y: signed int (types: lvalue signed int ) Environment: there are 3 alternatives before elimination there are 3 alternatives after elimination alternatives before prune: Cost ( 0, 0, 0 ): Cast of: Variable Expression: y: char to: char (types: char ) Environment: there are 1 alternatives before elimination there are 1 alternatives after elimination nameExpr is ?=? decl is ?=?: automatically generated inline static function with parameters _dst: pointer to instance of struct __anonymous0 _src: instance of struct __anonymous0 returning instance of struct __anonymous0 with body CompoundStmt Expression Statement: Applying untyped: Name: ?=? ...to: Address of: Member Expression, with field: a: signed int from aggregate: Applying untyped: Name: *? ...to: Variable Expression: _dst: pointer to instance of struct __anonymous0 Member Expression, with field: a: signed int from aggregate: Variable Expression: _src: instance of struct __anonymous0 Expression Statement: Applying untyped: Name: ?=? ...to: Address of: Member Expression, with field: b: double from aggregate: Applying untyped: Name: *? ...to: Variable Expression: _dst: pointer to instance of struct __anonymous0 Member Expression, with field: b: double from aggregate: Variable Expression: _src: instance of struct __anonymous0 Return Statement, returning: Cast of: Variable Expression: _src: instance of struct __anonymous0 to: instance of struct __anonymous0 with environment: Types: Non-types: newExpr is Variable Expression: ?=?: inline static function with parameters _dst: pointer to instance of struct __anonymous0 _src: instance of struct __anonymous0 returning instance of struct __anonymous0 decl is ?=?: automatically generated function with parameters _dst: pointer to instance of type u (not function type) _src: instance of type u (not function type) returning instance of type u (not function type) with body CompoundStmt Return Statement, returning: Applying untyped: Name: ?=? ...to: Cast of: Variable Expression: _dst: pointer to instance of type u (not function type) to: pointer to instance of struct __anonymous0 Cast of: Variable Expression: _src: instance of type u (not function type) to: instance of struct __anonymous0 newExpr is Variable Expression: ?=?: function with parameters _dst: pointer to instance of type u (not function type) _src: instance of type u (not function type) returning instance of type u (not function type) decl is ?=?: automatically generated function with parameters _dst: pointer to instance of type x (not function type) _src: instance of type x (not function type) returning instance of type x (not function type) newExpr is Variable Expression: ?=?: function with parameters _dst: pointer to instance of type x (not function type) _src: instance of type x (not function type) returning instance of type x (not function type) alternatives before prune: Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function with parameters _dst: pointer to instance of struct __anonymous0 _src: instance of struct __anonymous0 returning instance of struct __anonymous0 (types: pointer to function with parameters _dst: pointer to instance of struct __anonymous0 _src: instance of struct __anonymous0 returning instance of struct __anonymous0 ) Environment: Cost ( 0, 0, 0 ): Variable Expression: ?=?: function with parameters _dst: pointer to instance of type u (not function type) _src: instance of type u (not function type) returning instance of type u (not function type) (types: pointer to function with parameters _dst: pointer to instance of type u (not function type) _src: instance of type u (not function type) returning instance of type u (not function type) ) Environment: Cost ( 0, 0, 0 ): Variable Expression: ?=?: function with parameters _dst: pointer to instance of type x (not function type) _src: instance of type x (not function type) returning instance of type x (not function type) (types: pointer to function with parameters _dst: pointer to instance of type x (not function type) _src: instance of type x (not function type) returning instance of type x (not function type) ) Environment: there are 3 alternatives before elimination there are 3 alternatives after elimination nameExpr is x decl is x: char newExpr is Variable Expression: x: char decl is x: signed int newExpr is Variable Expression: x: signed int alternatives before prune: Cost ( 0, 0, 0 ): Variable Expression: x: char (types: lvalue char ) Environment: Cost ( 0, 0, 0 ): Variable Expression: x: signed int (types: lvalue signed int ) Environment: there are 2 alternatives before elimination there are 2 alternatives after elimination alternatives before prune: Cost ( 0, 0, 0 ): Address of: Variable Expression: x: signed int (types: pointer to signed int ) Environment: Cost ( 0, 0, 0 ): Address of: Variable Expression: x: char (types: pointer to char ) Environment: there are 2 alternatives before elimination there are 2 alternatives after elimination findSubExprs Cost ( 0, 0, 0 ): Address of: Variable Expression: x: signed int (types: pointer to signed int ) Environment: Cost ( 0, 0, 0 ): Address of: Variable Expression: x: char (types: pointer to char ) Environment: nameExpr is y decl is y: char newExpr is Variable Expression: y: char decl is y: double newExpr is Variable Expression: y: double decl is y: signed int newExpr is Variable Expression: y: signed int alternatives before prune: Cost ( 0, 0, 0 ): Variable Expression: y: char (types: lvalue char ) Environment: Cost ( 0, 0, 0 ): Variable Expression: y: double (types: lvalue double ) Environment: Cost ( 0, 0, 0 ): Variable Expression: y: signed int (types: lvalue signed int ) Environment: there are 3 alternatives before elimination there are 3 alternatives after elimination findSubExprs Cost ( 0, 0, 0 ): Variable Expression: y: signed int (types: lvalue signed int ) Environment: Cost ( 0, 0, 0 ): Variable Expression: y: double (types: lvalue double ) Environment: Cost ( 0, 0, 0 ): Variable Expression: y: char (types: lvalue char ) Environment: working on alternative: Cost ( 0, 0, 0 ): Variable Expression: ?=?: function with parameters _dst: pointer to instance of type x (not function type) _src: instance of type x (not function type) returning instance of type x (not function type) (types: pointer to function with parameters _dst: pointer to instance of type x (not function type) _src: instance of type x (not function type) returning instance of type x (not function type) ) Environment: formal type is pointer to instance of type x (not function type) actual type is pointer to signed int formal type is pointer to instance of type x (not function type) actual type is pointer to char formal type is pointer to instance of type x (not function type) actual type is pointer to signed int formal type is pointer to instance of type x (not function type) actual type is pointer to char formal type is pointer to instance of type x (not function type) actual type is pointer to signed int formal type is pointer to instance of type x (not function type) actual type is pointer to char working on alternative: Cost ( 0, 0, 0 ): Variable Expression: ?=?: function with parameters _dst: pointer to instance of type u (not function type) _src: instance of type u (not function type) returning instance of type u (not function type) (types: pointer to function with parameters _dst: pointer to instance of type u (not function type) _src: instance of type u (not function type) returning instance of type u (not function type) ) Environment: formal type is pointer to instance of type u (not function type) actual type is pointer to signed int formal type is pointer to instance of type u (not function type) actual type is pointer to char formal type is pointer to instance of type u (not function type) actual type is pointer to signed int formal type is pointer to instance of type u (not function type) actual type is pointer to char formal type is pointer to instance of type u (not function type) actual type is pointer to signed int formal type is pointer to instance of type u (not function type) actual type is pointer to char working on alternative: Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function with parameters _dst: pointer to instance of struct __anonymous0 _src: instance of struct __anonymous0 returning instance of struct __anonymous0 (types: pointer to function with parameters _dst: pointer to instance of struct __anonymous0 _src: instance of struct __anonymous0 returning instance of struct __anonymous0 ) Environment: formal type is pointer to instance of struct __anonymous0 actual type is pointer to signed int formal type is pointer to instance of struct __anonymous0 actual type is pointer to char formal type is pointer to instance of struct __anonymous0 actual type is pointer to signed int formal type is pointer to instance of struct __anonymous0 actual type is pointer to char formal type is pointer to instance of struct __anonymous0 actual type is pointer to signed int formal type is pointer to instance of struct __anonymous0 actual type is pointer to char nameExpr is y decl is y: char newExpr is Variable Expression: y: char decl is y: double newExpr is Variable Expression: y: double decl is y: signed int newExpr is Variable Expression: y: signed int alternatives before prune: Cost ( 0, 0, 0 ): Variable Expression: y: char (types: lvalue char ) Environment: Cost ( 0, 0, 0 ): Variable Expression: y: double (types: lvalue double ) Environment: Cost ( 0, 0, 0 ): Variable Expression: y: signed int (types: lvalue signed int ) Environment: there are 3 alternatives before elimination there are 3 alternatives after elimination alternatives before prune: Cost ( 0, 0, 0 ): Cast of: Variable Expression: y: char to: char (types: char ) Environment: there are 1 alternatives before elimination there are 1 alternatives after elimination nameExpr is ?=? decl is ?=?: automatically generated inline static function with parameters _dst: pointer to instance of struct __anonymous0 _src: instance of struct __anonymous0 returning instance of struct __anonymous0 with body CompoundStmt Expression Statement: Applying untyped: Name: ?=? ...to: Address of: Member Expression, with field: a: signed int from aggregate: Applying untyped: Name: *? ...to: Variable Expression: _dst: pointer to instance of struct __anonymous0 Member Expression, with field: a: signed int from aggregate: Variable Expression: _src: instance of struct __anonymous0 Expression Statement: Applying untyped: Name: ?=? ...to: Address of: Member Expression, with field: b: double from aggregate: Applying untyped: Name: *? ...to: Variable Expression: _dst: pointer to instance of struct __anonymous0 Member Expression, with field: b: double from aggregate: Variable Expression: _src: instance of struct __anonymous0 Return Statement, returning: Cast of: Variable Expression: _src: instance of struct __anonymous0 to: instance of struct __anonymous0 with environment: Types: Non-types: newExpr is Variable Expression: ?=?: inline static function with parameters _dst: pointer to instance of struct __anonymous0 _src: instance of struct __anonymous0 returning instance of struct __anonymous0 decl is ?=?: automatically generated function with parameters _dst: pointer to instance of type u (not function type) _src: instance of type u (not function type) returning instance of type u (not function type) with body CompoundStmt Return Statement, returning: Applying untyped: Name: ?=? ...to: Cast of: Variable Expression: _dst: pointer to instance of type u (not function type) to: pointer to instance of struct __anonymous0 Cast of: Variable Expression: _src: instance of type u (not function type) to: instance of struct __anonymous0 newExpr is Variable Expression: ?=?: function with parameters _dst: pointer to instance of type u (not function type) _src: instance of type u (not function type) returning instance of type u (not function type) decl is ?=?: automatically generated function with parameters _dst: pointer to instance of type x (not function type) _src: instance of type x (not function type) returning instance of type x (not function type) newExpr is Variable Expression: ?=?: function with parameters _dst: pointer to instance of type x (not function type) _src: instance of type x (not function type) returning instance of type x (not function type) alternatives before prune: Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function with parameters _dst: pointer to instance of struct __anonymous0 _src: instance of struct __anonymous0 returning instance of struct __anonymous0 (types: pointer to function with parameters _dst: pointer to instance of struct __anonymous0 _src: instance of struct __anonymous0 returning instance of struct __anonymous0 ) Environment: Cost ( 0, 0, 0 ): Variable Expression: ?=?: function with parameters _dst: pointer to instance of type u (not function type) _src: instance of type u (not function type) returning instance of type u (not function type) (types: pointer to function with parameters _dst: pointer to instance of type u (not function type) _src: instance of type u (not function type) returning instance of type u (not function type) ) Environment: Cost ( 0, 0, 0 ): Variable Expression: ?=?: function with parameters _dst: pointer to instance of type x (not function type) _src: instance of type x (not function type) returning instance of type x (not function type) (types: pointer to function with parameters _dst: pointer to instance of type x (not function type) _src: instance of type x (not function type) returning instance of type x (not function type) ) Environment: there are 3 alternatives before elimination there are 3 alternatives after elimination nameExpr is q decl is q: forall t: type with assertions ?=?: pointer to function with parameters pointer to instance of type t (not function type) instance of type t (not function type) returning instance of type t (not function type) u: pointer to function with parameters instance of type t (not function type) returning instance of type t (not function type) function with parameters the_t: instance of type t (not function type) returning double with body CompoundStmt Declaration of y: instance of type t (not function type) with initializer Simple Initializer: Cast of: Application of Variable Expression: u: pointer to function with parameters instance of type t (not function type) returning instance of type t (not function type) to arguments Variable Expression: the_t: instance of type t (not function type) to: instance of type t (not function type) with environment: Types: Non-types: Expression Statement: Application of Variable Expression: ?=?: pointer to function with parameters pointer to instance of type t (not function type) instance of type t (not function type) returning instance of type t (not function type) to arguments Address of: Variable Expression: y: instance of type t (not function type) Application of Variable Expression: u: pointer to function with parameters instance of type t (not function type) returning instance of type t (not function type) to arguments Variable Expression: the_t: instance of type t (not function type) with environment: Types: Non-types: newExpr is Variable Expression: q: forall t: type with assertions ?=?: pointer to function with parameters pointer to instance of type t (not function type) instance of type t (not function type) returning instance of type t (not function type) u: pointer to function with parameters instance of type t (not function type) returning instance of type t (not function type) function with parameters the_t: instance of type t (not function type) returning double decl is q: char with initializer Simple Initializer: Cast of: Variable Expression: y: char to: char with environment: Types: Non-types: newExpr is Variable Expression: q: char decl is q: double newExpr is Variable Expression: q: double alternatives before prune: Cost ( 0, 0, 0 ): Variable Expression: q: forall t: type with assertions ?=?: pointer to function with parameters pointer to instance of type t (not function type) instance of type t (not function type) returning instance of type t (not function type) u: pointer to function with parameters instance of type t (not function type) returning instance of type t (not function type) function with parameters the_t: instance of type t (not function type) returning double (types: forall _0_t: type with assertions ?=?: pointer to function with parameters pointer to instance of type _0_t (not function type) instance of type _0_t (not function type) returning instance of type _0_t (not function type) u: pointer to function with parameters instance of type _0_t (not function type) returning instance of type _0_t (not function type) lvalue function with parameters the_t: instance of type _0_t (not function type) returning double ) Environment: Cost ( 0, 0, 0 ): Variable Expression: q: char (types: lvalue char ) Environment: Cost ( 0, 0, 0 ): Variable Expression: q: double (types: lvalue double ) Environment: there are 3 alternatives before elimination there are 3 alternatives after elimination alternatives before prune: Cost ( 0, 0, 0 ): Address of: Variable Expression: q: double (types: pointer to double ) Environment: Cost ( 0, 0, 0 ): Address of: Variable Expression: q: char (types: pointer to char ) Environment: Cost ( 0, 0, 0 ): Address of: Variable Expression: q: forall t: type with assertions ?=?: pointer to function with parameters pointer to instance of type t (not function type) instance of type t (not function type) returning instance of type t (not function type) u: pointer to function with parameters instance of type t (not function type) returning instance of type t (not function type) function with parameters the_t: instance of type t (not function type) returning double (types: pointer to forall _0_t: type with assertions ?=?: pointer to function with parameters pointer to instance of type _0_t (not function type) instance of type _0_t (not function type) returning instance of type _0_t (not function type) u: pointer to function with parameters instance of type _0_t (not function type) returning instance of type _0_t (not function type) function with parameters the_t: instance of type _0_t (not function type) returning double ) Environment: there are 3 alternatives before elimination there are 3 alternatives after elimination findSubExprs Cost ( 0, 0, 0 ): Address of: Variable Expression: q: double (types: pointer to double ) Environment: Cost ( 0, 0, 0 ): Address of: Variable Expression: q: char (types: pointer to char ) Environment: Cost ( 0, 0, 0 ): Address of: Variable Expression: q: forall t: type with assertions ?=?: pointer to function with parameters pointer to instance of type t (not function type) instance of type t (not function type) returning instance of type t (not function type) u: pointer to function with parameters instance of type t (not function type) returning instance of type t (not function type) function with parameters the_t: instance of type t (not function type) returning double (types: pointer to forall _0_t: type with assertions ?=?: pointer to function with parameters pointer to instance of type _0_t (not function type) instance of type _0_t (not function type) returning instance of type _0_t (not function type) u: pointer to function with parameters instance of type _0_t (not function type) returning instance of type _0_t (not function type) function with parameters the_t: instance of type _0_t (not function type) returning double ) Environment: nameExpr is y decl is y: char newExpr is Variable Expression: y: char decl is y: double newExpr is Variable Expression: y: double decl is y: signed int newExpr is Variable Expression: y: signed int alternatives before prune: Cost ( 0, 0, 0 ): Variable Expression: y: char (types: lvalue char ) Environment: Cost ( 0, 0, 0 ): Variable Expression: y: double (types: lvalue double ) Environment: Cost ( 0, 0, 0 ): Variable Expression: y: signed int (types: lvalue signed int ) Environment: there are 3 alternatives before elimination there are 3 alternatives after elimination findSubExprs Cost ( 0, 0, 0 ): Variable Expression: y: signed int (types: lvalue signed int ) Environment: Cost ( 0, 0, 0 ): Variable Expression: y: double (types: lvalue double ) Environment: Cost ( 0, 0, 0 ): Variable Expression: y: char (types: lvalue char ) Environment: working on alternative: Cost ( 0, 0, 0 ): Variable Expression: ?=?: function with parameters _dst: pointer to instance of type x (not function type) _src: instance of type x (not function type) returning instance of type x (not function type) (types: pointer to function with parameters _dst: pointer to instance of type x (not function type) _src: instance of type x (not function type) returning instance of type x (not function type) ) Environment: formal type is pointer to instance of type x (not function type) actual type is pointer to double formal type is pointer to instance of type x (not function type) actual type is pointer to char formal type is pointer to instance of type x (not function type) actual type is pointer to forall _0_t: type with assertions ?=?: pointer to function with parameters pointer to instance of type _0_t (not function type) instance of type _0_t (not function type) returning instance of type _0_t (not function type) u: pointer to function with parameters instance of type _0_t (not function type) returning instance of type _0_t (not function type) function with parameters the_t: instance of type _0_t (not function type) returning double formal type is pointer to instance of type x (not function type) actual type is pointer to double formal type is pointer to instance of type x (not function type) actual type is pointer to char formal type is pointer to instance of type x (not function type) actual type is pointer to forall _0_t: type with assertions ?=?: pointer to function with parameters pointer to instance of type _0_t (not function type) instance of type _0_t (not function type) returning instance of type _0_t (not function type) u: pointer to function with parameters instance of type _0_t (not function type) returning instance of type _0_t (not function type) function with parameters the_t: instance of type _0_t (not function type) returning double formal type is pointer to instance of type x (not function type) actual type is pointer to double formal type is pointer to instance of type x (not function type) actual type is pointer to char formal type is pointer to instance of type x (not function type) actual type is pointer to forall _0_t: type with assertions ?=?: pointer to function with parameters pointer to instance of type _0_t (not function type) instance of type _0_t (not function type) returning instance of type _0_t (not function type) u: pointer to function with parameters instance of type _0_t (not function type) returning instance of type _0_t (not function type) function with parameters the_t: instance of type _0_t (not function type) returning double working on alternative: Cost ( 0, 0, 0 ): Variable Expression: ?=?: function with parameters _dst: pointer to instance of type u (not function type) _src: instance of type u (not function type) returning instance of type u (not function type) (types: pointer to function with parameters _dst: pointer to instance of type u (not function type) _src: instance of type u (not function type) returning instance of type u (not function type) ) Environment: formal type is pointer to instance of type u (not function type) actual type is pointer to double formal type is pointer to instance of type u (not function type) actual type is pointer to char formal type is pointer to instance of type u (not function type) actual type is pointer to forall _0_t: type with assertions ?=?: pointer to function with parameters pointer to instance of type _0_t (not function type) instance of type _0_t (not function type) returning instance of type _0_t (not function type) u: pointer to function with parameters instance of type _0_t (not function type) returning instance of type _0_t (not function type) function with parameters the_t: instance of type _0_t (not function type) returning double formal type is pointer to instance of type u (not function type) actual type is pointer to double formal type is pointer to instance of type u (not function type) actual type is pointer to char formal type is pointer to instance of type u (not function type) actual type is pointer to forall _0_t: type with assertions ?=?: pointer to function with parameters pointer to instance of type _0_t (not function type) instance of type _0_t (not function type) returning instance of type _0_t (not function type) u: pointer to function with parameters instance of type _0_t (not function type) returning instance of type _0_t (not function type) function with parameters the_t: instance of type _0_t (not function type) returning double formal type is pointer to instance of type u (not function type) actual type is pointer to double formal type is pointer to instance of type u (not function type) actual type is pointer to char formal type is pointer to instance of type u (not function type) actual type is pointer to forall _0_t: type with assertions ?=?: pointer to function with parameters pointer to instance of type _0_t (not function type) instance of type _0_t (not function type) returning instance of type _0_t (not function type) u: pointer to function with parameters instance of type _0_t (not function type) returning instance of type _0_t (not function type) function with parameters the_t: instance of type _0_t (not function type) returning double working on alternative: Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function with parameters _dst: pointer to instance of struct __anonymous0 _src: instance of struct __anonymous0 returning instance of struct __anonymous0 (types: pointer to function with parameters _dst: pointer to instance of struct __anonymous0 _src: instance of struct __anonymous0 returning instance of struct __anonymous0 ) Environment: formal type is pointer to instance of struct __anonymous0 actual type is pointer to double formal type is pointer to instance of struct __anonymous0 actual type is pointer to char formal type is pointer to instance of struct __anonymous0 actual type is pointer to forall _0_t: type with assertions ?=?: pointer to function with parameters pointer to instance of type _0_t (not function type) instance of type _0_t (not function type) returning instance of type _0_t (not function type) u: pointer to function with parameters instance of type _0_t (not function type) returning instance of type _0_t (not function type) function with parameters the_t: instance of type _0_t (not function type) returning double formal type is pointer to instance of struct __anonymous0 actual type is pointer to double formal type is pointer to instance of struct __anonymous0 actual type is pointer to char formal type is pointer to instance of struct __anonymous0 actual type is pointer to forall _0_t: type with assertions ?=?: pointer to function with parameters pointer to instance of type _0_t (not function type) instance of type _0_t (not function type) returning instance of type _0_t (not function type) u: pointer to function with parameters instance of type _0_t (not function type) returning instance of type _0_t (not function type) function with parameters the_t: instance of type _0_t (not function type) returning double formal type is pointer to instance of struct __anonymous0 actual type is pointer to double formal type is pointer to instance of struct __anonymous0 actual type is pointer to char formal type is pointer to instance of struct __anonymous0 actual type is pointer to forall _0_t: type with assertions ?=?: pointer to function with parameters pointer to instance of type _0_t (not function type) instance of type _0_t (not function type) returning instance of type _0_t (not function type) u: pointer to function with parameters instance of type _0_t (not function type) returning instance of type _0_t (not function type) function with parameters the_t: instance of type _0_t (not function type) returning double nameExpr is some_func nameExpr is i decl is i: signed int newExpr is Variable Expression: i: signed int alternatives before prune: Cost ( 0, 0, 0 ): Variable Expression: i: signed int (types: lvalue signed int ) Environment: there are 1 alternatives before elimination there are 1 alternatives after elimination nameExpr is q decl is q: forall t: type with assertions ?=?: pointer to function with parameters pointer to instance of type t (not function type) instance of type t (not function type) returning instance of type t (not function type) u: pointer to function with parameters instance of type t (not function type) returning instance of type t (not function type) function with parameters the_t: instance of type t (not function type) returning double with body CompoundStmt Declaration of y: instance of type t (not function type) with initializer Simple Initializer: Cast of: Application of Variable Expression: u: pointer to function with parameters instance of type t (not function type) returning instance of type t (not function type) to arguments Variable Expression: the_t: instance of type t (not function type) to: instance of type t (not function type) with environment: Types: Non-types: Expression Statement: Application of Variable Expression: ?=?: pointer to function with parameters pointer to instance of type t (not function type) instance of type t (not function type) returning instance of type t (not function type) to arguments Address of: Variable Expression: y: instance of type t (not function type) Application of Variable Expression: u: pointer to function with parameters instance of type t (not function type) returning instance of type t (not function type) to arguments Variable Expression: the_t: instance of type t (not function type) with environment: Types: Non-types: newExpr is Variable Expression: q: forall t: type with assertions ?=?: pointer to function with parameters pointer to instance of type t (not function type) instance of type t (not function type) returning instance of type t (not function type) u: pointer to function with parameters instance of type t (not function type) returning instance of type t (not function type) function with parameters the_t: instance of type t (not function type) returning double decl is q: function accepting unspecified arguments returning double with parameter names i with parameter declarations i: signed int with body CompoundStmt Switch on condition: Variable Expression: i: signed int with environment: Types: Non-types: Case Name: 0 Return Statement, returning: Name: q Default Return Statement, returning: Name: i newExpr is Variable Expression: q: function accepting unspecified arguments returning double decl is q: char with initializer Simple Initializer: Cast of: Variable Expression: y: char to: char with environment: Types: Non-types: newExpr is Variable Expression: q: char decl is q: double newExpr is Variable Expression: q: double alternatives before prune: Cost ( 0, 0, 0 ): Variable Expression: q: forall t: type with assertions ?=?: pointer to function with parameters pointer to instance of type t (not function type) instance of type t (not function type) returning instance of type t (not function type) u: pointer to function with parameters instance of type t (not function type) returning instance of type t (not function type) function with parameters the_t: instance of type t (not function type) returning double (types: pointer to forall _0_t: type with assertions ?=?: pointer to function with parameters pointer to instance of type _0_t (not function type) instance of type _0_t (not function type) returning instance of type _0_t (not function type) u: pointer to function with parameters instance of type _0_t (not function type) returning instance of type _0_t (not function type) function with parameters the_t: instance of type _0_t (not function type) returning double ) Environment: Cost ( 0, 0, 0 ): Variable Expression: q: function accepting unspecified arguments returning double (types: pointer to function accepting unspecified arguments returning double ) Environment: Cost ( 0, 0, 0 ): Variable Expression: q: char (types: lvalue char ) Environment: Cost ( 0, 0, 0 ): Variable Expression: q: double (types: lvalue double ) Environment: there are 4 alternatives before elimination there are 4 alternatives after elimination alternatives before prune: Cost ( 0, 0, 0 ): Cast of: Variable Expression: q: double to: double (types: double ) Environment: there are 1 alternatives before elimination there are 1 alternatives after elimination nameExpr is i decl is i: signed int newExpr is Variable Expression: i: signed int alternatives before prune: Cost ( 0, 0, 0 ): Variable Expression: i: signed int (types: lvalue signed int ) Environment: there are 1 alternatives before elimination there are 1 alternatives after elimination alternatives before prune: Cost ( 0, 0, 6 ): Cast of: Variable Expression: i: signed int to: double (types: double ) Environment: there are 1 alternatives before elimination there are 1 alternatives after elimination Error: No reasonable alternatives for expression Applying untyped: Name: ?=? ...to: Address of: Member Expression, with field: a: signed int from aggregate: Applying untyped: Name: *? ...to: Variable Expression: _dst: pointer to instance of struct __anonymous0 Member Expression, with field: a: signed int from aggregate: Variable Expression: _src: instance of struct __anonymous0 Error: No reasonable alternatives for expression Applying untyped: Name: ?=? ...to: Address of: Member Expression, with field: b: double from aggregate: Applying untyped: Name: *? ...to: Variable Expression: _dst: pointer to instance of struct __anonymous0 Member Expression, with field: b: double from aggregate: Variable Expression: _src: instance of struct __anonymous0 Error: No reasonable alternatives for expression Cast of: Variable Expression: _dst: pointer to instance of type u (not function type) to: pointer to instance of struct __anonymous0 Error: No reasonable alternatives for expression Cast of: Name: y to: instance of type u (not function type) Error: No reasonable alternatives for expression Name: u Error: No reasonable alternatives for expression Name: u Error: No reasonable alternatives for expression Name: u Error: No reasonable alternatives for expression Applying untyped: Name: ?=? ...to: Address of: Name: z Name: x Error: No reasonable alternatives for expression Applying untyped: Name: ?=? ...to: Address of: Name: x Name: y Error: No reasonable alternatives for expression Applying untyped: Name: ?=? ...to: Address of: Name: q Name: y Error: No reasonable alternatives for expression Name: some_func