Skip to content
  1. Oct 30, 2013
  2. Oct 29, 2013
    • Manman Ren's avatar
      Debug Info: support for DW_FORM_ref_addr. · ce20d460
      Manman Ren authored
      To support ref_addr, we calculate the section offset of a DIE (i.e. offset
      of a DIE from beginning of the debug info section). The Offset field in DIE
      is currently CU-relative. To calculate the section offset, we add a
      DebugInfoOffset field in CompileUnit to store the offset of a CU from beginning
      of the debug info section. We set the value in DwarfUnits::computeSizeAndOffset
      for each CompileUnit.
      
      A helper function DIE::getCompileUnit is added to return the CU DIE that
      the input DIE belongs to. We also add a map CUDieMap in DwarfDebug to help
      finding the CU for a given CU DIE.
      
      For a cross-referenced DIE, we first find the CU DIE it belongs to with
      getCompileUnit, then we use CUDieMap to get the corresponding CU for the CU DIE.
      Adding the section offset of the CU with the CU-relative offset of a DIE gives
      us the seciton offset of the DIE.
      
      We correctly emit ref_addr with relocation using EmitLabelPlusOffset when
      doesDwarfUseRelocationsAcrossSections is true.
      
      This commit handles the emission of DW_FORM_ref_addr when we have an attribute
      with FORM_ref_addr. A follow-on patch will start using ref_addr when adding a
      DIEEntry. This commit will be tested and verified in the follow-on patch.
      
      Reviewed off-list by Eric, Thanks.
      
      llvm-svn: 193658
      ce20d460
    • Manman Ren's avatar
      Debug Info: instead of calling addToContextOwner which constructs the context · f4c339e0
      Manman Ren authored
      after the DIE creation, we construct the context first.
      
      Ensure that we create the context before we create a type so that we can add
      the newly created type to the parent. Remove last use of addToContextOwner
      now that it's not needed.
      
      We use createAndAddDIE to wrap around "new DIE(". Now all shareable DIEs
      should be added to their parents right after the creation.
      
      Reviewed off-list by Eric, Thanks.
      
      llvm-svn: 193657
      f4c339e0
    • Manman Ren's avatar
      Struct byval cleanup: add helper functions to reduce code duplication. · b504f494
      Manman Ren authored
      Helper functions are added:
      emitPostLd: emit a post-increment load operation with given size.
      emitPostSt: emit a post-increment store operation with given size.
      
      No functionality change.
      
      llvm-svn: 193656
      b504f494
    • Evgeniy Stepanov's avatar
      [sanitizer] Intercept drand48_r, lrand48_r. · 0bd1f00e
      Evgeniy Stepanov authored
      llvm-svn: 193655
      0bd1f00e
    • Evgeniy Stepanov's avatar
      [msandr] Remove use of std::set in msandr client to avoid reentrancy issues. · 867dd748
      Evgeniy Stepanov authored
      Patch by Qin Zhao.
      
      llvm-svn: 193654
      867dd748
    • Josh Magee's avatar
      [stackprotector] Update the StackProtector pass to perform datalayout analysis. · 3f1c0e35
      Josh Magee authored
      This modifies the pass to classify every SSP-triggering AllocaInst according to
      an SSPLayoutKind (LargeArray, SmallArray, AddrOf).  This analysis is collected
      by the pass and made available for use, but no other pass uses it yet.
      
      The next patch will make use of this analysis in PEI and StackSlot
      passes.  The end goal is to support ssp-strong stack layout rules.
      
      WIP.
      
      Differential Revision: http://llvm-reviews.chandlerc.com/D1789
      
      llvm-svn: 193653
      3f1c0e35
    • Tobias Grosser's avatar
      ScopInfo: Add support for AssumedContext · e86109f5
      Tobias Grosser authored
      When constructing a scop sometimes the exact representation of a statement or
      condition would be very complex, but there is a common case which is a lot
      simpler, but which is only valid under certain assumptions. The assumed context
      records the assumptions taken during the construction of this scop and that need
      to be code generated as a run-time test.
      
      At the moment, we do not yet model any assumptions, but only added the
      AssumedContext as well as the isl-ast generation support. As a next step,
      this needs to be hooked up with the isl code generation.
      
      if (1) /* run-time condition */
        {  /* optimized code */ }
      else
        {  /* original code */ }
      
      llvm-svn: 193652
      e86109f5
    • Matt Arsenault's avatar
      Update comment · 87596662
      Matt Arsenault authored
      llvm-svn: 193651
      87596662
    • Matt Arsenault's avatar
      Workaround MSVC 32-bit miscompile of getCondCodeAction. · a1ca46d0
      Matt Arsenault authored
      Use 32-bit types for the array instead of 64. This should
      generally be better anyway.
      
      In optimized + assert builds, I saw a failure when a
      cond code / type combination that is never set was loading
      a non-zero value and hitting the != Promote assert.
      
      It turns out when loading the 64-bit value to do the shift,
      the assembly loads the 2 32-bit halves from non-consecutive
      addresses. The address the second half of the loaded uint64_t
      doesn't include the offset of the array in the struct. Instead
      of being offset + 4, it's just + 4.
      
      I'm not entirely sure why this wasn't observed before.
      setCondCodeAction isn't heavily used by the in-tree targets,
      and not with the higher valued vector SimpleValueTypes. Only
      PPC is using one of the > 32 valued types, and that is probably
      never used by anyone on a 32-bit MSVC compiled host.
      
      I ran into this when upgrading LLVM versions, so I guess the
      value loaded from the nonsense address happened to work out
      before.
      
      No test since I'm not really sure if / how it can be reproduced
      with the current in tree targets, and it's not supposed to change
      anything.
      
      llvm-svn: 193650
      a1ca46d0
Loading