Hello,
This series contains the changes from Oct 14 to Oct 21.
- Early support for #[used] attribute
- Early support for trait alias
- Initial support towards rust 1.55
- Better handling of match guards
- Test building the alloc crate until typecheck
- Add many float intrinsics
- Few bug fixes
Ok for trunk?
Marc
Arthur Cohen (6):
gccrs: attr: Allow `#[used]` attribute and its argument variant.
gccrs: backend: Add proper handling for #[used] attribute.
gccrs: builtins: Improve lookup interface
gccrs: backend: Properly implement remainder operation for f32 and f64
gccrs: intrinsics: Add impl for fadd_fast, fsub_fast, fmul_fast,
fdiv_fast and frem_fast
gccrs: intrinsics: Add float_to_int_unchecked
Enes Cevik (1):
gccrs: alloc: Test until typecheck
Owen Avery (4):
gccrs: Handle 1.55 rustc_feature
gccrs: Add trait alias AST support
gccrs: Remove extended_key_value_attributes
gccrs: Move derive_coerce_pointee to rfl features
Utkarsh Bahuguna (4):
gccrs: Implement match arm guards
gccrs: Evaluate call arguments from left to right
gccrs: Reject type param defaults using later params
gccrs: Fix ICE with nested patterns in multi-field constructors
Wesley Lewis (1):
gccrs: check for curly/square braces in an attribute
Yap Zhi Heng (1):
gccrs: Initial implementation of hotpatching rustc-lib
gcc/rust/ast/rust-ast-collector.cc | 29 +++
gcc/rust/ast/rust-ast-collector.h | 1 +
gcc/rust/ast/rust-ast-visitor.cc | 13 ++
gcc/rust/ast/rust-ast-visitor.h | 2 +
gcc/rust/ast/rust-ast.cc | 59 +++++
gcc/rust/ast/rust-ast.h | 1 +
gcc/rust/ast/rust-item.h | 129 +++++++++++
gcc/rust/backend/rust-builtins.cc | 35 ++-
gcc/rust/backend/rust-builtins.h | 58 ++++-
gcc/rust/backend/rust-compile-expr.cc | 23 ++
gcc/rust/backend/rust-compile-extern.h | 25 +-
gcc/rust/backend/rust-compile-intrinsic.cc | 127 +++++-----
gcc/rust/backend/rust-compile-item.cc | 48 ++++
gcc/rust/backend/rust-intrinsic-handlers.cc | 219 +++++++++++++-----
gcc/rust/backend/rust-intrinsic-handlers.h | 8 +
.../checks/errors/feature/contrib/Makefile | 3 +-
.../errors/feature/contrib/copyright-stub.h | 2 +-
.../checks/errors/feature/contrib/parse.y | 30 ++-
gcc/rust/checks/errors/feature/contrib/scan.l | 40 +++-
.../errors/feature/rust-feature-collector.cc | 5 -
.../errors/feature/rust-feature-defs-rfl.h | 9 +-
.../checks/errors/feature/rust-feature-defs.h | 4 -
.../errors/feature/rust-feature-gate.cc | 26 +++
.../checks/errors/feature/rust-feature-gate.h | 3 +
.../checks/errors/rust-attribute-checker.cc | 26 ++-
.../errors/rust-builtin-attribute-checker.cc | 48 +++-
gcc/rust/checks/errors/rust-const-checker.cc | 6 +-
.../errors/rust-hir-pattern-analysis.cc | 11 +-
gcc/rust/checks/errors/rust-unsafe-checker.cc | 6 +-
gcc/rust/expand/rust-derive.h | 1 +
gcc/rust/hir/rust-ast-lower-base.cc | 3 +
gcc/rust/hir/rust-ast-lower-base.h | 1 +
gcc/rust/hir/rust-ast-lower-item.cc | 6 +
gcc/rust/hir/rust-ast-lower-item.h | 1 +
gcc/rust/parse/rust-parse-impl-attribute.hxx | 10 -
gcc/rust/parse/rust-parse-impl.hxx | 37 ++-
gcc/rust/parse/rust-parse.h | 4 +-
gcc/rust/resolve/rust-default-resolver.cc | 15 ++
gcc/rust/resolve/rust-default-resolver.h | 1 +
gcc/rust/resolve/rust-forever-stack.h | 18 +-
.../resolve/rust-late-name-resolver-2.0.cc | 10 +-
.../rust-toplevel-name-resolver-2.0.cc | 9 +
.../resolve/rust-toplevel-name-resolver-2.0.h | 1 +
gcc/rust/rust-gcc.cc | 132 +++++++++--
.../typecheck/rust-hir-type-check-expr.cc | 16 ++
.../rust-hir-type-check-intrinsic.cc | 19 ++
gcc/rust/util/rust-attribute-values.h | 1 +
gcc/rust/util/rust-attributes.cc | 3 +-
gcc/rust/util/rust-intrinsic-values.h | 8 +
gcc/testsuite/rust/alloc/alloc.exp | 2 +-
gcc/testsuite/rust/compile/doc_macro.rs | 1 -
.../compile/early_feature_gate_in_macro.rs | 29 ---
gcc/testsuite/rust/compile/exhaustiveness5.rs | 34 +++
gcc/testsuite/rust/compile/float-rem.rs | 19 ++
.../rust/compile/fop_fast_intrinsics.rs | 27 +++
gcc/testsuite/rust/compile/issue-3764.rs | 7 +
gcc/testsuite/rust/compile/issues/3661.rs | 1 -
.../rust/compile/issues/issue-4973.rs | 39 ++++
.../rust/compile/match-guard-exhaustive.rs | 18 ++
.../rust/compile/match-guard-type.rs | 9 +
.../rust/compile/match-guard-unsafe.rs | 13 ++
.../rust/compile/parse_time_feature_gate.rs | 18 --
.../rust/compile/trait-alias-gate.rs | 6 +
.../rust/compile/trait-alias-lowering.rs | 7 +
gcc/testsuite/rust/compile/used-attr1.rs | 5 +
gcc/testsuite/rust/compile/used-attr2.rs | 11 +
gcc/testsuite/rust/compile/used-attr3.rs | 15 ++
gcc/testsuite/rust/compile/used-attr4.rs | 16 ++
gcc/testsuite/rust/compile/used-attr5.rs | 5 +
.../rust/compile/wrong_meta_list_delims.rs | 12 +
.../execute/torture/eval-order-call-args.rs | 66 ++++++
.../execute/torture/float_to_int_unchecked.rs | 22 ++
.../rust/execute/torture/match-guard.rs | 91 ++++++++
libgrust/rustc-lib-patches/README.md | 23 ++
.../patches/0001-core-ffi-c-str.for-rfl-patch | 55 +++++
.../0002-alloc-vec-extract-if.for-rfl-patch | 150 ++++++++++++
libgrust/rustc-lib-patches/rustc-lib-patch.py | 193 +++++++++++++++
77 files changed, 1893 insertions(+), 293 deletions(-)
delete mode 100644 gcc/testsuite/rust/compile/early_feature_gate_in_macro.rs
create mode 100644 gcc/testsuite/rust/compile/exhaustiveness5.rs
create mode 100644 gcc/testsuite/rust/compile/float-rem.rs
create mode 100644 gcc/testsuite/rust/compile/fop_fast_intrinsics.rs
create mode 100644 gcc/testsuite/rust/compile/issue-3764.rs
create mode 100644 gcc/testsuite/rust/compile/issues/issue-4973.rs
create mode 100644 gcc/testsuite/rust/compile/match-guard-exhaustive.rs
create mode 100644 gcc/testsuite/rust/compile/match-guard-type.rs
create mode 100644 gcc/testsuite/rust/compile/match-guard-unsafe.rs
delete mode 100644 gcc/testsuite/rust/compile/parse_time_feature_gate.rs
create mode 100644 gcc/testsuite/rust/compile/trait-alias-gate.rs
create mode 100644 gcc/testsuite/rust/compile/trait-alias-lowering.rs
create mode 100644 gcc/testsuite/rust/compile/used-attr1.rs
create mode 100644 gcc/testsuite/rust/compile/used-attr2.rs
create mode 100644 gcc/testsuite/rust/compile/used-attr3.rs
create mode 100644 gcc/testsuite/rust/compile/used-attr4.rs
create mode 100644 gcc/testsuite/rust/compile/used-attr5.rs
create mode 100644 gcc/testsuite/rust/compile/wrong_meta_list_delims.rs
create mode 100644 gcc/testsuite/rust/execute/torture/eval-order-call-args.rs
create mode 100644 gcc/testsuite/rust/execute/torture/float_to_int_unchecked.rs
create mode 100644 gcc/testsuite/rust/execute/torture/match-guard.rs
create mode 100644 libgrust/rustc-lib-patches/README.md
create mode 100644
libgrust/rustc-lib-patches/patches/0001-core-ffi-c-str.for-rfl-patch
create mode 100644
libgrust/rustc-lib-patches/patches/0002-alloc-vec-extract-if.for-rfl-patch
create mode 100755 libgrust/rustc-lib-patches/rustc-lib-patch.py
base-commit: 152e0cc2130c686846094cd742ade5c333a56bde
--
2.55.0