Skip to content

hir: Remove EnumItemDiscriminant from HIR #3698

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

Draft
wants to merge 3 commits into
base: master
Choose a base branch
from

Conversation

varun-r-mallya
Copy link

@varun-r-mallya varun-r-mallya commented Apr 5, 2025

gcc/rust/ChangeLog:

	* ast/rust-ast-collector.cc (TokenCollector::visit): Removed.
	* backend/rust-compile-item.h (CompileItem::visit): Remove EnumItemDiscriminant case.
	* backend/rust-compile-stmt.h (CompileStmt::visit): Remove EnumItemDiscriminant case.
	* checks/errors/borrowck/rust-bir-builder-expr-stmt.h (BIRBuilderExprStmt::visit):
	Remove EnumItemDiscriminant case.
	* checks/errors/borrowck/rust-bir-builder-struct.h (BIRBuilderStruct::visit): Remove
	EnumItemDiscriminant case.
	* checks/errors/borrowck/rust-function-collector.h (FunctionCollector::visit): Remove
	EnumItemDiscriminant case.
	* checks/errors/privacy/rust-privacy-reporter.cc (PrivacyReporter::visit): Remove
	EnumItemDiscriminant implementation.
	* checks/errors/privacy/rust-privacy-reporter.h (PrivacyReporter::visit): Remove
	EnumItemDiscriminant declaration.
	* checks/errors/rust-const-checker.cc (ConstChecker::visit): Remove EnumItemDiscriminant
	implementation.
	* checks/errors/rust-const-checker.h (ConstChecker::visit): Remove EnumItemDiscriminant
	declaration.
	* checks/errors/rust-hir-pattern-analysis.cc (PatternChecker::visit): Remove
	EnumItemDiscriminant implementation.
	* checks/errors/rust-hir-pattern-analysis.h (PatternChecker::visit): Remove
	EnumItemDiscriminant declaration.
	* checks/errors/rust-unsafe-checker.cc (UnsafeChecker::visit): Remove
	EnumItemDiscriminant implementation.
	* checks/errors/rust-unsafe-checker.h (UnsafeChecker::visit): Remove
	EnumItemDiscriminant declaration.
	* hir/rust-hir-dump.cc (Dump::visit): Remove EnumItemDiscriminant implementation.
	* hir/rust-hir-dump.h (Dump::visit): Remove EnumItemDiscriminant declaration.
	* hir/tree/rust-hir-full-decls.h: Remove EnumItemDiscriminant forward declaration.
	* hir/tree/rust-hir-item.cc (EnumItemDiscriminant::as_string): Remove implementation.
	(EnumItemDiscriminant::accept_vis): Remove implementation.
	* hir/tree/rust-hir-item.h: Remove EnumItemDiscriminant class definition.
	* hir/tree/rust-hir-visitor.h (HIRFullVisitor::visit): Remove EnumItemDiscriminant
	declaration.
	(HIRStmtVisitor::visit): Remove EnumItemDiscriminant declaration.
	* hir/tree/rust-hir.cc (EnumItemDiscriminant::as_string): Remove implementation.
	(EnumItemDiscriminant::accept_vis): Remove implementation.
	* typecheck/rust-hir-type-check-enumitem.cc (TypeCheckEnumItem::Resolve): Remove
	EnumItemDiscriminant case.
	(TypeCheckEnumItem::visit): Remove EnumItemDiscriminant implementation.
	* typecheck/rust-hir-type-check-enumitem.h (TypeCheckEnumItem::visit): Remove
	EnumItemDiscriminant declaration.
	* typecheck/rust-hir-type-check-stmt.h (TypeCheckStmt::visit): Remove EnumItemDiscriminant case.

Addresses #3340

Thank you for making Rust GCC better!

If your PR fixes an issue, you can add "Fixes #issue_number" into this
PR description and the git commit message. This way the issue will be
automatically closed when your PR is merged. If your change addresses
an issue but does not fully fix it please mark it as "Addresses #issue_number"
in the git commit message.

Here is a checklist to help you with your PR.

Note that you can skip the above if you are just opening a WIP PR in
order to get feedback.

*Please write a comment explaining your change. This is the message
that will be part of the merge commit.

