Skip to content
sapir edited this page Dec 20, 2019 · 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
  • Access variables, globals by name
  • Function calls
  • References and dereferences
  • Static variables
  • Recursive types
  • Generics
  • Strings
  • Panics
  • Complete MIR expressions/statements/terminators support
  • Simplify compilation
  • Interoperability
    • Correct type layout
    • Correct parameter and return type ABI
    • External crate support
    • Link with core
    • Link with std
  • 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:
    • Resume
    • Abort
    • Unreachable
    • Drop
    • DropAndReplace
    • Call
    • Assert (currently skipped)
    • Yield
    • GeneratorDrop
    • FalseEdges
    • FalseUnwind
Clone this wiki locally