Skip to content
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][CIRGen] Partially support statement expressions return values #314

Merged
merged 8 commits into from
Jan 10, 2024

Conversation

sitio-couto
Copy link
Collaborator

@sitio-couto sitio-couto commented Nov 15, 2023

Stack from ghstack (oldest at bottom):

Adds support for GCC statement expressions return values as well as
StmtExpr LValue emissions.

To simplify the lowering process, the scope return value is not used.
Instead, a temporary allocation is created on the parent scope where the
return value is stored. For classes, a second scope is created around
this temporary allocation to ensure any destructors are called.

This does not implement the full semantics of statement expressions.

Adds support for GCC statement expressions return values by leveraging
the `cir.scope` operation return value and aggregate copies.

This does not implement the full semantics of statement expressions.

[ghstack-poisoned]
sitio-couto added a commit that referenced this pull request Nov 15, 2023
Adds support for GCC statement expressions return values by leveraging
the `cir.scope` operation return value and aggregate copies.

This does not implement the full semantics of statement expressions.

ghstack-source-id: 59cb541c953907bfa4c645e5f9ec8ac36908fd46
Pull Request resolved: #314
bcardosolopes pushed a commit that referenced this pull request Nov 17, 2023
…310)

Stack from [ghstack](https://github.com/ezyang/ghstack) (oldest at
bottom):
* #314
* #313
* #312
* #311
* __->__ #310

The `shouldPrintTerm` and `checkBlockTerminator` were replaced in favor
of `omitRegionTerm` and `ensureRegionTerm` respectively. The first is
essentially the same method but simplified. The latter was refactored to
do only two things: check if the terminator omission of a region is
valid and, if so, insert the omitted terminator into the region.

The simplifications mostly leverage the fact that we only omit empty
yield values in a single-block region.
…rn values"

Adds support for GCC statement expressions return values by leveraging
the `cir.scope` operation return value and aggregate copies.

This does not implement the full semantics of statement expressions.

[ghstack-poisoned]
sitio-couto added a commit that referenced this pull request Nov 17, 2023
Adds support for GCC statement expressions return values by leveraging
the `cir.scope` operation return value and aggregate copies.

This does not implement the full semantics of statement expressions.

ghstack-source-id: 4baa1f9e7119e9813e790234145a18f2cf14142f
Pull Request resolved: #314
…rn values"

Adds support for GCC statement expressions return values by leveraging
the `cir.scope` operation return value and aggregate copies.

This does not implement the full semantics of statement expressions.

[ghstack-poisoned]
sitio-couto added a commit that referenced this pull request Nov 17, 2023
Adds support for GCC statement expressions return values by leveraging
the `cir.scope` operation return value and aggregate copies.

This does not implement the full semantics of statement expressions.

ghstack-source-id: 4baa1f9e7119e9813e790234145a18f2cf14142f
Pull Request resolved: #314
…rn values"

Adds support for GCC statement expressions return values by leveraging
the `cir.scope` operation return value and aggregate copies.

This does not implement the full semantics of statement expressions.

[ghstack-poisoned]
sitio-couto added a commit that referenced this pull request Nov 17, 2023
Adds support for GCC statement expressions return values by leveraging
the `cir.scope` operation return value and aggregate copies.

This does not implement the full semantics of statement expressions.

ghstack-source-id: 4baa1f9e7119e9813e790234145a18f2cf14142f
Pull Request resolved: #314
Copy link
Member

@bcardosolopes bcardosolopes left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for adding this, pretty cool! Some discussion points follow.

…rn values"

Adds support for GCC statement expressions return values by leveraging
the `cir.scope` operation return value and aggregate copies.

This does not implement the full semantics of statement expressions.

[ghstack-poisoned]
sitio-couto added a commit that referenced this pull request Nov 22, 2023
Adds support for GCC statement expressions return values by leveraging
the `cir.scope` operation return value and aggregate copies.

This does not implement the full semantics of statement expressions.

ghstack-source-id: 57a10677f546f3d4cbc07889baabdfe9dae23810
Pull Request resolved: #314
@sitio-couto
Copy link
Collaborator Author

@bcardosolopes applied and answered.

Copy link
Member

@bcardosolopes bcardosolopes left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One minor change and this is good!

…rn values"

Adds support for GCC statement expressions return values by leveraging
the `cir.scope` operation return value and aggregate copies.

