Skip to content
  1. Nov 30, 2013
  2. Nov 29, 2013
    • Lang Hames's avatar
      Teach LocalStackSlotAllocation that stackmaps/patchpoints don't have range · 7468daad
      Lang Hames authored
      constraints on their frame offsets.
      
      llvm-svn: 195950
      7468daad
    • Lang Hames's avatar
      Remove unused variable from r195944. · c8a73af3
      Lang Hames authored
      llvm-svn: 195945
      c8a73af3
    • Lang Hames's avatar
      Refactor a lot of patchpoint/stackmap related code to simplify and make it · 39609996
      Lang Hames authored
      target independent.
      
      Most of the x86 specific stackmap/patchpoint handling was necessitated by the
      use of the native address-mode format for frame index operands. PEI has now
      been modified to treat stackmap/patchpoint similarly to DEBUG_INFO, allowing
      us to use a simple, platform independent register/offset pair for frame
      indexes on stackmap/patchpoints.
      
      Notes:
        - Folding is now platform independent and automatically supported.
        - Emiting patchpoints with direct memory references now just involves calling
          the TargetLoweringBase::emitPatchPoint utility method from the target's
          XXXTargetLowering::EmitInstrWithCustomInserter method. (See
          X86TargetLowering for an example).
        - No more ugly platform-specific operand parsers.
      
      This patch shouldn't change the generated output for X86. 
      
      llvm-svn: 195944
      39609996
  3. Nov 28, 2013
  4. Nov 27, 2013
    • Lang Hames's avatar
      Show stackmap entry encodings in stackmap debug logs. This makes it easier to · fde8e4b7
      Lang Hames authored
      cross-reference debug output with encoded stack-maps, and to create stackmap
      test-cases. 
      
      llvm-svn: 195874
      fde8e4b7
    • Rafael Espindola's avatar
      Use the same tls section name as msvc. · 3c8e147a
      Rafael Espindola authored
      We currently error in clang with:
      "error: thread-local storage is unsupported for the current target", but we
      can start to get the llvm level ready.
      
      When compiling
      
      template<typename T>
      struct foo {
        static __declspec(thread) int bar;
      };
      template<typename T>
      __declspec(therad) int foo<T>::bar;
      template struct foo<int>;
      
      msvc produces
      
      SECTION HEADER #3
         .tls$ name
             0 physical address
             0 virtual address
             4 size of raw data
           12F file pointer to raw data (0000012F to 00000132)
             0 file pointer to relocation table
             0 file pointer to line numbers
             0 number of relocations
             0 number of line numbers
      C0301040 flags
               Initialized Data
               COMDAT; sym= "public: static int foo<int>::bar" (?bar@?$foo@H@@2HA)
               4 byte align
               Read Write
      
      gcc produces a ".data$__emutls_v.<symbol>" for the testcase with
      __declspec(thread) replaced with thread_local.
      
      llvm-svn: 195849
      3c8e147a
    • Rafael Espindola's avatar
      Use simple section names for COMDAT sections on COFF. · 2d30ae2b
      Rafael Espindola authored
      With this patch we use simple names for COMDAT sections (like .text or .bss).
      This matches the MSVC behavior.
      
      When merging it is the COMDAT symbol that is used to decide if two sections
      should be merged, so there is no point in building a fancy name.
      
      This survived a bootstrap on mingw32.
      
      llvm-svn: 195798
      2d30ae2b
  5. Nov 26, 2013
  6. Nov 25, 2013
  7. Nov 23, 2013
  8. Nov 22, 2013
    • Paul Robinson's avatar
      Teach ISel not to optimize 'optnone' functions (revised). · d89125a5
      Paul Robinson authored
      Improvements over r195317:
      - Set/restore EnableFastISel flag instead of just running FastISel within
        SelectAllBasicBlocks; the flag is checked in various places, and
        FastISel won't run properly if those places don't do the right thing.
      - Test looks for normal ISel versus FastISel behavior, and not
        something more subtle that doesn't work everywhere.
      
      Based on work by Andrea Di Biagio.
      
      llvm-svn: 195491
      d89125a5
    • Andrew Trick's avatar
      DEBUG shouldEvict decisions · 059e800f
      Andrew Trick authored
      llvm-svn: 195490
      059e800f
    • Andrew Trick's avatar
      Minor cleanup. EvictionCost ctor was confusing relative to the other costs... · 3621b8a2
      Andrew Trick authored
      Minor cleanup. EvictionCost ctor was confusing relative to the other costs floating around in the code.
      
      llvm-svn: 195489
      3621b8a2
    • Andrew Trick's avatar
      patchpoint: factor SD builder code for live vars. Plain stackmap also... · 4a1abb7a
      Andrew Trick authored
      patchpoint: factor SD builder code for live vars. Plain stackmap also optimizes Constant values now.
      
      llvm-svn: 195488
      4a1abb7a
    • Andrew Trick's avatar
      patchpoint: eliminate hard coded operand indices. · a2428e0f
      Andrew Trick authored
      llvm-svn: 195487
      a2428e0f
    • Tom Stellard's avatar
      SelectionDAG: Optimize expansion of vec_type = BITCAST scalar_type · 06c67bcb
      Tom Stellard authored
      The legalizer can now do this type of expansion for more
      type combinations without loading and storing to and
      from the stack.
      
      NOTE: This is a candidate for the 3.4 branch.
      llvm-svn: 195398
      06c67bcb
    • Tom Stellard's avatar
      Split SETCC if VSELECT requires splitting too. · 9cbd2c55
      Tom Stellard authored
      This patch is a rewrite of the original patch commited in r194542. Instead of
      relying on the type legalizer to do the splitting for us, we now peform the
      splitting ourselves in the DAG combiner. This is necessary for the case where
      the vector mask is a legal type after promotion and still wouldn't require
      splitting.
      
      Patch by: Juergen Ributzka
      
      NOTE: This is a candidate for the 3.4 branch.
      llvm-svn: 195397
      9cbd2c55
    • Eric Christopher's avatar
      In Dwarf 3 (and Dwarf 2) attributes whose value are offsets into a · 33ff697c
      Eric Christopher authored
      section use the form DW_FORM_data4 whilst in Dwarf 4 and later they
      use the form DW_FORM_sec_offset.
      
      This patch updates the places where such attributes are generated to
      use the appropriate form depending on the Dwarf version. The DIE entries
      affected have the following tags:
      DW_AT_stmt_list, DW_AT_ranges, DW_AT_location, DW_AT_GNU_pubnames,
      DW_AT_GNU_pubtypes, DW_AT_GNU_addr_base, DW_AT_GNU_ranges_base
      
      It also adds a hidden command line option "--dwarf-version=<uint>"
      to llc which allows the version of Dwarf to be generated to override
      what is specified in the metadata; this makes it possible to update
      existing tests to check the debugging information generated for both
      Dwarf 4 (the default) and Dwarf 3 using the same metadata.
      
      Patch (slightly modified) by Keith Walker!
      
      llvm-svn: 195391
      33ff697c
  9. Nov 21, 2013
Loading