Skip to content
  1. Jan 07, 2014
  2. Sep 19, 2013
    • Reed Kotler's avatar
      Fix two issues regarding Got pointer (GP) setup. · d6aadc79
      Reed Kotler authored
      1) make sure that the first two instructions of the sequence cannot
      separate from each other. The linker requires that they be sequential.
      If they get separated, it can still work but it will not work in all
      cases because the first of the instructions mostly involves the hi part
      of the pc relative offset and that part changes slowly. You would have
      to be at the right boundary for this to matter.
      2) make sure that this sequence begins  on a longword boundary. 
      There appears to be a bug in binutils which makes some of these calculations
      get messed up if the instruction sequence does not begin on a longword
      boundary. This is being investigated with the appropriate binutils folks.
      
      llvm-svn: 190966
      d6aadc79
  3. Jun 19, 2013
  4. Jun 06, 2013
  5. May 25, 2013
  6. Apr 20, 2013
  7. Apr 09, 2013
    • Reed Kotler's avatar
      This patch enables llvm to switch between compiling for mips32/mips64 · 1595f36d
      Reed Kotler authored
      and mips16 on a per function basis.
      
      Because this patch is somewhat involved I have provide an overview of the
      key pieces of it.
      
      The patch is written so as to not change the behavior of the non mixed
      mode. We have tested this a lot but it is something new to switch subtargets
      so we don't want any chance of regression in the mainline compiler until
      we have more confidence in this.
      
      Mips32/64 are very different from Mip16 as is the case of ARM vs Thumb1.
      For that reason there are derived versions of the register info, frame info, 
      instruction info and instruction selection classes.
      
      Now we register three separate passes for instruction selection.
      One which is used to switch subtargets (MipsModuleISelDAGToDAG.cpp) and then
      one for each of the current subtargets (Mips16ISelDAGToDAG.cpp and
      MipsSEISelDAGToDAG.cpp).
      
      When the ModuleISel pass runs, it determines if there is a need to switch
      subtargets and if so, the owning pointers in MipsTargetMachine are
      appropriately changed.
      
      When 16Isel or SEIsel is run, they will return immediately without doing
      any work if the current subtarget mode does not apply to them.
      
      In addition, MipsAsmPrinter needs to be reset on a function basis.
      
      The pass BasicTargetTransformInfo is substituted with a null pass since the
      pass is immutable and really needs to be a function pass for it to be
      used with changing subtargets. This will be fixed in a follow on patch.
      
      llvm-svn: 179118
      1595f36d
  8. Mar 14, 2013
Loading