Skip to content
  1. Jul 03, 2013
  2. Jul 02, 2013
    • Eric Christopher's avatar
      Fix comment. · 9046f942
      Eric Christopher authored
      llvm-svn: 185480
      9046f942
    • Michael Gottesman's avatar
    • Ulrich Weigand's avatar
      · 42a09dc1
      Ulrich Weigand authored
      [PowerPC] PR16512 - Support TLS call sequences in the asm parser
      
      This patch now adds support for recognizing TLS call sequences in
      the asm parser.  This needs a new pattern BL8_TLS, which is like
      BL8_NOP_TLS except without nop.  That pattern is used for the
      asm parser only.
      
      llvm-svn: 185478
      42a09dc1
    • Ulrich Weigand's avatar
      · 5143bab2
      Ulrich Weigand authored
      [PowerPC] Rework TLS call operand processing
      
      As part of the global-dynamic and local-dynamic TLS sequences, we need
      to use a special form of the call instruction:
      
       bl __tls_get_addr(sym@tlsld)
       bl __tls_get_addr(sym@tlsgd)
      
      which generates two fixups.  The current implementation of this causes
      problems with recognizing this form in the asm parser.  To fix this,
      this patch reworks operand processing for this special form by using
      a single operand to hold both __tls_get_addr and sym@tlsld and defining
      a print method to output the above form, and an encoding method to
      generate the two fixups.
      
      As a side simplification, the patch replaces the two instruction
      patterns BL8_NOP_TLSGD and BL8_NOP_TLSLD by a single BL8_NOP_TLS,
      since the patterns already operate in an identical fashion (whether
      we have a local-dynamic or global-dynamic symbol is already encoded
      in the symbol modifier).
      
      No change in code generation intended.
      
      llvm-svn: 185477
      5143bab2
    • Ulrich Weigand's avatar
      · 40509956
      Ulrich Weigand authored
      [PowerPC] Remove VK_PPC_TLSGD and VK_PPC_TLSLD
      
      The PowerPC-specific modifiers VK_PPC_TLSGD and VK_PPC_TLSLD
      correspond exactly to the generic modifiers VK_TLSGD and VK_TLSLD.
      This causes some confusion with the asm parser, since VK_PPC_TLSGD
      is output as @tlsgd, which is then read back in as VK_TLSGD.
      
      To avoid this confusion, this patch removes the PowerPC-specific
      modifiers and uses the generic modifiers throughout.  (The only
      drawback is that the generic modifiers are printed in upper case
      while the usual convention on PowerPC is to use lower-case modifiers.
      But this is just a cosmetic issue.)
      
      llvm-svn: 185476
      40509956
    • Benjamin Kramer's avatar
      SystemZ: Fold variable into assertion. · 421c8fb2
      Benjamin Kramer authored
      llvm-svn: 185475
      421c8fb2
    • Jyotsna Verma's avatar
      Add 'REQUIRES: object-emission' to DebugInfo/inlined-arguments.ll. · ddca5fa2
      Jyotsna Verma authored
      llvm-svn: 185465
      ddca5fa2
    • Ulrich Weigand's avatar
      · 0f039824
      Ulrich Weigand authored
      [PowerPC] Support TLS variables in debug info
      
      This adds an implementation of getDebugThreadLocalSymbol for
      (64-bit) PowerPC.  This needs to return a generic MCExpr
      since on ppc64, we need to add a bias of 0x8000 to the
      value returned by the R_PPC64_DTPREL64 relocation.
      
      llvm-svn: 185461
      0f039824
    • Ulrich Weigand's avatar
      · 2b6fc8d6
      Ulrich Weigand authored
      [DebugInfo] Allow getDebugThreadLocalSymbol to return MCExpr
      
      This allows getDebugThreadLocalSymbol to return a generic MCExpr
      instead of just a MCSymbolRefExpr.
      
      This is in preparation for supporting debug info for TLS variables
      on PowerPC, where we need to describe the variable location using
      a more complex expression than just MCSymbolRefExpr.
      
      llvm-svn: 185460
      2b6fc8d6
    • Ulrich Weigand's avatar
      · 8b3d2266
      Ulrich Weigand authored
      [DebugInfo] Hold generic MCExpr in AddrPool
      
      This changes the AddrPool infrastructure to enable it to hold
      generic MCExpr expressions, not just MCSymbolRefExpr.
      
      This is in preparation for supporting debug info for TLS variables
      on PowerPC, where we need to describe the variable location using
      a more complex expression than just MCSymbolRefExpr.
      
      llvm-svn: 185459
      8b3d2266
    • Ulrich Weigand's avatar
      · 396ba8b4
      Ulrich Weigand authored
      [DebugInfo] Introduce DIEExpr variant of DIEValue to hold MCExpr values
      
      This partially reverts r185202 and restores DIELabel to hold plain
      MCSymbol references.  Instead, we add a new subclass DIEExpr of
      DIEValue that can hold generic MCExpr references.
      
      This is in preparation for supporting debug info for TLS variables
      on PowerPC, where we need to describe the variable location using
      a more complex expression than just MCSymbolRefExpr.
      
      llvm-svn: 185458
      396ba8b4
    • Manman Ren's avatar
      Debug Info: cleanup · d0e67aa1
      Manman Ren authored
      llvm-svn: 185456
      d0e67aa1
    • Jakob Stoklund Olesen's avatar
      Revert (most of) r185393 and r185395. · 13be6bfb
      Jakob Stoklund Olesen authored
      "Remove floating point computations form SpillPlacement.cpp."
      
      These commits caused test failures in lencod on clang-native-arm-lnt.
      
      I suspect these changes are only exposing an existing issue, but
      reverting anyway to keep the bots passing while we investigate.
      
      llvm-svn: 185447
      13be6bfb
    • Benjamin Kramer's avatar
      Hexagon: Avoid unused variable warnings in Release builds. · 755bf4f6
      Benjamin Kramer authored
      llvm-svn: 185445
      755bf4f6
    • David Blaikie's avatar
    • Michael Gottesman's avatar
      [APFloat] Swap an early out check so we do not dereference str.end(). · 94d6195f
      Michael Gottesman authored
      Originally if D.firstSigDigit == str.end(), we will have already dereferenced
      D.firstSigDigit in the first predicate.
      
      llvm-svn: 185437
      94d6195f
    • Rafael Espindola's avatar
      Remove address spaces from MC. · 64e1af8e
      Rafael Espindola authored
      This is dead code since PIC16 was removed in 2010. The result was an odd mix,
      where some parts would carefully pass it along and others would assert it was
      zero (most of the object streamer for example).
      
      llvm-svn: 185436
      64e1af8e
    • Richard Sandiford's avatar
      [SystemZ] Use DSGFR over DSGR in more cases · e6e78855
      Richard Sandiford authored
      Fixes some cases where we were using full 64-bit division for (sdiv i32, i32)
      and (sdiv i64, i32).
      
      The "32" in "SDIVREM32" just refers to the second operand.  The first operand
      of all *DIVREM*s is a GR128.
      
      llvm-svn: 185435
      e6e78855
    • Richard Sandiford's avatar
      [SystemZ] Use MVC to spill loads and stores · f6bae1e4
      Richard Sandiford authored
      Try to use MVC when spilling the destination of a simple load or the source
      of a simple store.  As explained in the comment, this doesn't yet handle
      the case where the load or store location is also a frame index, since
      that could lead to two simultaneous scavenger spills, something the
      backend can't handle yet.  spill-02.py tests that this restriction kicks in,
      but unfortunately I've not yet found a case that would fail without it.
      The volatile trick I used for other scavenger tests doesn't work here
      because we can't use MVC for volatile accesses anyway.
      
      I'm planning on relaxing the restriction later, hopefully with a test
      that does trigger the problem...
      
      Tests @f8 and @f9 also showed that L(G)RL and ST(G)RL were wrongly
      classified as SimpleBDX{Load,Store}.  It wouldn't be easy to test for
      that bug separately, which is why I didn't split out the fix as a
      separate patch.
      
      llvm-svn: 185434
      f6bae1e4
    • Richard Sandiford's avatar
      [SystemZ] Add the MVC instruction · 1d959008
      Richard Sandiford authored
      This is the first use of D(L,B) addressing, which required a fair bit
      of surgery.  For that reason, the patch just adds the instruction
      definition and the associated assembler and disassembler support.
      A later patch will actually make use of it for codegen.
      
      llvm-svn: 185433
      1d959008
    • Richard Osborne's avatar
      [XCore] Fix instruction selection for zext, mkmsk instructions. · e4cc9868
      Richard Osborne authored
      r182680 replaced CountLeadingZeros_32 with a template function
      countLeadingZeros that relies on using the correct argument type to give
      the right result. The type passed in the XCore backend after this
      revision was incorrect in a couple of places.
      
      Patch by Robert Lytton.
      
      llvm-svn: 185430
      e4cc9868
    • Logan Chien's avatar
      Fix ARM EHABI compact model 1 and 2 without handlerdata. · c931fce4
      Logan Chien authored
      According to ARM EHABI section 9.2, if the
      __aeabi_unwind_cpp_pr1() or __aeabi_unwind_cpp_pr2() is
      used, then the handler data must be emitted after the unwind
      opcodes.  The handler data consists of several words, and
      should be terminated by zero.
      
      In case that the .handlerdata directive is not specified by
      the programmer, we should emit zero to terminate the handler
      data.
      
      llvm-svn: 185422
      c931fce4
    • Elena Demikhovsky's avatar
    • Tim Northover's avatar
      DAGCombiner: fix use-counting issue when forming zextload · 6823900e
      Tim Northover authored
      DAGCombiner was counting all uses of a load node  when considering whether it's
      worth combining into a zextload. Really, it wants to ignore the chain and just
      count real uses.
      
      rdar://problem/13896307
      
      llvm-svn: 185419
      6823900e
    • Hal Finkel's avatar
      Revert r185257 (InstCombine: Be more agressive optimizing 'udiv' instrs with 'select' denoms) · fdbe161b
      Hal Finkel authored
      I'm reverting this commit because:
      
       1. As discussed during review, it needs to be rewritten (to avoid creating and
      then deleting instructions).
      
       2. This is causing optimizer crashes. Specifically, I'm seeing things like
      this:
      
          While deleting: i1 %
          Use still stuck around after Def is destroyed:  <badref> = select i1 <badref>, i32 0, i32 1
          opt: /src/llvm-trunk/lib/IR/Value.cpp:79: virtual llvm::Value::~Value(): Assertion `use_empty() && "Uses remain when a value is destroyed!"' failed.
      
         I'd guess that these will go away once we're no longer creating/deleting
      instructions here, but just in case, I'm adding a regression test.
      
      Because the code is bring rewritten, I've just XFAIL'd the original regression test. Original commit message:
      
      	InstCombine: Be more agressive optimizing 'udiv' instrs with 'select' denoms
      
      	Real world code sometimes has the denominator of a 'udiv' be a
      	'select'.  LLVM can handle such cases but only when the 'select'
      	operands are symmetric in structure (both select operands are a constant
      	power of two or a left shift, etc.).  This falls apart if we are dealt a
      	'udiv' where the code is not symetric or if the select operands lead us
      	to more select instructions.
      
      	Instead, we should treat the LHS and each select operand as a distinct
      	divide operation and try to optimize them independently.  If we can
      	to simplify each operation, then we can replace the 'udiv' with, say, a
      	'lshr' that has a new select with a bunch of new operands for the
      	select.
      
      llvm-svn: 185415
      fdbe161b
    • Nick Lewycky's avatar
      Add missing break statements. Noticed by inspection. · 26fcc51f
      Nick Lewycky authored
      llvm-svn: 185414
      26fcc51f
    • Tobias Grosser's avatar
      Fix typo in comment · 38f66b23
      Tobias Grosser authored
      llvm-svn: 185413
      38f66b23
    • Hal Finkel's avatar
      Cleanup PPC Altivec registers in CSR lists and improve VRSAVE handling · 52727c6b
      Hal Finkel authored
      There are a couple of (small) related changes here:
      
      1. The printed name of the VRSAVE register has been changed from VRsave to
      vrsave in order to match the name accepted by GNU binutils.
      
      2. Support for parsing vrsave has been added to the asm parser (it seems that
      there was no test case specifically covering this code, so I've added one).
      
      3. The list of Altivec registers, which was common to all calling conventions,
      has been separated out. This allows us to define the base CSR lists, and then
      lists for each ABI with Altivec included. This allows SjLj, for example, to
      work correctly on non-Altivec targets without using unnatural definitions of
      the NoRegs CSR list.
      
      4. VRSAVE is now always reserved on non-Darwin targets and all Altivec
      registers are reserved when Altivec is disabled.
      
      With these changes, it is now possible to compile a function containing
      __builtin_unwind_init() on Linux/PPC64 with debugging information. This did not
      work previously because GNU binutils assumes that all .cfi_offset offsets will
      be 8-byte aligned on PPC64 (and errors out if you provide a non-8-byte-aligned
      offset). This is not true for the vrsave register, however, because this
      register is used only on Darwin, GCC does not bother printing a .cfi_offset
      entry for it (even though there is a slot in the stack frame for it as
      specified by the ABI). This change allows us to do the same: we will also not
      print .cfi_offset directives for vrsave.
      
      llvm-svn: 185409
      52727c6b
    • Tobias Grosser's avatar
      IRVerifier: Correctly check attribute types · effd02c9
      Tobias Grosser authored
      Add missing parenthesis such that all and not only the very first attribute
      is checked.
      
      Testing this piece of code is not possible with an LLVM-IR test file, as the
      LLVM-IR parser has a similar check such that the wrong IR does not even arrive
      at the verifier.
      
      llvm-svn: 185408
      effd02c9
    • Akira Hatanaka's avatar
      [mips] Add new InstrItinClasses for move from/to coprocessor instructions and · b34ad786
      Akira Hatanaka authored
      floating point loads and stores.
      
      No changes in functionality.
      
      llvm-svn: 185399
      b34ad786
    • David Blaikie's avatar
      PR14728: DebugInfo: TLS variables with -gsplit-dwarf · 8466ca86
      David Blaikie authored
      llvm-svn: 185398
      8466ca86
    • Michael Gottesman's avatar
Loading