This does not implement the full semantics of statement expressions.

[ghstack-poisoned]
sitio-couto added a commit that referenced this pull request Jan 9, 2024
Adds support for GCC statement expressions return values as well as
StmtExpr LValue emissions.

To simplify the lowering process, the scope return value is not used.
Instead, a temporary allocation is created on the parent scope where the
return value is stored. For classes, a second scope is created around
this temporary allocation to ensure any destructors are called.

This does not implement the full semantics of statement expressions.

ghstack-source-id: daf5fa8dc331919e12b6b54518a181f2d3a92bba
Pull Request resolved: #314
…rn values"

Adds support for GCC statement expressions return values by leveraging
the `cir.scope` operation return value and aggregate copies.

This does not implement the full semantics of statement expressions.

[ghstack-poisoned]
sitio-couto added a commit that referenced this pull request Jan 9, 2024
Adds support for GCC statement expressions return values as well as
StmtExpr LValue emissions.

To simplify the lowering process, the scope return value is not used.
Instead, a temporary allocation is created on the parent scope where the
return value is stored. For classes, a second scope is created around
this temporary allocation to ensure any destructors are called.

This does not implement the full semantics of statement expressions.

ghstack-source-id: b5a42466e749861e9610d3a70da0361d2755b1b8
Pull Request resolved: #314
Copy link
Member

@bcardosolopes bcardosolopes left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM! Will let you merge as to not mess up with the stack tool

…rn values"

Adds support for GCC statement expressions return values by leveraging
the `cir.scope` operation return value and aggregate copies.

This does not implement the full semantics of statement expressions.

[ghstack-poisoned]
sitio-couto added a commit that referenced this pull request Jan 10, 2024
Adds support for GCC statement expressions return values as well as
StmtExpr LValue emissions.

To simplify the lowering process, the scope return value is not used.
Instead, a temporary allocation is created on the parent scope where the
return value is stored. For classes, a second scope is created around
this temporary allocation to ensure any destructors are called.

This does not implement the full semantics of statement expressions.

ghstack-source-id: 64e03fc3df45975590ddbcab44959c2b49601101
Pull Request resolved: #314
@sitio-couto sitio-couto merged commit c9173a5 into gh/sitio-couto/5/base Jan 10, 2024
3 checks passed
sitio-couto added a commit that referenced this pull request Jan 10, 2024
Adds support for GCC statement expressions return values as well as
StmtExpr LValue emissions.

To simplify the lowering process, the scope return value is not used.
Instead, a temporary allocation is created on the parent scope where the
return value is stored. For classes, a second scope is created around
this temporary allocation to ensure any destructors are called.

This does not implement the full semantics of statement expressions.

ghstack-source-id: 64e03fc3df45975590ddbcab44959c2b49601101
Pull Request resolved: #314
@sitio-couto sitio-couto deleted the gh/sitio-couto/5/head branch January 10, 2024 23:11
lanza pushed a commit that referenced this pull request Jan 29, 2024
Adds support for GCC statement expressions return values as well as
StmtExpr LValue emissions.

To simplify the lowering process, the scope return value is not used.
Instead, a temporary allocation is created on the parent scope where the
return value is stored. For classes, a second scope is created around
this temporary allocation to ensure any destructors are called.

This does not implement the full semantics of statement expressions.

ghstack-source-id: 64e03fc3df45975590ddbcab44959c2b49601101
Pull Request resolved: #314
lanza pushed a commit that referenced this pull request Mar 23, 2024
Adds support for GCC statement expressions return values as well as
StmtExpr LValue emissions.

To simplify the lowering process, the scope return value is not used.
Instead, a temporary allocation is created on the parent scope where the
return value is stored. For classes, a second scope is created around
this temporary allocation to ensure any destructors are called.

This does not implement the full semantics of statement expressions.

ghstack-source-id: 64e03fc3df45975590ddbcab44959c2b49601101
Pull Request resolved: #314
eZWALT pushed a commit to eZWALT/clangir that referenced this pull request Mar 24, 2024
Adds support for GCC statement expressions return values as well as
StmtExpr LValue emissions.

To simplify the lowering process, the scope return value is not used.
Instead, a temporary allocation is created on the parent scope where the
return value is stored. For classes, a second scope is created around
this temporary allocation to ensure any destructors are called.

This does not implement the full semantics of statement expressions.

