forked from gcc-mirror/gcc
-
Notifications
You must be signed in to change notification settings - Fork 4
Home
sapir edited this page Jan 6, 2020
·
22 revisions
Welcome to the gcc-rust wiki!
General roadmap:
- Link with gcc and rustc
- Trivial functions
- Local variables and temporaries
- If/else
- Match
- Tuples
- Basic math operators
- Structs
- Enums
- Function calls
- References and dereferences
- Self-referential types
- Generics
- Closures
- Simplify compilation of gcc-rust
- Allow using rustc nightly https://github.com/rust-lang/rust/pull/67126
- Integrate compilation into the makefile, either with cargo or rustc
- Output binary types: bin/lib
- Correct type layout
- Static (global) variables (requires type layout)
- Array, slices and strings (often require statics)
- Trait objects (often require statics)
- Panics (require many of the above)
- Support for Drop
- Support for Box
- Complete MIR expressions/statements/terminators support
- Interoperability
- Correct parameter and return type ABI
- Support for outputting rlibs and then linking with them
- Correct variable scope
- ...
unimplemented!
etc.:
- TyKinds in do_convert_type:
- Char
- Float
- Adt
- struct
- enum
- union
- Foreign
- Str
- Array
- Slice
- RawPtr
- Ref
- FnDef
- FnPtr
- Dynamic
- Closure
- Generator
- GeneratorWitness
- Never
- Projection
- UnnormalizedProjection
- Opaque
- Param
- Bound
- Placeholder
- Infer
- Error
- PlaceBase::Static in get_place
- ProjectionElems in get_place:
- Deref
- Field
- Index
- ConstantIndex
- Subslice
- Downcast
- Most constant types in convert_operand
- BinOp::Offset in convert_rvalue
- Rvalue types in convert_rvalue:
- Repeat
- Ref
- Len
- Cast
- NullaryOp
- SizeOf
- Box
- UnaryOp
- Not
- Neg
- Discriminant
- Aggregate
- Statement types in convert_basic_block:
- SetDiscriminant
- InlineAsm
- FakeRead (ignored)
- Retag (ignored)
- AscribeUserType (ignored)
- Terminator types in convert_basic_block:
- Unreachable
- FalseEdges
- FalseUnwind
- DropAndReplace
- Yield
- GeneratorDrop
- Call (panics currently ignored)
- Assert (currently skipped)
- Drop
- Resume
- Abort