Skip to content
  1. Nov 11, 2014
    • Chad Rosier's avatar
      [Reassociate] Canonicalize negative constants out of expressions. · 094ac773
      Chad Rosier authored
      This is a reapplication of r221171, but we only perform the transformation
      on expressions which include a multiplication.  We do not transform rem/div
      operations as this doesn't appear to be safe in all cases.
      
      llvm-svn: 221721
      094ac773
    • Kostya Serebryany's avatar
    • Kostya Serebryany's avatar
      Introduce -fsanitize-coverage=N flag · 75b4f9e1
      Kostya Serebryany authored
      Summary:
      This change makes the asan-coverge (formerly -mllvm -asan-coverge)
      accessible via a clang flag.
      Companion patch to LLVM is http://reviews.llvm.org/D6152
      
      Test Plan: regression tests, chromium
      
      Reviewers: samsonov
      
      Reviewed By: samsonov
      
      Subscribers: cfe-commits
      
      Differential Revision: http://reviews.llvm.org/D6153
      
      llvm-svn: 221719
      75b4f9e1
    • Kostya Serebryany's avatar
      Move asan-coverage into a separate phase. · 29a18dcb
      Kostya Serebryany authored
      Summary:
      This change moves asan-coverage instrumentation
      into a separate Module pass.
      The other part of the change in clang introduces a new flag
      -fsanitize-coverage=N.
      Another small patch will update tests in compiler-rt.
      
      With this patch no functionality change is expected except for the flag name.
      The following changes will make the coverage instrumentation work with tsan/msan
      
      Test Plan: Run regression tests, chromium.
      
      Reviewers: nlewycky, samsonov
      
      Reviewed By: nlewycky, samsonov
      
      Subscribers: llvm-commits
      
      Differential Revision: http://reviews.llvm.org/D6152
      
      llvm-svn: 221718
      29a18dcb
    • Marshall Clow's avatar
      Replaced checking in string_view::remove_suffix/remove_prefix by... · eb63c5e2
      Marshall Clow authored
      Replaced checking in string_view::remove_suffix/remove_prefix by _LIBCPP_ASSERT, since this is technically undefined behavior. Fixes PR#21496
      
      llvm-svn: 221717
      eb63c5e2
    • Alexey Samsonov's avatar
      Bundle conditions checked by UBSan with sanitizer kinds they implement. · e396bfc0
      Alexey Samsonov authored
      Summary:
      This change makes CodeGenFunction::EmitCheck() take several
      conditions that needs to be checked (all of them need to be true),
      together with sanitizer kinds these checks are for. This would allow
      to split one call into UBSan runtime into several calls in case
      different sanitizer kinds would have different recoverability
      settings.
      
      Tests should be fixed accordingly, I'm working on it.
      
      Test Plan: regression test suite.
      
      Reviewers: rsmith
      
      Reviewed By: rsmith
      
      Subscribers: cfe-commits
      
      Differential Revision: http://reviews.llvm.org/D6219
      
      llvm-svn: 221716
      e396bfc0
    • Fariborz Jahanian's avatar
      Remove this test too. · 902edb9a
      Fariborz Jahanian authored
      llvm-svn: 221715
      902edb9a
    • Fariborz Jahanian's avatar
      Revert r221702 until I address Richard Trieu's · 3365bfc6
      Fariborz Jahanian authored
      comments.
      
      llvm-svn: 221714
      3365bfc6
    • Alexey Samsonov's avatar
      Simplify the test by using multiple --check-prefix arguments · cfc9d3fe
      Alexey Samsonov authored
      llvm-svn: 221713
      cfc9d3fe
    • Duncan P. N. Exon Smith's avatar
      Revert "IR: MDNode => Value: Update for LLVM API change in r221375" · 2b1f278e
      Duncan P. N. Exon Smith authored
      This reverts commit r221376.
      
      The API change was reverted in r221711.
      
      llvm-svn: 221712
      2b1f278e
    • Duncan P. N. Exon Smith's avatar
      Revert "IR: MDNode => Value" · de36e804
      Duncan P. N. Exon Smith authored
      Instead, we're going to separate metadata from the Value hierarchy.  See
      PR21532.
      
      This reverts commit r221375.
      This reverts commit r221373.
      This reverts commit r221359.
      This reverts commit r221167.
      This reverts commit r221027.
      This reverts commit r221024.
      This reverts commit r221023.
      This reverts commit r220995.
      This reverts commit r220994.
      
      llvm-svn: 221711
      de36e804
    • Tom Roeder's avatar
      Fix build break: remove unused variable in FCFI. · 6312f4a4
      Tom Roeder authored
      llvm-svn: 221710
      6312f4a4
    • Frederic Riss's avatar
      Totally forget deallocated SDNodes in SDDbgInfo. · 8ad4f498
      Frederic Riss authored
      What would happen before that commit is that the SDDbgValues associated with
      a deallocated SDNode would be marked Invalidated, but SDDbgInfo would keep
      a map entry keyed by the SDNode pointer pointing to this list of invalidated
      SDDbgNodes. As the memory gets reused, the list might get wrongly associated
      with another new SDNode. As the SDDbgValues are cloned when they are transfered,
      this can lead to an exponential number of SDDbgValues being produced during
      DAGCombine like in http://llvm.org/bugs/show_bug.cgi?id=20893
      
      Note that the previous behavior wasn't really buggy as the invalidation made
      sure that the SDDbgValues won't be used. This commit can be considered a
      memory optimization and as such is really hard to validate in a unit-test.
      
      llvm-svn: 221709
      8ad4f498
    • Tom Roeder's avatar
      Add Forward Control-Flow Integrity. · eb7a303d
      Tom Roeder authored
      This commit adds a new pass that can inject checks before indirect calls to
      make sure that these calls target known locations. It supports three types of
      checks and, at compile time, it can take the name of a custom function to call
      when an indirect call check fails. The default failure function ignores the
      error and continues.
      
      This pass incidentally moves the function JumpInstrTables::transformType from
      private to public and makes it static (with a new argument that specifies the
      table type to use); this is so that the CFI code can transform function types
      at call sites to determine which jump-instruction table to use for the check at
      that site.
      
      Also, this removes support for jumptables in ARM, pending further performance
      analysis and discussion.
      
      Review: http://reviews.llvm.org/D4167
      llvm-svn: 221708
      eb7a303d
    • Colin LeMahieu's avatar
      [llvm-mc] Fixing case where if a file ended with non-newline whitespace or a... · eb4675fb
      Colin LeMahieu authored
      [llvm-mc] Fixing case where if a file ended with non-newline whitespace or a comma it would access invalid memory.
      Cleaned up parse loop.
      
      llvm-svn: 221707
      eb4675fb
    • Sanjay Patel's avatar
      Use rcpss/rcpps (X86) to speed up reciprocal calcs (PR21385). · e2e58928
      Sanjay Patel authored
      This is a first step for generating SSE rcp instructions for reciprocal
      calcs when fast-math allows it. This is very similar to the rsqrt optimization
      enabled in D5658 ( http://reviews.llvm.org/rL220570 ).
      
      For now, be conservative and only enable this for AMD btver2 where performance
      improves significantly both in terms of latency and throughput.
      
      We may never enable this codegen for Intel Core* chips because the divider circuits
      are just too fast. On SandyBridge, divss can be as fast as 10 cycles versus the 21
      cycle critical path for the rcp + mul + sub + mul + add estimate.
      
      Follow-on patches may allow configuration of the number of Newton-Raphson refinement
      steps, add AVX512 support, and enable the optimization for more chips.
      
      More background here: http://llvm.org/bugs/show_bug.cgi?id=21385
      
      Differential Revision: http://reviews.llvm.org/D6175
      
      llvm-svn: 221706
      e2e58928
    • Rafael Espindola's avatar
      Simplify testcase. NFC. · 07e694d2
      Rafael Espindola authored
      Thanks to Filipe Cabecinhas for the tip.
      
      llvm-svn: 221705
      07e694d2
    • David Blaikie's avatar
      PR16091 continued: Debug Info for member functions with undeduced return types. · 42edade9
      David Blaikie authored
      So DWARF5 specs out auto deduced return types as DW_TAG_unspecified_type
      with DW_AT_name "auto", and GCC implements this somewhat, but it
      presents a few problems to do this with Clang.
      
      GCC's implementation only applies to member functions where the auto
      return type isn't deduced immediately (ie: member functions of templates
      or member functions defined out of line). In the common case of an
      inline deduced return type function, GCC emits the DW_AT_type as the
      deduced return type.
      
      Currently GDB doesn't seem to behave too well with this debug info - it
      treats the return type as 'void', even though the definition of the
      function has the correctly deduced return type (I guess it sees the
      return type the declaration has, doesn't understand it, and assumes
      void). This means the function's ABI might be broken (non-trivial return
      types, etc), etc.
      
      Clang, on the other hand doesn't track this particular case of a
      deducable return type that is deduced immediately versus one that is
      deduced 'later'. So if we implement the DWARF5 representation, all
      deducible return type functions would get adverse GDB behavior
      (including deduced return type lambda functions, inline deduced return
      type functions, etc).
      
      Also, we can't just do this for auto types that are not deduced -
      because Clang marks even the declaration's return type as deduced (&
      provides the underlying type) once a definition is seen that allows the
      deduction. So we have to ignore even deduced types - but we can't do
      that for auto variables (because this representation only applies to
      function declarations - variables and function definitions need the real
      type so the function can be called, etc) so we'd need to add an extra
      flag to the type unwrapping/creation code to indicate when we want to
      see through deduced types and when we don't. It's also not as simple as
      just checking at the top level when building a function type (for one
      thing, we reuse the function type building for building function pointer
      types which might also have 'auto' in them - but be the type of a
      variable instead) because the auto might be arbitrarily deeply nested
      ("auto &", "auto (*)()", etc...)
      
      So, with all that said, let's do the simple thing that works in existing
      debuggers for now and treat these functions the same way we do function
      templates and implicit special members: omit them from the member list,
      since they can't be correctly called anyway (without knowing the return
      type the ABI isn't know and a function call could put the arguments in
      the wrong place) so they're not much use to the user.
      
      At some point in the future, when GDB understands the DWARF5
      representation better it might be worth plumbing through the extra type
      builder handling to avoid looking through AutoType for some callers,
      etc...
      
      llvm-svn: 221704
      42edade9
    • Bill Schmidt's avatar
      [PowerPC] Replace foul hackery with real calls to __tls_get_addr · 3d9674cf
      Bill Schmidt authored
      My original support for the general dynamic and local dynamic TLS
      models contained some fairly obtuse hacks to generate calls to
      __tls_get_addr when lowering a TargetGlobalAddress.  Rather than
      generating real calls, special GET_TLS_ADDR nodes were used to wrap
      the calls and only reveal them at assembly time.  I attempted to
      provide correct parameter and return values by chaining CopyToReg and
      CopyFromReg nodes onto the GET_TLS_ADDR nodes, but this was also not
      fully correct.  Problems were seen with two back-to-back stores to TLS
      variables, where the call sequences ended up overlapping with unhappy
      results.  Additionally, since these weren't real calls, the proper
      register side effects of a call were not recorded, so clobbered values
      were kept live across the calls.
      
      The proper thing to do is to lower these into calls in the first
      place.  This is relatively straightforward; see the changes to
      PPCTargetLowering::LowerGlobalTLSAddress() in PPCISelLowering.cpp.
      The changes here are standard call lowering, except that we need to
      track the fact that these calls will require a relocation.  This is
      done by adding a machine operand flag of MO_TLSLD or MO_TLSGD to the
      TargetGlobalAddress operand that appears earlier in the sequence.
      
      The calls to LowerCallTo() eventually find their way to
      LowerCall_64SVR4() or LowerCall_32SVR4(), which call FinishCall(),
      which calls PrepareCall().  In PrepareCall(), we detect the calls to
      __tls_get_addr and immediately snag the TargetGlobalTLSAddress with
      the annotated relocation information.  This becomes an extra operand
      on the call following the callee, which is expected for nodes of type
      tlscall.  We change the call opcode to CALL_TLS for this case.  Back
      in FinishCall(), we change it again to CALL_NOP_TLS for 64-bit only,
      since we require a TOC-restore nop following the call for the 64-bit
      ABIs.
      
      During selection, patterns in PPCInstrInfo.td and PPCInstr64Bit.td
      convert the CALL_TLS nodes into BL_TLS nodes, and convert the
      CALL_NOP_TLS nodes into BL8_NOP_TLS nodes.  This replaces the code
      removed from PPCAsmPrinter.cpp, as the BL_TLS or BL8_NOP_TLS
      nodes can now be emitted normally using their patterns and the
      associated printTLSCall print method.
      
      Finally, as a result of these changes, all references to get-tls-addr
      in its various guises are no longer used, so they have been removed.
      
      There are existing TLS tests to verify the changes haven't messed
      anything up).  I've added one new test that verifies that the problem
      with the original code has been fixed.
      
      llvm-svn: 221703
      3d9674cf
    • Fariborz Jahanian's avatar
      Patch to warn when logical evaluation of operand evalutes to a true value; · c5fd4844
      Fariborz Jahanian authored
      That this is a c-only patch. c++ already has this warning.
      This addresses rdar://18716393
      
      llvm-svn: 221702
      c5fd4844
    • Enrico Granata's avatar
      Move a bunch of summary formatters to oneliner mode. This makes more cases... · 944547de
      Enrico Granata authored
      Move a bunch of summary formatters to oneliner mode. This makes more cases eligible for oneline printing, and fixes rdar://18120906
      
      llvm-svn: 221701
      944547de
    • Rafael Espindola's avatar
      Use a 8 bit immediate when possible. · a9c28b68
      Rafael Espindola authored
      This fixes pr21529.
      
      llvm-svn: 221700
      a9c28b68
    • Daniel Jasper's avatar
      clang-format: Preserve trailing-comma logic even with comments. · 64a328e9
      Daniel Jasper authored
      Before:
        vector<int> SomeVector = {// aaa
                                  1, 2,
        };
      
      After:
        vector<int> SomeVector = {
            // aaa
            1, 2,
        };
      
      llvm-svn: 221699
      64a328e9
    • Richard Smith's avatar
      First half of CWG1962: decltype(__func__) should not be a reference type, · 57e18ac9
      Richard Smith authored
      because __func__ is supposed to act like a local static variable.
      
      llvm-svn: 221698
      57e18ac9
    • Marshall Clow's avatar
      Fix typo in allocator_traits::construct. This fixes PR14175, which shows up if... · 981f31ac
      Marshall Clow authored
      Fix typo in allocator_traits::construct. This fixes PR14175, which shows up if an allocator has a no-args construct method
      
      llvm-svn: 221697
      981f31ac
    • Kevin Enderby's avatar
      Fix a warning about ‘r_type’ may be used uninitialized. · 3eb73e1d
      Kevin Enderby authored
      Thanks to Aaron Ballman for noticing this!
      
      llvm-svn: 221696
      3eb73e1d
    • Dario Domizioli's avatar
      [X86][ELF] Fix PR20243 - leaf frame pointer bug with TLS access · e904e85f
      Dario Domizioli authored
      The ISel lowering for global TLS access in PIC mode was creating a pseudo 
      instruction that is later expanded to a call, but the code was not 
      setting the hasCalls flag in the MachineFrameInfo alongside the adjustsStack 
      flag. This caused some functions to be mistakenly recognized as leaf functions,
      and this in turn affected the decision to eliminate the frame pointer.
      
      With the fix, hasCalls is properly set and the leaf frame pointer is correctly
      preserved.
      
      llvm-svn: 221695
      e904e85f
    • Shawn Best's avatar
      Add -std=c99 for building the test case of TestValueVarUpdate - for Siva... · 590e943a
      Shawn Best authored
      Add -std=c99 for building the test case of TestValueVarUpdate - for Siva Chandra : http://reviews.llvm.org/D6201
      
      llvm-svn: 221694
      590e943a
    • Oliver Stannard's avatar
      LLVM incorrectly folds xor into select · 8c2c67e6
      Oliver Stannard authored
      LLVM replaces the SelectionDAG pattern (xor (set_cc cc x y) 1) with
      (set_cc !cc x y), which is only correct when the xor has type i1.
      Instead, we should check that the constant operand to the xor is all
      ones.
      
      llvm-svn: 221693
      8c2c67e6
    • Shawn Best's avatar
      Substitute cc with c++ when compiling c++ test files for Siva Chandra :... · 1ecb68d5
      Shawn Best authored
      Substitute cc with c++ when compiling c++ test files for Siva Chandra : http://reviews.llvm.org/D6199
      
      llvm-svn: 221692
      1ecb68d5
    • Fariborz Jahanian's avatar
      This patch fixes a crash after rebuilding call AST of · a29986c0
      Fariborz Jahanian authored
      an __unknown_anytype(...). In this case, we rebuild the
      vararg function type specially to convert the call expression
      to  something that IRGen can handle. However, FunctionDecl
      as rebuilt in RebuildUnknownAnyExpr::resolveDecl is bogus and
      results in crash when accessing its params later on. This
      patch fixes the crash by rebuilding the FunctionDecl to match
      its new resolved type. rdar://15297105.
      (patch reapplied after lldb issue was fixed in r221660).
      
      llvm-svn: 221691
      a29986c0
    • Marshall Clow's avatar
      Fixed a typo in a paper name: 4190 --> N4190 · f1ce9c17
      Marshall Clow authored
      llvm-svn: 221690
      f1ce9c17
    • Marshall Clow's avatar
      Added vector<T>::insert tests suggested by code coverage results · 862af587
      Marshall Clow authored
      llvm-svn: 221689
      862af587
    • Manuel Klimek's avatar
      DiagnosticParseKinds is close to running into DiagnosticASTKinds. · 6dffa35d
      Manuel Klimek authored
      $ grep "def " include/clang/Basic/DiagnosticParseKinds.td |wc -l
      396
      
      llvm-svn: 221688
      6dffa35d
    • Jay Foad's avatar
      [ASan] Fix use of -asan-instrument-assembly in tests · cf2d4b8e
      Jay Foad authored
      Summary:
      The option -asan-instrument-assembly is declared in the X86 backend.
      If I test on PowerPC configured with LLVM_TARGETS_TO_BUILD=All then the
      option is tolerated but ignored.
      If I test on PowerPC configured with LLVM_TARGETS_TO_BUILD=PowerPC then
      the testsuite fails with:
      [ 93%] Generating ASAN_INST_TEST_OBJECTS.gtest-all.cc.powerpc64-inline.o
      clang (LLVM option parsing): Unknown command line argument '-asan-instrument-assembly'.  Try: 'clang (LLVM option parsing) -help'
      
      Fix this inconsistency by only adding the option if that toolchain was
      built with the X86 backend included.
      
      Reviewers: kcc, samsonov, eugenis
      
      Reviewed By: eugenis
      
      Subscribers: llvm-commits
      
      Differential Revision: http://reviews.llvm.org/D6190
      
      llvm-svn: 221687
      cf2d4b8e
    • Vasileios Kalintiris's avatar
      [mips] Add preliminary support for the MIPS II target. · b2dd15f8
      Vasileios Kalintiris authored
      Summary:
      This patch enables code generation for the MIPS II target. Pre-Mips32
      targets don't have the MUL instruction, so we add the correspondent
      pattern that uses the MULT/MFLO combination in order to retrieve the
      product.
      
      This is WIP as we don't support code generation for select nodes due to
      the lack of conditional-move instructions.
      
      Reviewers: dsanders
      
      Subscribers: llvm-commits
      
      Differential Revision: http://reviews.llvm.org/D6150
      
      llvm-svn: 221686
      b2dd15f8
    • Vasileios Kalintiris's avatar
      [mips] Add hardware register name "hwr_ulr" ($29) · 8c1c95e9
      Vasileios Kalintiris authored
      The canonical name when printing assembly is still $29. The reason is that
      GAS does not accept "$hwr_ulr" at the moment.
      
      This addresses the comments from r221307, which reverted the original
      commit r221299.
      
      llvm-svn: 221685
      8c1c95e9
    • Andrea Di Biagio's avatar
      [X86] Add missing check for 'isINSERTPSMask' in method 'isShuffleMaskLegal'. · 5fa2e154
      Andrea Di Biagio authored
      This helps the DAGCombiner to identify more opportunities to fold shuffles.
      
      llvm-svn: 221684
      5fa2e154
    • Jason Molenda's avatar
    • Jason Molenda's avatar
      Put the current pc arrow back into the default disassembly format. · 466ffa56
      Jason Molenda authored
      I went back and forth on removing this - and tried dropping it for
      a few weeks.  But when you're working at an assembly language, it
      really is helpful to have this displayed to show where the current
      pc is.
      
      llvm-svn: 221682
      466ffa56
Loading