-
Notifications
You must be signed in to change notification settings - Fork 105
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[CIR][CodeGen] initial support for dynamic_cast #426
Conversation
@lanza just rebased and this has the side effect of breaking GH PR workflow, making it impossible to review, apologies. Please rebase! |
This patch introduces CIR CodeGen support for dynamic_cast. As an initial step, this patch only adds support for cases where the destination type is not void*. Support for dynamic_cast to void* will be added in future patches.
@bcardosolopes Rebased. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for adding dynamic_cast support this is pretty cool and for your patience. Only few minor comments to address and it should be good to go!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This looks good, one one last minor changed needed (will pre-approve and merge once it's done)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Amazing, LGTM
This patch adds CIRGen for downcasting a pointer to the complete object through `dynamic_cast<void *>`. Together with #426 , the full functionality of `dynamic_cast` should be supported in CIRGen after this PR merges.
In #426 we confirmed that CIR needs a `cir.unreachable` operation to mark unreachable program points [(discussion)](#426 (comment)). This PR adds it.
This PR introduces CIR CodeGen support for `dynamic_cast`. The full feature set of `dynamic_cast` is not fully implemented in this PR as it's already pretty large. This PR only include support for downcasting and sidecasting a pointer or reference. `dynamic_cast<void *>` is not yet implemented.
This patch adds CIRGen for downcasting a pointer to the complete object through `dynamic_cast<void *>`. Together with #426 , the full functionality of `dynamic_cast` should be supported in CIRGen after this PR merges.
In #426 we confirmed that CIR needs a `cir.unreachable` operation to mark unreachable program points [(discussion)](#426 (comment)). This PR adds it.
This PR introduces CIR CodeGen support for `dynamic_cast`. The full feature set of `dynamic_cast` is not fully implemented in this PR as it's already pretty large. This PR only include support for downcasting and sidecasting a pointer or reference. `dynamic_cast<void *>` is not yet implemented.
This patch adds CIRGen for downcasting a pointer to the complete object through `dynamic_cast<void *>`. Together with llvm#426 , the full functionality of `dynamic_cast` should be supported in CIRGen after this PR merges.
In llvm#426 we confirmed that CIR needs a `cir.unreachable` operation to mark unreachable program points [(discussion)](llvm#426 (comment)). This PR adds it.
This PR introduces CIR CodeGen support for `dynamic_cast`. The full feature set of `dynamic_cast` is not fully implemented in this PR as it's already pretty large. This PR only include support for downcasting and sidecasting a pointer or reference. `dynamic_cast<void *>` is not yet implemented.
This patch adds CIRGen for downcasting a pointer to the complete object through `dynamic_cast<void *>`. Together with #426 , the full functionality of `dynamic_cast` should be supported in CIRGen after this PR merges.
In #426 we confirmed that CIR needs a `cir.unreachable` operation to mark unreachable program points [(discussion)](#426 (comment)). This PR adds it.
This PR introduces CIR CodeGen support for `dynamic_cast`. The full feature set of `dynamic_cast` is not fully implemented in this PR as it's already pretty large. This PR only include support for downcasting and sidecasting a pointer or reference. `dynamic_cast<void *>` is not yet implemented.
This patch adds CIRGen for downcasting a pointer to the complete object through `dynamic_cast<void *>`. Together with #426 , the full functionality of `dynamic_cast` should be supported in CIRGen after this PR merges.
In #426 we confirmed that CIR needs a `cir.unreachable` operation to mark unreachable program points [(discussion)](#426 (comment)). This PR adds it.
This PR introduces CIR CodeGen support for `dynamic_cast`. The full feature set of `dynamic_cast` is not fully implemented in this PR as it's already pretty large. This PR only include support for downcasting and sidecasting a pointer or reference. `dynamic_cast<void *>` is not yet implemented.
This patch adds CIRGen for downcasting a pointer to the complete object through `dynamic_cast<void *>`. Together with llvm#426 , the full functionality of `dynamic_cast` should be supported in CIRGen after this PR merges.
In llvm#426 we confirmed that CIR needs a `cir.unreachable` operation to mark unreachable program points [(discussion)](llvm#426 (comment)). This PR adds it.
This PR introduces CIR CodeGen support for `dynamic_cast`. The full feature set of `dynamic_cast` is not fully implemented in this PR as it's already pretty large. This PR only include support for downcasting and sidecasting a pointer or reference. `dynamic_cast<void *>` is not yet implemented.
This patch adds CIRGen for downcasting a pointer to the complete object through `dynamic_cast<void *>`. Together with #426 , the full functionality of `dynamic_cast` should be supported in CIRGen after this PR merges.
In #426 we confirmed that CIR needs a `cir.unreachable` operation to mark unreachable program points [(discussion)](#426 (comment)). This PR adds it.
In llvm#426 we confirmed that CIR needs a `cir.unreachable` operation to mark unreachable program points [(discussion)](llvm/clangir#426 (comment)). This PR adds it.
This PR introduces CIR CodeGen support for `dynamic_cast`. The full feature set of `dynamic_cast` is not fully implemented in this PR as it's already pretty large. This PR only include support for downcasting and sidecasting a pointer or reference. `dynamic_cast<void *>` is not yet implemented.
This patch adds CIRGen for downcasting a pointer to the complete object through `dynamic_cast<void *>`. Together with llvm#426 , the full functionality of `dynamic_cast` should be supported in CIRGen after this PR merges.
This PR introduces CIR CodeGen support for `dynamic_cast`. The full feature set of `dynamic_cast` is not fully implemented in this PR as it's already pretty large. This PR only include support for downcasting and sidecasting a pointer or reference. `dynamic_cast<void *>` is not yet implemented.
This patch adds CIRGen for downcasting a pointer to the complete object through `dynamic_cast<void *>`. Together with llvm#426 , the full functionality of `dynamic_cast` should be supported in CIRGen after this PR merges.
In llvm#426 we confirmed that CIR needs a `cir.unreachable` operation to mark unreachable program points [(discussion)](llvm#426 (comment)). This PR adds it.
This PR introduces CIR CodeGen support for `dynamic_cast`. The full feature set of `dynamic_cast` is not fully implemented in this PR as it's already pretty large. This PR only include support for downcasting and sidecasting a pointer or reference. `dynamic_cast<void *>` is not yet implemented.
This patch adds CIRGen for downcasting a pointer to the complete object through `dynamic_cast<void *>`. Together with llvm#426 , the full functionality of `dynamic_cast` should be supported in CIRGen after this PR merges.
In llvm#426 we confirmed that CIR needs a `cir.unreachable` operation to mark unreachable program points [(discussion)](llvm#426 (comment)). This PR adds it.
This PR introduces CIR CodeGen support for `dynamic_cast`. The full feature set of `dynamic_cast` is not fully implemented in this PR as it's already pretty large. This PR only include support for downcasting and sidecasting a pointer or reference. `dynamic_cast<void *>` is not yet implemented.
This patch adds CIRGen for downcasting a pointer to the complete object through `dynamic_cast<void *>`. Together with #426 , the full functionality of `dynamic_cast` should be supported in CIRGen after this PR merges.
In #426 we confirmed that CIR needs a `cir.unreachable` operation to mark unreachable program points [(discussion)](#426 (comment)). This PR adds it.
This PR introduces CIR CodeGen support for
dynamic_cast
.The full feature set of
dynamic_cast
is not fully implemented in this PR as it's already pretty large. This PR only include support for downcasting and sidecasting a pointer or reference.dynamic_cast<void *>
is not yet implemented.