Skip to content
  • Toma Tabacu's avatar
    [mips] [IAS] Fix LW with relative label operands. · 07c97b3b
    Toma Tabacu authored
    Summary:
    Previously, MCSymbolRefExpr::create() was called with a StringRef of the symbol
    name, which it would then search for in the Symbols StringMap (from MCContext).
    
    However, relative labels (which are temporary symbols) are apparently not stored
    in the Symbols StringMap, so we end up creating a new {$,.L}tmp symbol
    ({$,.L}tmp00, {$,.L}tmp10 etc.) each time we create an MCSymbolRefExpr by
    passing in the symbol name as a StringRef.
    
    Fortunately, there is a version of MCSymbolRefExpr::create() which takes an
    MCSymbol* and we already have an MCSymbol* at that point, so we can just pass
    that in instead of the StringRef.
    
    I also removed the local StringRef calls to MCSymbolRefExpr::create() from
    expandMemInst(), as those cases can be handled by evaluateRelocExpr() anyway.
    
    Reviewers: dsanders
    
    Reviewed By: dsanders
    
    Subscribers: llvm-commits
    
    Differential Revision: http://reviews.llvm.org/D9938
    
    llvm-svn: 239897
    07c97b3b
Loading