Skip to content
  1. Oct 01, 2013
  2. Sep 30, 2013
    • Arnold Schwaighofer's avatar
      IfConverter: Use TargetSchedule for instruction latencies · d2f96b91
      Arnold Schwaighofer authored
      For targets that have instruction itineraries this means no change. Targets
      that move over to the new schedule model will use be able the new schedule
      module for instruction latencies in the if-converter (the logic is such that if
      there is no itineary we will use the new sched model for the latencies).
      
      Before, we queried "TTI->getInstructionLatency()" for the instruction latency
      and the extra prediction cost. Now, we query the TargetSchedule abstraction for
      the instruction latency and TargetInstrInfo for the extra predictation cost. The
      TargetSchedule abstraction will internally call "TTI->getInstructionLatency" if
      an itinerary exists, otherwise it will use the new schedule model.
      
      ATTENTION: Out of tree targets!
      
      (I will also send out an email later to LLVMDev)
      
      This means, if your target implements
      
       unsigned getInstrLatency(const InstrItineraryData *ItinData,
                                const MachineInstr *MI,
                                unsigned *PredCost);
      
      and returns a value for "PredCost", you now also need to implement
      
       unsigned getPredictationCost(const MachineInstr *MI);
      
      (if your target uses the IfConversion.cpp pass)
      
      radar://15077010
      
      llvm-svn: 191671
      d2f96b91
  3. Sep 29, 2013
  4. Sep 28, 2013
  5. Sep 27, 2013
  6. Sep 26, 2013
  7. Sep 25, 2013
    • Andrea Di Biagio's avatar
      Teach DAGCombiner how to canonicalize dags according to the rule · 9f331310
      Andrea Di Biagio authored
       (shl (zext (shr A, X)), X) => (zext (shl (shr A, X), X)).
      
      The rule only triggers when there are no other uses of the
      zext to avoid materializing more instructions.
      
      This helps the DAGCombiner understand that the shl/shr
      sequence can then be converted into an and instruction.
      
      llvm-svn: 191393
      9f331310
    • Andrew Trick's avatar
      Mark the x86 machine model as incomplete. PR17367. · b6854d80
      Andrew Trick authored
      Ideally, the machinel model is added at the time the instructions are
      defined. But many instructions in X86InstrSSE.td still need a model.
      
      Without this workaround the scheduler asserts because x86 already has
      itinerary classes for these instructions, indicating they should be
      modeled by the scheduler. Since we use the new machine model for other
      instructions, it expects a new machine model for these too.
      
      llvm-svn: 191391
      b6854d80
    • Quentin Colombet's avatar
      [PR16882] Ignore noreturn definitions when setting isPhysRegUsed. · fa403ab3
      Quentin Colombet authored
      PEI inserts a save/restore sequence for the link register, according to the
      information it gets from the MachineRegisterInfo.
      MachineRegisterInfo is populated by the VirtRegMap pass.
      This pass was not aware of noreturn calls and was registering the definitions of
      these calls the same way as regular operations.
      
      Modify VirtRegPass so that it does not set the isPhysRegUsed information for
      registers only defined by noreturn calls.
      The rational is that a noreturn call is the "last instruction" of the program
      (if it returns the behavior is undefined), so everything that is defined by it
      cannot be used and will not interfere with anything else. Therefore, it is
      pointless to account for then.
      
      llvm-svn: 191349
      fa403ab3
    • Eli Friedman's avatar
      Add missing check to SETCC optimization. · a961d694
      Eli Friedman authored
      PR17338.
      
      llvm-svn: 191337
      a961d694
  8. Sep 24, 2013
  9. Sep 23, 2013
    • Bill Wendling's avatar
      Reformat code with clang-format. · 8faa30ef
      Bill Wendling authored
      llvm-svn: 191226
      8faa30ef
    • Eric Christopher's avatar
      Handle gnu pubtypes sections: · 261d2343
      Eric Christopher authored
      a) Make sure we are emitting the correct section in our section labels
      when we begin the module.
      b) Make sure we are emitting the correct pubtypes section in the
      presence of gnu pubtypes.
      c) For C++ struct, union, class, and enumeration types are default
      external.
      
      llvm-svn: 191225
      261d2343
    • Kay Tiong Khoo's avatar
      fix typo: than -> then · 9195a5b0
      Kay Tiong Khoo authored
      llvm-svn: 191214
      9195a5b0
    • Richard Mitton's avatar
      Fixed debug_aranges handling for common symbols. · 089ed89e
      Richard Mitton authored
      The size of common symbols is now tracked correctly, so they can be listed in the arange section without needing knowledge of other following symbols.
      
      .comm (and .lcomm) do not indicate to the system assembler any particular section to use, so we have to treat them as having no section.
      
      Test case update to account for this.
      
      llvm-svn: 191210
      089ed89e
  10. Sep 22, 2013
    • Benjamin Kramer's avatar
      Provide basic type safety for array_pod_sort comparators. · 8817cca5
      Benjamin Kramer authored
      This makes using array_pod_sort significantly safer. The implementation relies
      on function pointer casting but that should be safe as we're dealing with void*
      here.
      
      llvm-svn: 191175
      8817cca5
    • Tim Northover's avatar
      ISelDAG: spot chain cycles involving MachineNodes · 31d093c7
      Tim Northover authored
      Previously, the DAGISel function WalkChainUsers was spotting that it
      had entered already-selected territory by whether a node was a
      MachineNode (amongst other things). Since it's fairly common practice
      to insert MachineNodes during ISelLowering, this was not the correct
      check.
      
      Looking around, it seems that other nodes get their NodeId set to -1
      upon selection, so this makes sure the same thing happens to all
      MachineNodes and uses that characteristic to determine whether we
      should stop looking for a loop during selection.
      
      This should fix PR15840.
      
      llvm-svn: 191165
      31d093c7
Loading