gcc/rust/ChangeLog:

	* ast/rust-ast-collector.cc (TokenCollector::visit): Removed.
	* ast/rust-ast-collector.h (TokenCollector::visit): Removed.
	* ast/rust-ast-full-decls.h: Removed EnumItemDiscriminant.
	* ast/rust-ast-visitor.cc (DefaultASTVisitor::visit): Removed.
	* ast/rust-ast-visitor.h (ASTVisitor::visit): Removed.
	* ast/rust-ast.cc (EnumItemDiscriminant::as_string): Removed.
	* ast/rust-item.h (EnumItemDiscriminant): Removed.
	* expand/rust-cfg-strip.cc (CfgStrip::visit): Removed.
	* expand/rust-cfg-strip.h (CfgStrip::visit): Removed.
	* expand/rust-derive.h (DeriveVisitor::visit): Removed.
	* expand/rust-expand-visitor.cc (ExpandVisitor::visit): Removed.
	* expand/rust-expand-visitor.h (ExpandVisitor::visit): Removed.
	* hir/rust-ast-lower-base.cc (ASTLoweringBase::visit): Removed.
	* hir/rust-ast-lower-base.h (ASTLoweringBase::visit): Removed.
	* hir/rust-ast-lower-enumitem.h (ASTLoweringEnumItem::visit): Removed.
	* parse/rust-parse-impl.h (Parser::parse_enum_item): Modified EQUAL case
	to return EnumItemDiscriminant.
	* resolve/rust-ast-resolve-base.cc (ResolverBase::visit): Removed.
	* resolve/rust-ast-resolve-base.h (ResolverBase::visit): Removed.
	* resolve/rust-ast-resolve-item.cc (ResolveItem::visit): Removed.
	* resolve/rust-ast-resolve-item.h (ResolveItem::visit): Removed.
	* resolve/rust-ast-resolve-stmt.h (ResolveStmt::visit): Removed.
	* resolve/rust-ast-resolve-toplevel.h (ResolveTopLevel::visit): Removed.
	* resolve/rust-toplevel-name-resolver-2.0.cc (TopLevel::visit): Removed.
	* resolve/rust-toplevel-name-resolver-2.0.h (TopLevel::visit): Removed.
	* util/rust-attributes.cc (AttributeChecker::visit): Removed.
	* util/rust-attributes.h (AttributeChecker::visit): Removed.

	Addresses Rust-GCC#3340

Signed-off-by: varun-r-mallya <[email protected]>
@varun-r-mallya varun-r-mallya force-pushed the varun-r-mallya/HIR-EnumItemDiscriminant branch from d6991e2 to 5882614 Compare April 5, 2025 11:11
@varun-r-mallya varun-r-mallya changed the title gccrs: Remove EnumItemDiscriminant from AST and related visitors hir: Remove EnumItemDiscriminant from HIR Apr 5, 2025
gcc/rust/ChangeLog:

	* ast/rust-ast-collector.cc (TokenCollector::visit): Removed.
	* backend/rust-compile-item.h (CompileItem::visit): Remove EnumItemDiscriminant case.
	* backend/rust-compile-stmt.h (CompileStmt::visit): Remove EnumItemDiscriminant case.
	* checks/errors/borrowck/rust-bir-builder-expr-stmt.h (BIRBuilderExprStmt::visit):
	Remove EnumItemDiscriminant case.
	* checks/errors/borrowck/rust-bir-builder-struct.h (BIRBuilderStruct::visit): Remove
	EnumItemDiscriminant case.
	* checks/errors/borrowck/rust-function-collector.h (FunctionCollector::visit): Remove
	EnumItemDiscriminant case.
	* checks/errors/privacy/rust-privacy-reporter.cc (PrivacyReporter::visit): Remove
	EnumItemDiscriminant implementation.
	* checks/errors/privacy/rust-privacy-reporter.h (PrivacyReporter::visit): Remove
	EnumItemDiscriminant declaration.
	* checks/errors/rust-const-checker.cc (ConstChecker::visit): Remove EnumItemDiscriminant
	implementation.
	* checks/errors/rust-const-checker.h (ConstChecker::visit): Remove EnumItemDiscriminant
	declaration.
	* checks/errors/rust-hir-pattern-analysis.cc (PatternChecker::visit): Remove
	EnumItemDiscriminant implementation.
	* checks/errors/rust-hir-pattern-analysis.h (PatternChecker::visit): Remove
	EnumItemDiscriminant declaration.
	* checks/errors/rust-unsafe-checker.cc (UnsafeChecker::visit): Remove
	EnumItemDiscriminant implementation.
	* checks/errors/rust-unsafe-checker.h (UnsafeChecker::visit): Remove
	EnumItemDiscriminant declaration.
	* hir/rust-hir-dump.cc (Dump::visit): Remove EnumItemDiscriminant implementation.
	* hir/rust-hir-dump.h (Dump::visit): Remove EnumItemDiscriminant declaration.
	* hir/tree/rust-hir-full-decls.h: Remove EnumItemDiscriminant forward declaration.
	* hir/tree/rust-hir-item.cc (EnumItemDiscriminant::as_string): Remove implementation.
	(EnumItemDiscriminant::accept_vis): Remove implementation.
	* hir/tree/rust-hir-item.h: Remove EnumItemDiscriminant class definition.
	* hir/tree/rust-hir-visitor.h (HIRFullVisitor::visit): Remove EnumItemDiscriminant
	declaration.
	(HIRStmtVisitor::visit): Remove EnumItemDiscriminant declaration.
	* hir/tree/rust-hir.cc (EnumItemDiscriminant::as_string): Remove implementation.
	(EnumItemDiscriminant::accept_vis): Remove implementation.
	* typecheck/rust-hir-type-check-enumitem.cc (TypeCheckEnumItem::Resolve): Remove
	EnumItemDiscriminant case.
	(TypeCheckEnumItem::visit): Remove EnumItemDiscriminant implementation.
	* typecheck/rust-hir-type-check-enumitem.h (TypeCheckEnumItem::visit): Remove
	EnumItemDiscriminant declaration.
	* typecheck/rust-hir-type-check-stmt.h (TypeCheckStmt::visit): Remove
	EnumItemDiscriminant case.

	Addresses Rust-GCC#3340

