Skip to content
  1. Apr 01, 2015
  2. Mar 31, 2015
  3. Mar 30, 2015
  4. Mar 28, 2015
  5. Mar 27, 2015
    • Akira Hatanaka's avatar
      [MCInstPrinter] Enable MCInstPrinter to change its behavior based on the · b46d0234
      Akira Hatanaka authored
      per-function subtarget.
      
      Currently, code-gen passes the default or generic subtarget to the constructors
      of MCInstPrinter subclasses (see LLVMTargetMachine::addPassesToEmitFile), which
      enables some targets (AArch64, ARM, and X86) to change their instprinter's
      behavior based on the subtarget feature bits. Since the backend can now use
      different subtargets for each function, instprinter has to be changed to use the
      per-function subtarget rather than the default subtarget.
      
      This patch takes the first step towards enabling instprinter to change its
      behavior based on the per-function subtarget. It adds a bit "PassSubtarget" to
      AsmWriter which tells table-gen to pass a reference to MCSubtargetInfo to the
      various print methods table-gen auto-generates. 
      
      I will follow up with changes to instprinters of AArch64, ARM, and X86.
      
      llvm-svn: 233411
      b46d0234
  6. Mar 26, 2015
  7. Mar 25, 2015
  8. Mar 24, 2015
    • Michael Kuperstein's avatar
      Revert "Use std::bitset for SubtargetFeatures" · 29704e7f
      Michael Kuperstein authored
      This reverts commit r233055.
      
      It still causes buildbot failures (gcc running out of memory on several platforms, and a self-host failure on arm), although less than the previous time.
      
      llvm-svn: 233068
      29704e7f
    • Michael Kuperstein's avatar
      Use std::bitset for SubtargetFeatures · 774b441b
      Michael Kuperstein authored
      Previously, subtarget features were a bitfield with the underlying type being uint64_t. 
      Since several targets (X86 and ARM, in particular) have hit or were very close to hitting this bound, switching the features to use a bitset.
      No functional change.
      
      The first time this was committed (r229831), it caused several buildbot failures. 
      At least some of the ARM ones were due to gcc/binutils issues, and should now be fixed.
      
      Differential Revision: http://reviews.llvm.org/D8542
      
      llvm-svn: 233055
      774b441b
  9. Mar 23, 2015
  10. Mar 21, 2015
    • Eric Christopher's avatar
      Remove the target independent TargetMachine::getSubtarget and · 4d0f35a9
      Eric Christopher authored
      TargetMachine::getSubtargetImpl routines.
      
      This keeps the target independent code free of bare subtarget
      calls while the remainder of the backends are migrated, or not
      if they don't wish to support per-function subtargets as would
      be needed for function multiversioning or LTO of disparate
      cpu subarchitecture types, e.g.
      
      clang -msse4.2 -c foo.c -emit-llvm -o foo.bc
      clang -c bar.c -emit-llvm -o bar.bc
      llvm-link foo.bc bar.bc -o baz.bc
      llc baz.bc
      
      and get appropriate code for what the command lines requested.
      
      llvm-svn: 232885
      4d0f35a9
    • Eric Christopher's avatar
      Change getISAEncoding to use the target triple to determine · cd53d6ed
      Eric Christopher authored
      thumb-ness similar to the rest of the Module level asm printing
      infrastructure as debug info finalization happens after the function
      may be missing.
      
      llvm-svn: 232875
      cd53d6ed
  11. Mar 20, 2015
    • Rafael Espindola's avatar
      Don't declare all text sections at the start of the .s · 36a15cb9
      Rafael Espindola authored
      The code this patch removes was there to make sure the text sections went
      before the dwarf sections. That is necessary because MachO uses offsets
      relative to the start of the file, so adding a section can change relaxations.
      
      The dwarf sections were being printed at the start just to produce symbols
      pointing at the start of those sections.
      
      The underlying issue was fixed in r231898. The dwarf sections are now printed
      when they are about to be used, which is after we printed the text sections.
      
      To make sure we don't regress, the patch makes the MachO streamer assert
      if CodeGen puts anything unexpected after the DWARF sections.
      
      llvm-svn: 232842
      36a15cb9
    • John Brawn's avatar
      [ARM] Fix handling of thumb1 out-of-range frame offsets · 1f26a476
      John Brawn authored
      LocalStackSlotPass assumes that isFrameOffsetLegal doesn't change its
      answer when the base register changes. Unfortunately this isn't true
      in thumb1, where SP-based loads allow a larger offset than
      non-SP-based loads, and this causes the base register reuse code to
      generate instructions that are unencodable, causing an assertion
      failure. 
      
      Solve this by adding a BaseReg parameter to isFrameOffsetLegal, which
      ARMBaseRegisterInfo can then make use of to give the correct answer. 
      
      Differential Revision: http://reviews.llvm.org/D8419
      
      llvm-svn: 232825
      1f26a476
  12. Mar 19, 2015
  13. Mar 18, 2015
    • John Brawn's avatar
      [ARM] Align stack objects passed to memory intrinsics · 0dbcd654
      John Brawn authored
      Memcpy, and other memory intrinsics, typically tries to use LDM/STM if
      the source and target addresses are 4-byte aligned. In CodeGenPrepare
      look for calls to memory intrinsics and, if the object is on the
      stack, 4-byte align it if it's large enough that we expect that memcpy
      would want to use LDM/STM to copy it.
      
      Differential Revision: http://reviews.llvm.org/D7908
      
      llvm-svn: 232627
      0dbcd654
  14. Mar 17, 2015
  15. Mar 16, 2015
  16. Mar 13, 2015
    • Daniel Sanders's avatar
      Recommit r232027 with PR22883 fixed: Add infrastructure for support of multiple memory constraints. · 60f1db05
      Daniel Sanders authored
      The operand flag word for ISD::INLINEASM nodes now contains a 15-bit
      memory constraint ID when the operand kind is Kind_Mem. This constraint
      ID is a numeric equivalent to the constraint code string and is converted
      with a target specific hook in TargetLowering.
      
      This patch maps all memory constraints to InlineAsm::Constraint_m so there
      is no functional change at this point. It just proves that using these
      previously unused bits in the encoding of the flag word doesn't break
      anything.
      
      The next patch will make each target preserve the current mapping of
      everything to Constraint_m for itself while changing the target independent
      implementation of the hook to return Constraint_Unknown appropriately. Each
      target will then be adapted in separate patches to use appropriate
      Constraint_* values.
      
      PR22883 was caused the matching operands copying the whole of the operand flags
      for the matched operand. This included the constraint id which needed to be
      replaced with the operand number. This has been fixed with a conversion
      function. Following on from this, matching operands also used the operand
      number as the constraint id. This has been fixed by looking up the matched
      operand and taking it from there. 
      
      llvm-svn: 232165
      60f1db05
    • Eric Christopher's avatar
      Move a variable into the assert where it's used - fixes a -Asserts · 7fde301d
      Eric Christopher authored
      build warning/error.
      
      llvm-svn: 232119
      7fde301d
Loading