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

Add unit-type support for Identifier expressions #526

Merged
merged 4 commits into from Jun 25, 2021
Merged

Conversation

philberty
Copy link
Member

Unit type can be reference via an identifier expression. Other type references via an identifier expression are not supported yet.

Adding the to_string for type kind will improve the debug message for
type wrappers.
struct S; Turns into an ADT type which is a type of unit-struct.
IdentifierExpr's can reference types like a unit-struct, referencing other
structs actually form a function item type which is not supported yet.
@philberty philberty added the bug label Jun 25, 2021
@philberty philberty added this to the Data Structures 3 - Traits milestone Jun 25, 2021
@philberty philberty self-assigned this Jun 25, 2021
@philberty philberty added this to In progress in Data Structures 3 - Traits via automation Jun 25, 2021
Comment on lines +4 to +5
let s = S;
// { dg-warning "unused name" "" { target *-*-* } .-1 }
Copy link
Member

Choose a reason for hiding this comment

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

nit: If you don't care about the warning you can also use let _s = S; since that's working now

Copy link
Member Author

Choose a reason for hiding this comment

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

good point will fix.

Rust supports unit struct initilization such as S{} this takes this tree
and resolves it fully. This should really be all desugared via HIR but that
is in progress in another PR.
@philberty
Copy link
Member Author

bors r+

@bors
Copy link
Contributor

bors bot commented Jun 25, 2021

Build succeeded:

@bors bors bot merged commit 99bc27d into master Jun 25, 2021
Data Structures 3 - Traits automation moved this from In progress to Done Jun 25, 2021
@philberty philberty deleted the phil/unit-type branch June 29, 2021 14:33
CohenArthur pushed a commit to CohenArthur/gccrs that referenced this pull request Nov 7, 2023
Fixes: 3496ca4 ("RISC-V: Add runtime invariant support")

riscv_promote_function_mode doesn't promote a SI to DI for libcalls
case. It intends to do that however the code is broken (regression).

The fix is what generic promote_mode () in explow.cc does. I really
don't understand why the old code didn't work, but stepping thru the
debugger shows old code didn't and fixed does.

This showed up when testing Ajit's REE ABI extension series which probes
the ABI (using a NULL tree type) and ends up hitting the libcall code path.

gcc/ChangeLog:
	* config/riscv/riscv.cc (riscv_promote_function_mode): Fix mode
	returned for libcall case.

Tested-by: Patrick O'Neill <patrick@rivosinc.com> # pre-commit-CI Rust-GCC#526
Signed-off-by: Vineet Gupta <vineetg@rivosinc.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
No open projects
Development

Successfully merging this pull request may close these issues.

None yet

2 participants