Skip to content
  1. Jun 05, 2015
    • John Brawn's avatar
      [ARM] Add support for -sp- FPUs and FPU none to TargetParser · 985c04e8
      John Brawn authored
      These are added mainly for the benefit of clang, but this also means that they
      are now allowed in .fpu directives and we emit the correct .fpu directive when
      single-precision-only is used.
      
      Differential Revision: http://reviews.llvm.org/D10238
      
      llvm-svn: 239151
      985c04e8
    • John Brawn's avatar
      [ARM] Add knowledge of FPU subtarget features to TargetParser · d03d2292
      John Brawn authored
      Add getFPUFeatures to TargetParser, which gets the list of subtarget features
      that are enabled/disabled for each FPU, and use it when handling the .fpu
      directive.
      
      No functional change in this commit, though clang will start behaving
      differently once it starts using this.
      
      Differential Revision: http://reviews.llvm.org/D10237
      
      llvm-svn: 239150
      d03d2292
    • Artyom Skrobov's avatar
      [ARMTargetParser] Follow-up for r239099: one case was missed · acd1cd66
      Artyom Skrobov authored
      llvm-svn: 239147
      acd1cd66
    • Toma Tabacu's avatar
      Revert "[mips] [IAS] Restore STI.FeatureBits in .set pop." (r239144). · 399a56d7
      Toma Tabacu authored
      This is breaking the Windows buildbots.
      
      llvm-svn: 239145
      399a56d7
    • Toma Tabacu's avatar
      [mips] [IAS] Restore STI.FeatureBits in .set pop. · 89ebf88f
      Toma Tabacu authored
      Summary:
      Only restoring AvailableFeatures is not enough and will lead to buggy behaviour.
      For example, if we have a feature enabled and we ".set pop", the next time we try
      to ".set" that feature nothing will happen because the "!(STI.getFeatureBits()[Feature])"
      check will be false, because we didn't restore STI.FeatureBits.
      
      In order to fix this, we need to make MipsAssemblerOptions remember the STI.FeatureBits
      instead of the AvailableFeatures and then regenerate AvailableFeatures each time we ".set pop".
      This is because, AFAIK, there is no way to convert from AvailableFeatures back to STI.FeatureBits,
      but the reverse is possible by using ComputeAvailableFeatures(STI.FeatureBits).
      
      I also moved the updating of AssemblerOptions inside the "if" statement in
      setFeatureBits() and clearFeatureBits(), as there is no reason to update if
      nothing changes.
      
      Reviewers: dsanders, mkuper
      
      Reviewed By: dsanders
      
      Subscribers: llvm-commits
      
      Differential Revision: http://reviews.llvm.org/D9156
      
      llvm-svn: 239144
      89ebf88f
    • David Majnemer's avatar
      [LoopVectorize] Don't crash on zero-sized types in isInductionPHI · b58f32f7
      David Majnemer authored
      isInductionPHI wants to calculate the stride based on the pointee size.
      However, this is not possible when the pointee is zero sized.
      
      This fixes PR23763.
      
      llvm-svn: 239143
      b58f32f7
    • Andrea Di Biagio's avatar
      Simplify code; NFC. · eb33134c
      Andrea Di Biagio authored
      Also, moved test cases from CodeGen/X86/fold-buildvector-bug.ll into
      CodeGen/X86/buildvec-insertvec.ll and regenerated CHECK lines using
      update_llc_test_checks.py.
      
      llvm-svn: 239142
      eb33134c
    • David Majnemer's avatar
      [InstCombine] Rephrase fix to SimplifyWithOpReplaced · 6d808183
      David Majnemer authored
      I don't have the IR which is causing the build bot breakage but I can
      postulate as to why they are timing out:
      1. SimplifyWithOpReplaced was stripping flags from the simplified value.
      2. visitSelectInstWithICmp was overriding SimplifyWithOpReplaced because
         it's simplification wasn't correct.
      3. InstCombine would revisit the add instruction and note that it can
         rederive the flags.
      4. By modifying the value, we chose to revisit instructions which reuse
         the value.  One of the instructions is the original select, causing
         LLVM to never reach fixpoint.
      
      Instead, strip the flags only when we are sure we are going to perform
      the simplification.
      
      llvm-svn: 239141
      6d808183
    • Daniel Jasper's avatar
      Revert "[InstCombine] Don't miscompile safe increment idiom" · 917fa5ee
      Daniel Jasper authored
      This is breaking a lot of build bots and is causing very long-running
      compiles (infinite loops)?
      
      Likely, we shouldn't return nullptr?
      
      llvm-svn: 239139
      917fa5ee
    • Justin Bogner's avatar
      InstrProf: Fix reading of consecutive 32 bit coverage maps · d49d8eec
      Justin Bogner authored
      When we generate coverage data, we explicitly set each coverage map's
      alignment to 8 (See InstrProfiling::lowerCoverageData), but when we
      read the coverage data, we assume consecutive maps are exactly
      adjacent. When we're dealing with 32 bit, maps can end on a 4 byte
      boundary, causing us to think the padding is part of the next record.
      
      Fix this by adjusting the buffer to an appropriately aligned address
      between records.
      
      This is pretty awkward to test, as it requires a binary with multiple
      coverage maps to hit, so we'd need to check in multiple source files
      and a binary blob as inputs.
      
      llvm-svn: 239129
      d49d8eec
    • Jim Grosbach's avatar
      MC: Clean up naming in MCObjectFileInfo.h. · bb2591f5
      Jim Grosbach authored
      Init*() methods to init*().
      
      llvm-svn: 239121
      bb2591f5
    • Jim Grosbach's avatar
      MC: Clean up the naming for MCMachObjectWriter. NFC. · 56ed0bb1
      Jim Grosbach authored
      s/ExecutePostLayoutBinding/executePostLayoutBinding/
      s/ComputeSymbolTable/computeSymbolTable/
      s/BindIndirectSymbols/bindIndirectSymbols/
      s/RecordTLVPRelocation/recordTLVPRelocation/
      s/RecordScatteredRelocation/recordScatteredRelocation/
      s/WriteLinkerOptionsLoadCommand/writeLinkerOptionsLoadCommand/
      s/WriteLinkeditLoadCommand/writeLinkeditLoadCommand/
      s/WriteNlist/writeNlist/
      s/WriteDysymtabLoadCommand/writeDysymtabLoadCommand/
      s/WriteSymtabLoadCommand/writeSymtabLoadCommand/
      s/WriteSection/writeSection/
      s/WriteSegmentLoadCommand/writeSegmentLoadCommand/
      s/WriteHeader/writeHeader/
      
      llvm-svn: 239119
      56ed0bb1
    • Alexey Samsonov's avatar
      [Object, ELF] Don't assert on invalid magic in createELFObjectFile. · 49179ddb
      Alexey Samsonov authored
      Instead, return a proper error code from factory.
      
      llvm-svn: 239116
      49179ddb
    • David Majnemer's avatar
      [InstCombine] Don't miscompile safe increment idiom · 00f7d9ec
      David Majnemer authored
      We cleverly handle cases where computation done in one argument of a select
      instruction is suitable for the other operand, thus obviating the need
      of the select and the comparison.  However, the other operand cannot
      have flags.
      
      This fixes PR23757.
      
      llvm-svn: 239115
      00f7d9ec
    • Swaroop Sridhar's avatar
      Statepoint: Fix handling of Far Immediate calls · 70d18df1
      Swaroop Sridhar authored
      gc.statepoint intrinsics with a far immediate call target 
      were lowered incorrectly as pc-rel32 calls.
      
      This change fixes the problem, and generates an indirect call 
      via a scratch register.
      
      For example: 
      
      Intrinsic:
        %safepoint_token = call i32 (i64, i32, void ()*, i32, i32, ...) @llvm.experimental.gc.statepoint.p0f_isVoidf(i64 0, i32 0, void ()* inttoptr (i64 140727162896504 to void ()*), i32 0, i32 0, i32 0, i32 0)
      
      Old Incorrect Lowering:
        callq 140727162896504
      
      New Correct Lowering:
        movabsq $140727162896504, %rax 
        callq *%rax
      
      In lowerCallFromStatepoint(), the callee-target was modified and 
      represented as a "TargetConstant" node, rather than a "Constant" node.
      Undoing this modification enabled LowerCall() to generate the 
      correct CALL instruction.
      
      llvm-svn: 239114
      70d18df1
    • Alexey Samsonov's avatar
      [Object, ELF] Don't call llvm_unreachable() from createELFObjectFile. · 18ad2e54
      Alexey Samsonov authored
      Instead, return a proper error code from factory.
      
      llvm-svn: 239113
      18ad2e54
    • Charles Davis's avatar
      [Target/X86] Don't use callee-saved registers in a Win64 tail call on non-Windows. · da280728
      Charles Davis authored
      Summary:
      A small bit that I missed when I updated the X86 backend to account for
      the Win64 calling convention on non-Windows. Now we don't use dead
      non-volatile registers when emitting a Win64 indirect tail call on
      non-Windows.
      
      Should fix PR23710.
      
      Test Plan: Added test for the correct behavior based on the case I posted to PR23710.
      
      Reviewers: rnk
      
      Subscribers: llvm-commits
      
      Differential Revision: http://reviews.llvm.org/D10258
      
      llvm-svn: 239111
      da280728
    • Alexey Samsonov's avatar
    • Alexey Samsonov's avatar
      [Object, MachO] Don't crash on incomplete MachO segment load commands. · f8a7bf8c
      Alexey Samsonov authored
      Report proper error code from MachOObjectFile constructor if we
      can't parse another segment load command (we already return a proper
      error if segment load command contents is suspicious).
      
      llvm-svn: 239109
      f8a7bf8c
    • Jim Grosbach's avatar
      MC: Clean up naming in MCObjectWriter. NFC. · 36e60e91
      Jim Grosbach authored
      s/WriteObject/writeObject/
      s/RecordRelocation/recordRelocation/
      s/IsSymbolRefDifferenceFullyResolved/isSymbolRefDifferenceFullyResolved/
      s/Write8/write8/
      s/WriteLE16/writeLE16/
      s/WriteLE32/writeLE32/
      s/WriteLE64/writeLE64/
      s/WriteBE16/writeBE16/
      s/WriteBE32/writeBE32/
      s/WriteBE64/writeBE64/
      s/Write16/write16/
      s/Write32/write32/
      s/Write64/write64/
      s/WriteZeroes/writeZeroes/
      s/WriteBytes/writeBytes/
      
      llvm-svn: 239108
      36e60e91
    • Alexey Samsonov's avatar
      [Object, MachO] Simplify load segment parsing code. NFC. · e1a76ab8
      Alexey Samsonov authored
      llvm-svn: 239106
      e1a76ab8
    • Benjamin Kramer's avatar
      [SDAG switch lowering] Fix switch case -> or merging for 0 and INT_MIN · ff0fb693
      Benjamin Kramer authored
      The big/small ordering here is based on signed values so SmallValue will
      be INT_MIN and BigValue 0. This shouldn't be a problem but the code
      assumed that BigValue always had more bits set than SmallValue.
      
      We used to just miss the transformation, but a recent refactoring of
      mine turned this into an assertion failure.
      
      llvm-svn: 239105
      ff0fb693
  2. Jun 04, 2015
Loading