ghstack-source-id: 64e03fc3df45975590ddbcab44959c2b49601101
Pull Request resolved: llvm#314
lanza pushed a commit that referenced this pull request Apr 29, 2024
Adds support for GCC statement expressions return values as well as
StmtExpr LValue emissions.

To simplify the lowering process, the scope return value is not used.
Instead, a temporary allocation is created on the parent scope where the
return value is stored. For classes, a second scope is created around
this temporary allocation to ensure any destructors are called.

This does not implement the full semantics of statement expressions.

ghstack-source-id: 64e03fc3df45975590ddbcab44959c2b49601101
Pull Request resolved: #314
lanza pushed a commit that referenced this pull request Apr 29, 2024
Adds support for GCC statement expressions return values as well as
StmtExpr LValue emissions.

To simplify the lowering process, the scope return value is not used.
Instead, a temporary allocation is created on the parent scope where the
return value is stored. For classes, a second scope is created around
this temporary allocation to ensure any destructors are called.

This does not implement the full semantics of statement expressions.

ghstack-source-id: 64e03fc3df45975590ddbcab44959c2b49601101
Pull Request resolved: #314
eZWALT pushed a commit to eZWALT/clangir that referenced this pull request Apr 29, 2024
Adds support for GCC statement expressions return values as well as
StmtExpr LValue emissions.

To simplify the lowering process, the scope return value is not used.
Instead, a temporary allocation is created on the parent scope where the
return value is stored. For classes, a second scope is created around
this temporary allocation to ensure any destructors are called.

This does not implement the full semantics of statement expressions.

ghstack-source-id: 64e03fc3df45975590ddbcab44959c2b49601101
Pull Request resolved: llvm#314
lanza pushed a commit that referenced this pull request Apr 29, 2024
Adds support for GCC statement expressions return values as well as
StmtExpr LValue emissions.

To simplify the lowering process, the scope return value is not used.
Instead, a temporary allocation is created on the parent scope where the
return value is stored. For classes, a second scope is created around
this temporary allocation to ensure any destructors are called.

This does not implement the full semantics of statement expressions.

ghstack-source-id: 64e03fc3df45975590ddbcab44959c2b49601101
Pull Request resolved: #314
pysuxing pushed a commit to pysuxing/llvm-project that referenced this pull request Jul 17, 2024
Adds support for GCC statement expressions return values as well as
StmtExpr LValue emissions.

To simplify the lowering process, the scope return value is not used.
Instead, a temporary allocation is created on the parent scope where the
return value is stored. For classes, a second scope is created around
this temporary allocation to ensure any destructors are called.

This does not implement the full semantics of statement expressions.

ghstack-source-id: 64e03fc3df45975590ddbcab44959c2b49601101
Pull Request resolved: llvm/clangir#314
Hugobros3 pushed a commit to shady-gang/clangir that referenced this pull request Oct 2, 2024
Adds support for GCC statement expressions return values as well as
StmtExpr LValue emissions.

To simplify the lowering process, the scope return value is not used.
Instead, a temporary allocation is created on the parent scope where the
return value is stored. For classes, a second scope is created around
this temporary allocation to ensure any destructors are called.

This does not implement the full semantics of statement expressions.

ghstack-source-id: 64e03fc3df45975590ddbcab44959c2b49601101
Pull Request resolved: llvm#314
keryell pushed a commit to keryell/clangir that referenced this pull request Oct 19, 2024
Adds support for GCC statement expressions return values as well as
StmtExpr LValue emissions.

To simplify the lowering process, the scope return value is not used.
Instead, a temporary allocation is created on the parent scope where the
return value is stored. For classes, a second scope is created around
this temporary allocation to ensure any destructors are called.

This does not implement the full semantics of statement expressions.

ghstack-source-id: 64e03fc3df45975590ddbcab44959c2b49601101
Pull Request resolved: llvm#314
lanza pushed a commit that referenced this pull request Nov 5, 2024
Adds support for GCC statement expressions return values as well as
StmtExpr LValue emissions.

To simplify the lowering process, the scope return value is not used.
Instead, a temporary allocation is created on the parent scope where the
return value is stored. For classes, a second scope is created around
this temporary allocation to ensure any destructors are called.

This does not implement the full semantics of statement expressions.

ghstack-source-id: 64e03fc3df45975590ddbcab44959c2b49601101
Pull Request resolved: #314
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants