Skip to content
  1. Nov 14, 2012
  2. Oct 16, 2012
    • Stepan Dyatkovskiy's avatar
      Issue: · e59a920b
      Stepan Dyatkovskiy authored
      Stack is formed improperly for long structures passed as byval arguments for
      EABI mode.
      
      If we took AAPCS reference, we can found the next statements:
      
      A: "If the argument requires double-word alignment (8-byte), the NCRN (Next
      Core Register Number) is rounded up to the next even register number." (5.5
      Parameter Passing, Stage C, C.3).
      
      B: "The alignment of an aggregate shall be the alignment of its most-aligned
      component." (4.3 Composite Types, 4.3.1 Aggregates).
      
      So if we have structure with doubles (9 double fields) and 3 Core unused
      registers (r1, r2, r3): caller should use r2 and r3 registers only.
      Currently r1,r2,r3 set is used, but it is invalid.
      
      Callee VA routine should also use r2 and r3 regs only. All is ok here. This
      behaviour is guessed by rounding up SP address with ADD+BFC operations.
      
      Fix:
      Main fix is in ARMTargetLowering::HandleByVal. If we detected AAPCS mode and
      8 byte alignment, we waste odd registers then.
      
      P.S.:
      I also improved LDRB_POST_IMM regression test. Since ldrb instruction will
      not generated by current regression test after this patch. 
      
      llvm-svn: 166018
      e59a920b
  3. Oct 08, 2012
  4. Jun 20, 2012
  5. Jun 02, 2012
    • Jakob Stoklund Olesen's avatar
      Switch all register list clients to the new MC*Iterator interface. · 54038d79
      Jakob Stoklund Olesen authored
      No functional change intended.
      
      Sorry for the churn. The iterator classes are supposed to help avoid
      giant commits like this one in the future. The TableGen-produced
      register lists are getting quite large, and it may be necessary to
      change the table representation.
      
      This makes it possible to do so without changing all clients (again).
      
      llvm-svn: 157854
      54038d79
  6. Mar 04, 2012
  7. Jun 10, 2011
  8. Jun 09, 2011
  9. May 26, 2011
  10. May 17, 2011
  11. Apr 20, 2011
  12. Mar 04, 2011
  13. Feb 28, 2011
  14. Dec 15, 2010
  15. Nov 04, 2010
  16. Nov 03, 2010
    • Duncan Sands's avatar
      Inside the calling convention logic LocVT is always a simple · f5dda01f
      Duncan Sands authored
      value type, so there is no point in passing it around using
      an EVT.  Use the simpler MVT everywhere.  Rather than trying
      to propagate this information maximally in all the code that
      using the calling convention stuff, I chose to do a mainly
      low impact change instead.
      
      llvm-svn: 118167
      f5dda01f
  17. Jul 10, 2010
  18. Jul 09, 2010
    • Bob Wilson's avatar
      --- Reverse-merging r107947 into '.': · 6586e9b2
      Bob Wilson authored
      U    utils/TableGen/FastISelEmitter.cpp
      --- Reverse-merging r107943 into '.':
      U    test/CodeGen/X86/fast-isel.ll
      U    test/CodeGen/X86/fast-isel-loads.ll
      U    include/llvm/Target/TargetLowering.h
      U    include/llvm/Support/PassNameParser.h
      U    include/llvm/CodeGen/FunctionLoweringInfo.h
      U    include/llvm/CodeGen/CallingConvLower.h
      U    include/llvm/CodeGen/FastISel.h
      U    include/llvm/CodeGen/SelectionDAGISel.h
      U    lib/CodeGen/LLVMTargetMachine.cpp
      U    lib/CodeGen/CallingConvLower.cpp
      U    lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
      U    lib/CodeGen/SelectionDAG/FunctionLoweringInfo.cpp
      U    lib/CodeGen/SelectionDAG/FastISel.cpp
      U    lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
      U    lib/CodeGen/SelectionDAG/ScheduleDAGSDNodes.cpp
      U    lib/CodeGen/SelectionDAG/InstrEmitter.cpp
      U    lib/CodeGen/SelectionDAG/TargetLowering.cpp
      U    lib/Target/XCore/XCoreISelLowering.cpp
      U    lib/Target/XCore/XCoreISelLowering.h
      U    lib/Target/X86/X86ISelLowering.cpp
      U    lib/Target/X86/X86FastISel.cpp
      U    lib/Target/X86/X86ISelLowering.h
      
      llvm-svn: 107987
      6586e9b2
    • Dan Gohman's avatar
      Re-apply bottom-up fast-isel, with fixes. Be very careful to avoid emitting · 0b5aa1cd
      Dan Gohman authored
      a DBG_VALUE after a terminator, or emitting any instructions before an EH_LABEL.
      
      llvm-svn: 107943
      0b5aa1cd
  19. Jul 08, 2010
  20. Jul 07, 2010
  21. Jul 06, 2010
  22. Jan 05, 2010
  23. Nov 07, 2009
  24. Sep 02, 2009
  25. Aug 23, 2009
  26. Aug 11, 2009
  27. Aug 05, 2009
    • Dan Gohman's avatar
      Major calling convention code refactoring. · f9bbcd1a
      Dan Gohman authored
      Instead of awkwardly encoding calling-convention information with ISD::CALL,
      ISD::FORMAL_ARGUMENTS, ISD::RET, and ISD::ARG_FLAGS nodes, TargetLowering
      provides three virtual functions for targets to override:
      LowerFormalArguments, LowerCall, and LowerRet, which replace the custom
      lowering done on the special nodes. They provide the same information, but
      in a more immediately usable format.
      
      This also reworks much of the target-independent tail call logic. The
      decision of whether or not to perform a tail call is now cleanly split
      between target-independent portions, and the target dependent portion
      in IsEligibleForTailCallOptimization.
      
      This also synchronizes all in-tree targets, to help enable future
      refactoring and feature work.
      
      llvm-svn: 78142
      f9bbcd1a
  28. Jul 22, 2009
  29. Jul 14, 2009
  30. Jul 11, 2009
Loading