Skip to content
This repository was archived by the owner on Mar 31, 2026. It is now read-only.

What's Been Changed?

MaggieYingYi edited this page Aug 3, 2020 · 13 revisions

Note that this page isn't intended to include an exhaustive list of changes (that's what diff is for, after all) but instead to summarize the more significant modifications.

Clang Changes

  • When “-repo” output is enabled, the data layout string changes to "-m:-r"
  • The representation of CFString constants needs to be finalized. At the moment, they result in a fatal error.

LLVM Changes

New Optimization Passes

There are two new optimization passes which have been added at the start of the optimization pipeline.

  1. The “Repo Metadata Generation” pass
    • A new "RepoDifinition" metadata entry to carry the output from the digest-generation phase.
    • LegacyPassManagers.h extended to enable the names of the enabled passes and the target data layout to be hashed.
  2. The “Repo Pruning” pass
    • This prunes functions from going through optimisation and code gen if the generated code is already in the program repository.

MC/Target Changes

  • A new “-repo” object-file format has been added to the triple.

    • This adds a number of new supporting source files: MCAsmInfoRepo.h, MCRepoObjectWriter.h, MCRepoStreamer.h, and so on. In general, these additions have used the ELF-equivalent functionality as the basis for the new code.
  • getSectionForConstant() has an additional GlobalObject* passed to enable the ticket metadata associated with the constant to be found.

  • A new TargetLoweringObjectFileRepo subclass of TargetLoweringObjectFile.

New Tools

repo2obj

This utility creates an ELF object file from a repository given the pstore database path and a ticket file representing an individual compilation.

pstore

The family of pstore tools includes pstore-dump which can be used to inspect the database contents.

Clone this wiki locally