Signed-off-by: varun-r-mallya <[email protected]>
@varun-r-mallya varun-r-mallya force-pushed the varun-r-mallya/HIR-EnumItemDiscriminant branch from 5882614 to 7669e1b Compare April 5, 2025 11:19
	* ast/rust-item.h (EnumItem::Kind): Remove Discriminant enum value.
	* checks/errors/privacy/rust-reachability.cc (ReachabilityVisitor::visit):
  	Remove Discriminant case from enum item handling.
	* expand/rust-derive-clone.cc (DeriveClone::visit_enum):
	Remove Discriminant case from enum derivation.
	* expand/rust-derive-eq.cc (DeriveEq::visit_enum):
	Remove Discriminant case from equality derivation.
	* expand/rust-derive-hash.cc (DeriveHash::visit_enum):
	Remove Discriminant case from hash derivation.
	* expand/rust-derive-partial-eq.cc (DerivePartialEq::visit_enum):
	Remove Discriminant case from partial equality derivation.
	* hir/rust-hir-dump.cc (Dump::do_enumitem):
	Remove Discriminant variant from dump output.
	* hir/tree/rust-hir-item.h (EnumItem::EnumItemKind):
  	Remove Discriminant enum variant.
	* hir/tree/rust-hir.cc (EnumItem::as_string):
	Remove string representation for Discriminant variant.

	Addresses Rust-GCC#3340

Signed-off-by: varun-r-mallya <[email protected]>
@varun-r-mallya varun-r-mallya marked this pull request as draft April 5, 2025 12:39
@varun-r-mallya
Copy link
Author

make check-rust does not run on my machine and gives an OOM error. I will be developing on my machine and testing here due to this

@powerboat9
Copy link
Collaborator

How much ram do you have?

@varun-r-mallya
Copy link
Author

How much ram do you have?

I have 32 GBs of RAM currently. I think this is an issue particularly due a memory leak I am making in the code. For my other PR, I ran make check-rust multiple times with no issues.

return std::unique_ptr<AST::EnumItem> (
new AST::EnumItem (std::move (item_name), std::move (vis),
std::move (outer_attrs),
item_name_tok->get_locus ()));
Copy link
Collaborator

Choose a reason for hiding this comment

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

No usage of discriminant_expr in EnumItem constructor?

Copy link
Author

Choose a reason for hiding this comment

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

I think this was removed in #3697. https://github.com/Rust-GCC/gccrs/pull/3355/files#r1907176914 This is why I removed it.

@powerboat9
Copy link
Collaborator

powerboat9 commented Apr 5, 2025

Are you sure this PR is the one you're OOMing on?

Edit: is the code causing the memory leak pushed?

@varun-r-mallya
Copy link
Author

#3698 (comment)
Yeah, I just ran the test locally, it did cause an OOM. Fedora shut it down.

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