Skip to content

VAST: Compiler Driver

vast-front serves as the primary vast compiler driver for compiling C/C++. It functions as an extension to the Clang compiler and generally supports all Clang's options. Moreover, vast-front offers several custom options, primarily designed as points of customization for MLIR generation. All these options are prefixed with -vast.

VAST output targets

  • -vast-emit-mlir=<dialect>
  • Possible dialects: hl, std, llvm, cir
  • This will execute the translation pipeline up to the specified dialect.

  • -vast-emit-mlir-after=<pass-argument-name>

  • This will execute the translation pipeline up to the specified mlir pass (including).
  • It uses same names as opt to specify passes.

  • -vast-emit-mlir-bytecode can be used in conjunction with -vast-emit-mlir=<dialect> to print the bytecode format instead of the pretty form.

Other available outputs:

  • -vast-emit-llvm
  • -vast-emit-obj
  • -vast-emit-asm

Additional customization options include:

  • -vast-print-pipeline
  • -vast-disable-<pipeline-step>
  • Options for pipeline-step: "canonicalize", "reduce-hl", "standard-types", etc. (see pipelines section below)

  • -vast-simplify

  • Simplifies high-level output.

  • -vast-show-locs

  • Displays locations in MLIR module print.

  • -vast-locs-as-meta-ids

  • Uses metadata identifiers instead of file locations for locations.

  • -vast-loc-attrs

  • When used in conjunction with -vast-show-locs, emits location data as MLIR attributes.

Debuging and diagnostics

  • -vast-emit-crash-reproducer="reproducer.mlir"
  • Emits an MLIR transformation crash reproducer; refer to debugging docs.

  • -vast-disable-multithreading

  • Disables multithreading in pipeline transformations for deterministic debugging.

  • -vast-debug

  • Prints operations in diagnostics.
  • Prints MLIR stack trace in diagnostics.

  • -vast-disable-verifier

  • Skips verification of the produced VAST MLIR module.

  • vast-snapshot-at="pass1;...;passN

  • After each pass that was specified as an option store MLIR into a file (format is src.pass_name).
  • "*" stores snapshot after every conversion.

  • -vast-output-sarif="report.sarif"

  • Outputs diagnostics as a SARIF report file.

Pipelines

WIP pipelines documentation