Skip to content
  1. Jul 17, 2013
  2. Jul 16, 2013
    • Rafael Espindola's avatar
      Add a wrapper for open. · 6d35481c
      Rafael Espindola authored
      This centralizes the handling of O_BINARY and opens the way for hiding more
      differences (like how open behaves with directories).
      
      llvm-svn: 186447
      6d35481c
    • Jakob Stoklund Olesen's avatar
      Remove floats from live range splitting costs. · efeb3a19
      Jakob Stoklund Olesen authored
      These floats all represented block frequencies anyway, so just use the
      BlockFrequency class directly.
      
      Some floating point computations remain in tryLocalSplit(). They are
      estimating spill weights which are still floats.
      
      llvm-svn: 186435
      efeb3a19
    • Jakob Stoklund Olesen's avatar
      Reapply r185393. · c5454ff0
      Jakob Stoklund Olesen authored
      Original commit message:
      
      Remove floating point computations from SpillPlacement.cpp.
      
      Patch by Benjamin Kramer!
      
      Use the BlockFrequency class instead of floats in the Hopfield network
      computations. This rescales the node Bias field from a [-2;2] float
      range to two block frequencies BiasN and BiasP pulling in opposite
      directions. This construct has a more predictable behavior when block
      frequencies saturate.
      
      The per-node scaling factors are no longer necessary, assuming the block
      frequencies around a bundle are consistent.
      
      This patch can cause the register allocator to make different spilling
      decisions. The differences should be small.
      
      llvm-svn: 186434
      c5454ff0
    • Craig Topper's avatar
      Add 'const' qualifiers to static const char* variables. · d3a34f81
      Craig Topper authored
      llvm-svn: 186371
      d3a34f81
    • Manman Ren's avatar
      PEI: Support for non-zero SPAdj at beginning of a basic block. · b827123c
      Manman Ren authored
      We can have a FrameSetup in one basic block and the matching FrameDestroy
      in a different basic block when we have struct byval. In that case, SPAdj
      is not zero at beginning of the basic block.
      
      Modify PEI to correctly set SPAdj at beginning of each basic block using
      DFS traversal. We used to assume SPAdj is 0 at beginning of each basic block.
      
      PEI had an assert SPAdjCount || SPAdj == 0.
      If we have a Destroy <n> followed by a Setup <m>, PEI will assert failure.
      We can add an extra condition to make sure the pairs are matched:
        The pairs start with a FrameSetup.
      But since we are doing a much better job in the verifier, this patch removes
      the check in PEI.
      
      PR16393
      
      llvm-svn: 186364
      b827123c
  3. Jul 15, 2013
    • Manman Ren's avatar
      Machine Verifier: verify FrameSetup and FrameDestroy · aa6875b1
      Manman Ren authored
      1> on every path through the CFG, a FrameSetup <n> is always followed by a
         FrameDestroy <n> and a FrameDestroy is always followed by a FrameSetup.
      2> stack adjustments are identical on all CFG edges to a merge point.
      3> frame is destroyed at end of a return block.
      
      PR16393
      
      llvm-svn: 186350
      aa6875b1
    • Hal Finkel's avatar
      Remove invalid assert in DAGTypeLegalizer::RemapValue · 2f5e8e3d
      Hal Finkel authored
      There is a comment at the top of DAGTypeLegalizer::PerformExpensiveChecks
      which, in part, says:
      
        // Note that these invariants may not hold momentarily when processing a node:
        // the node being processed may be put in a map before being marked Processed.
      
      Unfortunately, this assert would be valid only if the above-mentioned invariant
      held unconditionally. This was causing llc to assert when, in fact,
      everything was fine.
      
      Thanks to Richard Sandiford for investigating this issue!
      
      Fixes PR16562.
      
      llvm-svn: 186338
      2f5e8e3d
    • Craig Topper's avatar
      Add 'const' qualifier to some arrays. · 06b3b665
      Craig Topper authored
      llvm-svn: 186312
      06b3b665
    • Eric Christopher's avatar
      Clarify comments. · 7980b957
      Eric Christopher authored
      llvm-svn: 186297
      7980b957
  4. Jul 14, 2013
  5. Jul 13, 2013
  6. Jul 12, 2013
  7. Jul 11, 2013
    • Craig Topper's avatar
    • Hal Finkel's avatar
      Initialize AsmPrinter::MF in the constructor · 6161b940
      Hal Finkel authored
      MF is normally initialized in AsmPrinter::SetupMachineFunction, but if the file
      contains only globals (no functions), then we need this to be initialized
      because, when encountering an error, lowerConstant() references it.
      
      This should fix the non-deterministic failures of
      test/CodeGen/X86/nonconst-static-iv.ll, etc.
      
      llvm-svn: 186068
      6161b940
    • Hal Finkel's avatar
      RegScavenger should not exclude undef uses · 743b1940
      Hal Finkel authored
      When computing currently-live registers, the register scavenger excludes undef
      uses. As a result, undef uses are ignored when computing the restore points of
      registers spilled into the emergency slots. While the register scavenger
      normally excludes from consideration, when scavenging, registers used by the
      current instruction, we need to not exclude undef uses. Otherwise, we might end
      up requiring more emergency spill slots than we have (in the case where the
      undef use *is* the currently-spilled register).
      
      Another bug found by llvm-stress.
      
      llvm-svn: 186067
      743b1940
  8. Jul 10, 2013
  9. Jul 09, 2013
    • Adrian Prantl's avatar
      Typo. · 19942885
      Adrian Prantl authored
      llvm-svn: 185971
      19942885
    • Adrian Prantl's avatar
      Reapply an improved version of r180816/180817. · 418d1d1e
      Adrian Prantl authored
      Change the informal convention of DBG_VALUE machine instructions so that
      we can express a register-indirect address with an offset of 0.
      The old convention was that a DBG_VALUE is a register-indirect value if
      the offset (operand 1) is nonzero. The new convention is that a DBG_VALUE
      is register-indirect if the first operand is a register and the second
      operand is an immediate. For plain register values the combination reg,
      reg is used. MachineInstrBuilder::BuildMI knows how to build the new
      DBG_VALUES.
      
      rdar://problem/13658587
      
      llvm-svn: 185966
      418d1d1e
    • Hal Finkel's avatar
      WidenVecRes_BUILD_VECTOR must use the first operand's type · e4dd5c29
      Hal Finkel authored
      Because integer BUILD_VECTOR operands may have a larger type than the result's
      vector element type, and all operands must have the same type, when widening a
      BUILD_VECTOR node by adding UNDEFs, we cannot use the vector element type, but
      rather must use the type of the existing operands.
      
      Another bug found by llvm-stress.
      
      llvm-svn: 185960
      e4dd5c29
    • Stephen Lin's avatar
      AArch64/PowerPC/SystemZ/X86: This patch fixes the interface, usage, and all · 73de7bf5
      Stephen Lin authored
      in-tree implementations of TargetLoweringBase::isFMAFasterThanMulAndAdd in
      order to resolve the following issues with fmuladd (i.e. optional FMA)
      intrinsics:
      
      1. On X86(-64) targets, ISD::FMA nodes are formed when lowering fmuladd
      intrinsics even if the subtarget does not support FMA instructions, leading
      to laughably bad code generation in some situations.
      
      2. On AArch64 targets, ISD::FMA nodes are formed for operations on fp128,
      resulting in a call to a software fp128 FMA implementation.
      
      3. On PowerPC targets, FMAs are not generated from fmuladd intrinsics on types
      like v2f32, v8f32, v4f64, etc., even though they promote, split, scalarize,
      etc. to types that support hardware FMAs.
      
      The function has also been slightly renamed for consistency and to force a
      merge/build conflict for any out-of-tree target implementing it. To resolve,
      see comments and fixed in-tree examples.
      
      llvm-svn: 185956
      73de7bf5
    • Hal Finkel's avatar
      DAGCombine tryFoldToZero cannot create illegal types after type legalization · 6c29bd90
      Hal Finkel authored
      When folding sub x, x (and other similar constructs), where x is a vector, the
      result is a vector of zeros. After type legalization, make sure that the input
      zero elements have a legal type. This type may be larger than the result's
      vector element type.
      
      This was another bug found by llvm-stress.
      
      llvm-svn: 185949
      6c29bd90
    • Alexander Potapenko's avatar
      Revert r185872 - "Stop emitting weak symbols into the "coal" sections" · 8d2d79d0
      Alexander Potapenko authored
      This patch broke `make check-asan` on Mac, causing ld warnings like the following one:
      
      ld: warning: direct access in __GLOBAL__I_a to global weak symbol
      ___asan_mapping_scale means the weak symbol cannot be overridden at
      runtime. This was likely caused by different translation units being
      compiled with different visibility settings.
      
      The resulting test binaries crashed with incorrect ASan warnings.
      
      llvm-svn: 185923
      8d2d79d0
    • Stephen Lin's avatar
      Style fixes: remove unnecessary braces for one-statement if blocks, no else... · 8e8424eb
      Stephen Lin authored
      Style fixes: remove unnecessary braces for one-statement if blocks, no else after return, etc. No funcionality change.
      
      llvm-svn: 185893
      8e8424eb
  10. Jul 08, 2013
Loading