You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Right now CIRGen mostly uses direct lowering (1 to 1 correspondence between C/C++ and IR), this is not how things are expected to work, since the LLVM emitted is not ABI compatible with what traditional LLVM codegen does, nor matches what ABI specs expect.
The current plan is to handle all ABI logic before we lower down to LLVM, these are the high level items needed in order to implement this:
Add cir.call support for holding attributes for each param.
In CIRGen, add ABI attributes that represent how these params need to be broken down in a later passes.
Add a new pass or teach LoweringPrepare how to break the params based on each param attributes
Can we close this out now given how much of ABI lowering has landed, or are there still TODO items here? If there's still things to do, it might be better to open specific issues for those instead.
Right now CIRGen mostly uses direct lowering (1 to 1 correspondence between C/C++ and IR), this is not how things are expected to work, since the LLVM emitted is not ABI compatible with what traditional LLVM codegen does, nor matches what ABI specs expect.
The current plan is to handle all ABI logic before we lower down to LLVM, these are the high level items needed in order to implement this:
(cc: @sitio-couto @sommerlukas)
The text was updated successfully, but these errors were encountered: