Skip to content
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
  • 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
Clone this wiki locally