Skip to content

Add mem adds too many mems #179

@NeuralCoder3

Description

@NeuralCoder3

The add_mem pass adds unnecessary mems in nested argument tuples but not in the functions:

.con tup_pb_5577562 _5577572::[tup_s_5577574::[_5577575: .Idx 4294967296, _5577579: .Idx 4294967296], tup_ret_cont_5577584: .Cn [%mem.M, %mem.Ptr (.Idx 4294967296, 0)]]
(readable: tup_pb: (Int*Int)*Cn (mem*Ptr(Int)))
becomes
[%mem.M, «2; .Idx 4294967296», .Cn [%mem.M, %mem.Ptr (.Idx 4294967296, 0)]]
(mem*Int²*Cn(mem*Ptr(Int)))
and the following error occurs:

<unknown location>: error: cannot pass argument 
  '(_2442813, _2442785, _2442643)' of type 
  '[%mem.M, [%mem.M, .Idx 4294967296, .Idx 4294967296], .Cn [%mem.M, %mem.Ptr (.Idx 4294967296, 0)]]' to 
  'tup_pb_5577562_reshape_2442834' of domain 
  '[%mem.M, «2; .Idx 4294967296», .Cn [%mem.M, %mem.Ptr (.Idx 4294967296, 0)]]'

The pass correctly adds the memory _2442813 in the outer tuple but also adds an additional memory in the inner tuple.

File: lit/mem/closure/out_of_nothing2_simpl.thorin in ad_ptr_merge.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions