Remove unneeded FunctionCx from some codegen methods by scottmcm · Pull Request #142324 · rust-lang/rust (original) (raw)
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 andprivacy statement. We’ll occasionally send you account related emails.
Already on GitHub?Sign in to your account
Conversation3 Commits1 Checks9 Files changed
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.Learn more about bidirectional Unicode characters
[ Show hidden characters]({{ revealButtonHref }})
No changes; just removing the self that wasn't needed.
r? workingjubilee
cc #138759 (comment)
No changes; just removing the self that wasn't needed.
rustbot added S-waiting-on-review
Status: Awaiting review from the assignee but also interested parties.
Relevant to the compiler team, which will review and decide on the PR/issue.
labels
Some changes occurred in compiler/rustc_codegen_ssa
Thank you!
@bors r+ rollup
📌 Commit ed06f36 has been approved by workingjubilee
It is now in the queue for this repository.
bors added S-waiting-on-bors
Status: Waiting on bors to run and complete tests. Bors will change the label on completion.
and removed S-waiting-on-review
Status: Awaiting review from the assignee but also interested parties.
labels
workingjubilee added a commit to workingjubilee/rustc that referenced this pull request
…gjubilee
Remove unneeded FunctionCx from some codegen methods
No changes; just removing the self that wasn't needed.
r? workingjubilee cc rust-lang#138759 (comment)
workingjubilee added a commit to workingjubilee/rustc that referenced this pull request
…gjubilee
Remove unneeded FunctionCx from some codegen methods
No changes; just removing the self that wasn't needed.
r? workingjubilee cc rust-lang#138759 (comment)
bors added a commit that referenced this pull request
Rollup of 13 pull requests
Successful merges:
- #134841 (Look at proc-macro attributes when encountering unknown attribute)
- #141639 (Expose discriminant values in stable_mir)
- #141967 (Configure bootstrap backport nominations through triagebot)
- #142042 (Make E0621 missing lifetime suggestion verbose)
- #142176 (tests: Split dont-shuffle-bswaps along opt-levels and arches)
- #142248 (Add supported asm types for LoongArch32)
- #142272 (tests: Change ABIs in tests to more future-resilient ones)
- #142282 (Only run
citooltests on theautobranch) - #142297 (Implement
//@ needs-target-stdcompiletest directive) - #142298 (Make loongarch-none target maintainers more easily pingable)
- #142306 (Dont unwrap and re-wrap typing envs)
- #142324 (Remove unneeded
FunctionCxfrom some codegen methods) - #142328 (feat: Add
bit_widthfor unsigned integer types)
r? @ghost
@rustbot modify labels: rollup
matthiaskrgr added a commit to matthiaskrgr/rust that referenced this pull request
…gjubilee
Remove unneeded FunctionCx from some codegen methods
No changes; just removing the self that wasn't needed.
r? workingjubilee cc rust-lang#138759 (comment)
This was referenced
Jun 11, 2025
bors added a commit that referenced this pull request
Rollup of 9 pull requests
Successful merges:
- #141967 (Configure bootstrap backport nominations through triagebot)
- #142042 (Make E0621 missing lifetime suggestion verbose)
- #142272 (tests: Change ABIs in tests to more future-resilient ones)
- #142282 (Only run
citooltests on theautobranch) - #142297 (Implement
//@ needs-target-stdcompiletest directive) - #142298 (Make loongarch-none target maintainers more easily pingable)
- #142306 (Dont unwrap and re-wrap typing envs)
- #142324 (Remove unneeded
FunctionCxfrom some codegen methods) - #142328 (feat: Add
bit_widthfor unsigned integer types)
Failed merges:
- #141639 (Expose discriminant values in stable_mir)
r? @ghost
@rustbot modify labels: rollup
rust-timer added a commit that referenced this pull request
Rollup merge of #142324 - scottmcm:less-functioncx, r=workingjubilee
Remove unneeded FunctionCx from some codegen methods
No changes; just removing the self that wasn't needed.
r? workingjubilee cc #138759 (comment)
github-actions bot pushed a commit to rust-lang/rustc-dev-guide that referenced this pull request
bors added a commit that referenced this pull request
Allow enum and union literals to also create SSA values
Today, Some(x) always goes through an alloca, even in trivial cases where the niching means the constructor doesn't even change the value.
For example, <https://rust.godbolt.org/z/6KG6PqoYz>
pub fn demo(r: &i32) -> Option<&i32> {
Some(r)
}currently emits the IR
define align 4 ptr `@demo(ptr` align 4 %r) unnamed_addr {
start:
%_0 = alloca [8 x i8], align 8
store ptr %r, ptr %_0, align 8
%0 = load ptr, ptr %_0, align 8
ret ptr %0
}but with this PR it becomes just
define align 4 ptr `@demo(ptr` align 4 %r) unnamed_addr {
start:
ret ptr %r
}(Of course the optimizer can clean that up, but it'd be nice if it didn't have to -- especially in debug where it doesn't run. This is like #123886, but that only handled non-simd structs -- this PR generalizes it to all non-simd ADTs.)
Doing this means handing variants other than FIRST_VARIANT, handling the active field for unions, refactoring the discriminant code so the Place and Operand parts can share the calculation, etc.
Other PRs that led up to this one:
bors added a commit that referenced this pull request
Allow enum and union literals to also create SSA values
Today, Some(x) always goes through an alloca, even in trivial cases where the niching means the constructor doesn't even change the value.
For example, <https://rust.godbolt.org/z/6KG6PqoYz>
pub fn demo(r: &i32) -> Option<&i32> {
Some(r)
}currently emits the IR
define align 4 ptr `@demo(ptr` align 4 %r) unnamed_addr {
start:
%_0 = alloca [8 x i8], align 8
store ptr %r, ptr %_0, align 8
%0 = load ptr, ptr %_0, align 8
ret ptr %0
}but with this PR it becomes just
define align 4 ptr `@demo(ptr` align 4 %r) unnamed_addr {
start:
ret ptr %r
}(Of course the optimizer can clean that up, but it'd be nice if it didn't have to -- especially in debug where it doesn't run. This is like #123886, but that only handled non-simd structs -- this PR generalizes it to all non-simd ADTs.)
Doing this means handing variants other than FIRST_VARIANT, handling the active field for unions, refactoring the discriminant code so the Place and Operand parts can share the calculation, etc.
Other PRs that led up to this one:
bors added a commit that referenced this pull request
Allow enum and union literals to also create SSA values
Today, Some(x) always goes through an alloca, even in trivial cases where the niching means the constructor doesn't even change the value.
For example, <https://rust.godbolt.org/z/6KG6PqoYz>
pub fn demo(r: &i32) -> Option<&i32> {
Some(r)
}currently emits the IR
define align 4 ptr `@demo(ptr` align 4 %r) unnamed_addr {
start:
%_0 = alloca [8 x i8], align 8
store ptr %r, ptr %_0, align 8
%0 = load ptr, ptr %_0, align 8
ret ptr %0
}but with this PR it becomes just
define align 4 ptr `@demo(ptr` align 4 %r) unnamed_addr {
start:
ret ptr %r
}(Of course the optimizer can clean that up, but it'd be nice if it didn't have to -- especially in debug where it doesn't run. This is like #123886, but that only handled non-simd structs -- this PR generalizes it to all non-simd ADTs.)
Doing this means handing variants other than FIRST_VARIANT, handling the active field for unions, refactoring the discriminant code so the Place and Operand parts can share the calculation, etc.
Other PRs that led up to this one:
try-job: aarch64-gnu
bors added a commit that referenced this pull request
Allow enum and union literals to also create SSA values
Today, Some(x) always goes through an alloca, even in trivial cases where the niching means the constructor doesn't even change the value.
For example, <https://rust.godbolt.org/z/6KG6PqoYz>
pub fn demo(r: &i32) -> Option<&i32> {
Some(r)
}currently emits the IR
define align 4 ptr `@demo(ptr` align 4 %r) unnamed_addr {
start:
%_0 = alloca [8 x i8], align 8
store ptr %r, ptr %_0, align 8
%0 = load ptr, ptr %_0, align 8
ret ptr %0
}but with this PR it becomes just
define align 4 ptr `@demo(ptr` align 4 %r) unnamed_addr {
start:
ret ptr %r
}(Of course the optimizer can clean that up, but it'd be nice if it didn't have to -- especially in debug where it doesn't run. This is like #123886, but that only handled non-simd structs -- this PR generalizes it to all non-simd ADTs.)
Doing this means handing variants other than FIRST_VARIANT, handling the active field for unions, refactoring the discriminant code so the Place and Operand parts can share the calculation, etc.
Other PRs that led up to this one:
try-job: aarch64-gnu
bors added a commit that referenced this pull request
Allow enum and union literals to also create SSA values
Today, Some(x) always goes through an alloca, even in trivial cases where the niching means the constructor doesn't even change the value.
For example, <https://rust.godbolt.org/z/6KG6PqoYz>
pub fn demo(r: &i32) -> Option<&i32> {
Some(r)
}currently emits the IR
define align 4 ptr `@demo(ptr` align 4 %r) unnamed_addr {
start:
%_0 = alloca [8 x i8], align 8
store ptr %r, ptr %_0, align 8
%0 = load ptr, ptr %_0, align 8
ret ptr %0
}but with this PR it becomes just
define align 4 ptr `@demo(ptr` align 4 %r) unnamed_addr {
start:
ret ptr %r
}(Of course the optimizer can clean that up, but it'd be nice if it didn't have to -- especially in debug where it doesn't run. This is like #123886, but that only handled non-simd structs -- this PR generalizes it to all non-simd ADTs.)
Doing this means handing variants other than FIRST_VARIANT, handling the active field for unions, refactoring the discriminant code so the Place and Operand parts can share the calculation, etc.
Other PRs that led up to this one:
try-job: aarch64-gnu
bors added a commit that referenced this pull request
Allow enum and union literals to also create SSA values
Today, Some(x) always goes through an alloca, even in trivial cases where the niching means the constructor doesn't even change the value.
For example, <https://rust.godbolt.org/z/6KG6PqoYz>
pub fn demo(r: &i32) -> Option<&i32> {
Some(r)
}currently emits the IR
define align 4 ptr `@demo(ptr` align 4 %r) unnamed_addr {
start:
%_0 = alloca [8 x i8], align 8
store ptr %r, ptr %_0, align 8
%0 = load ptr, ptr %_0, align 8
ret ptr %0
}but with this PR it becomes just
define align 4 ptr `@demo(ptr` align 4 %r) unnamed_addr {
start:
ret ptr %r
}(Of course the optimizer can clean that up, but it'd be nice if it didn't have to -- especially in debug where it doesn't run. This is like #123886, but that only handled non-simd structs -- this PR generalizes it to all non-simd ADTs.)
Doing this means handing variants other than FIRST_VARIANT, handling the active field for unions, refactoring the discriminant code so the Place and Operand parts can share the calculation, etc.
Other PRs that led up to this one:
try-job: aarch64-gnu
bors added a commit that referenced this pull request
Allow enum and union literals to also create SSA values
Today, Some(x) always goes through an alloca, even in trivial cases where the niching means the constructor doesn't even change the value.
For example, <https://rust.godbolt.org/z/6KG6PqoYz>
pub fn demo(r: &i32) -> Option<&i32> {
Some(r)
}currently emits the IR
define align 4 ptr `@demo(ptr` align 4 %r) unnamed_addr {
start:
%_0 = alloca [8 x i8], align 8
store ptr %r, ptr %_0, align 8
%0 = load ptr, ptr %_0, align 8
ret ptr %0
}but with this PR it becomes just
define align 4 ptr `@demo(ptr` align 4 %r) unnamed_addr {
start:
ret ptr %r
}(Of course the optimizer can clean that up, but it'd be nice if it didn't have to -- especially in debug where it doesn't run. This is like #123886, but that only handled non-simd structs -- this PR generalizes it to all non-simd ADTs.)
Doing this means handing variants other than FIRST_VARIANT, handling the active field for unions, refactoring the discriminant code so the Place and Operand parts can share the calculation, etc.
Other PRs that led up to this one:
try-job: aarch64-gnu
bors added a commit that referenced this pull request
Allow enum and union literals to also create SSA values
Today, Some(x) always goes through an alloca, even in trivial cases where the niching means the constructor doesn't even change the value.
For example, <https://rust.godbolt.org/z/6KG6PqoYz>
pub fn demo(r: &i32) -> Option<&i32> {
Some(r)
}currently emits the IR
define align 4 ptr `@demo(ptr` align 4 %r) unnamed_addr {
start:
%_0 = alloca [8 x i8], align 8
store ptr %r, ptr %_0, align 8
%0 = load ptr, ptr %_0, align 8
ret ptr %0
}but with this PR it becomes just
define align 4 ptr `@demo(ptr` align 4 %r) unnamed_addr {
start:
ret ptr %r
}(Of course the optimizer can clean that up, but it'd be nice if it didn't have to -- especially in debug where it doesn't run. This is like #123886, but that only handled non-simd structs -- this PR generalizes it to all non-simd ADTs.)
Doing this means handing variants other than FIRST_VARIANT, handling the active field for unions, refactoring the discriminant code so the Place and Operand parts can share the calculation, etc.
Other PRs that led up to this one:
try-job: aarch64-gnu
bors added a commit that referenced this pull request
Allow enum and union literals to also create SSA values
Today, Some(x) always goes through an alloca, even in trivial cases where the niching means the constructor doesn't even change the value.
For example, <https://rust.godbolt.org/z/6KG6PqoYz>
pub fn demo(r: &i32) -> Option<&i32> {
Some(r)
}currently emits the IR
define align 4 ptr `@demo(ptr` align 4 %r) unnamed_addr {
start:
%_0 = alloca [8 x i8], align 8
store ptr %r, ptr %_0, align 8
%0 = load ptr, ptr %_0, align 8
ret ptr %0
}but with this PR it becomes just
define align 4 ptr `@demo(ptr` align 4 %r) unnamed_addr {
start:
ret ptr %r
}(Of course the optimizer can clean that up, but it'd be nice if it didn't have to -- especially in debug where it doesn't run. This is like #123886, but that only handled non-simd structs -- this PR generalizes it to all non-simd ADTs.)
Doing this means handing variants other than FIRST_VARIANT, handling the active field for unions, refactoring the discriminant code so the Place and Operand parts can share the calculation, etc.
Other PRs that led up to this one:
try-job: aarch64-gnu
github-actions bot pushed a commit to rust-lang/rustc-dev-guide that referenced this pull request
Allow enum and union literals to also create SSA values
Today, Some(x) always goes through an alloca, even in trivial cases where the niching means the constructor doesn't even change the value.
For example, <https://rust.godbolt.org/z/6KG6PqoYz>
pub fn demo(r: &i32) -> Option<&i32> {
Some(r)
}currently emits the IR
define align 4 ptr `@demo(ptr` align 4 %r) unnamed_addr {
start:
%_0 = alloca [8 x i8], align 8
store ptr %r, ptr %_0, align 8
%0 = load ptr, ptr %_0, align 8
ret ptr %0
}but with this PR it becomes just
define align 4 ptr `@demo(ptr` align 4 %r) unnamed_addr {
start:
ret ptr %r
}(Of course the optimizer can clean that up, but it'd be nice if it didn't have to -- especially in debug where it doesn't run. This is like rust-lang/rust#123886, but that only handled non-simd structs -- this PR generalizes it to all non-simd ADTs.)
Doing this means handing variants other than FIRST_VARIANT, handling the active field for unions, refactoring the discriminant code so the Place and Operand parts can share the calculation, etc.
Other PRs that led up to this one:
try-job: aarch64-gnu
Labels
Status: Waiting on bors to run and complete tests. Bors will change the label on completion.
Relevant to the compiler team, which will review and decide on the PR/issue.