Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: rust-lang/llvm-project
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: e048e97f5280e8a232a43ae134d395aeab67c2e8
Choose a base ref
...
head repository: rust-lang/llvm-project
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: f9b03d0e2d7378f8dd5697ceb72b310060f7598f
Choose a head ref
  • 2 commits
  • 5 files changed
  • 2 contributors

Commits on Nov 16, 2021

  1. [DIArgList] Re-unique after changing operands to fix non-determinism

    We have a large compile showing occasional non-deterministic behavior
    that is due to DIArgList not being properly uniqued in some cases. I
    tracked this down to handleChangedOperands, for which there is a custom
    implementation for DIArgList, that does not take care of re-uniquing
    after updating the DIArgList Args, unlike the default version of
    handleChangedOperands for MDNode.
    
    Since the Args in the DIArgList form the key for the store, this seems
    to be occasionally breaking the lookup in that DenseSet. Specifically,
    when invoking DIArgList::get() from replaceVariableLocationOp, very
    occasionally it returns a new DIArgList object, when one already exists
    having the same exact Args pointers. This in turn causes a subsequent
    call to Instruction::isIdenticalToWhenDefined on those two otherwise
    identical DIArgList objects during a later pass to return false, leading
    to different IR in those rare cases.
    
    I modified DIArgList::handleChangedOperands to perform similar
    re-uniquing as the MDNode version used by other metadata node types.
    This also necessitated a change to the context destructor, since in some
    cases we end up with DIArgList as distinct nodes: DIArgList is the only
    metadata node type to have a custom dropAllReferences, so we need to
    invoke that version on DIArgList in the DistinctMDNodes store to clean
    it up properly.
    
    Differential Revision: https://reviews.llvm.org/D108968
    
    (cherry picked from commit badcd58)
    teresajohnson authored and nikic committed Nov 16, 2021
    Configuration menu
    Copy the full SHA
    f08c12f View commit details
    Browse the repository at this point in the history
  2. [AArch64][GlobalISel] Fix an crash in RBS due to a new regclass being…

    … added.
    
    rdar://84674985
    aemerson authored and nikic committed Nov 16, 2021
    Configuration menu
    Copy the full SHA
    f9b03d0 View commit details
    Browse the repository at this point in the history
Loading