Skip to content
  1. Nov 03, 2016
    • George Rimar's avatar
      [ELF] - Accept both "-" and "--" for Ttext/Tdata/Tbss options. · a705ab17
      George Rimar authored
      llvm-svn: 285900
      a705ab17
    • Malcolm Parsons's avatar
      Remove redundant calls to std::string::data() · 731ca0e8
      Malcolm Parsons authored
      Reviewers: aaron.ballman, mehdi_amini, dblaikie
      
      Subscribers: klimek, cfe-commits
      
      Differential Revision: https://reviews.llvm.org/D26276
      
      llvm-svn: 285899
      731ca0e8
    • Rafael Espindola's avatar
      Split getSHNDXTable in two. · 4fccc827
      Rafael Espindola authored
      Some clients already have the section table available.
      
      llvm-svn: 285898
      4fccc827
    • Rafael Espindola's avatar
      We already have the sections, pass them to getSHNDXTable. · 84d6a171
      Rafael Espindola authored
      llvm-svn: 285897
      84d6a171
    • Peter Smith's avatar
      [ELF] Do not create interworking thunks for undefined weak references. · 2227c7f4
      Peter Smith authored
      An undefined weak reference is given an address of 0 this will
      incorrectly trigger the creation of a Thumb to ARM interworking Thunk
      if there is a Thumb branch instruction to the symbol. This results in
      an error as Thunks only make sense to defined or shared symbols.
      
      We prevent this by detecting an undefined symbol and not creating a thunk
      for it.
      
      Differential Revision: https://reviews.llvm.org/D26239
      
      llvm-svn: 285896
      2227c7f4
    • Eugene Leviant's avatar
      Use globMatch() instead of llvm::regex in linker scripts · db688454
      Eugene Leviant authored
      This can speed up lld up to 5 times when linking applications 
      with large number of sections and using linker script.
      
      Differential revision: https://reviews.llvm.org/D26241
      
      llvm-svn: 285895
      db688454
    • Pavel Labath's avatar
      Link lldb-mi only to the llvm components it uses · 3aa330f9
      Pavel Labath authored
      Summary:
      liblldb does not re-export the llvm library contained within, so lldb-mi needs to
      manage its own dependencies. Right now it only uses the llvm support library.
      
      Reviewers: beanz, zturner, tfiala, clayborg, abidh
      
      Subscribers: ki.stfu, mgorny, lldb-commits
      
      Differential Revision: https://reviews.llvm.org/D26190
      
      llvm-svn: 285894
      3aa330f9
    • James Molloy's avatar
      [Thumb] Teach ISel how to lower compares of AND bitmasks efficiently · b60d8b19
      James Molloy authored
      This recommits r281323, which was backed out for two reasons. One, a selfhost failure, and two, it apparently caused Chromium failures. Actually, the latter was a red herring. The log has expired from the former, but I suspect that was a red herring too (actually caused by another problematic patch of mine). Therefore reapplying, and will watch the bots like a hawk.
      
      For the common pattern (CMPZ (AND x, #bitmask), #0), we can do some more efficient instruction selection if the bitmask is one consecutive sequence of set bits (32 - clz(bm) - ctz(bm) == popcount(bm)).
      
      1) If the bitmask touches the LSB, then we can remove all the upper bits and set the flags by doing one LSLS.
      2) If the bitmask touches the MSB, then we can remove all the lower bits and set the flags with one LSRS.
      3) If the bitmask has popcount == 1 (only one set bit), we can shift that bit into the sign bit with one LSLS and change the condition query from NE/EQ to MI/PL (we could also implement this by shifting into the carry bit and branching on BCC/BCS).
      4) Otherwise, we can emit a sequence of LSLS+LSRS to remove the upper and lower zero bits of the mask.
      
      1-3 require only one 16-bit instruction and can elide the CMP. 4 requires two 16-bit instructions but can elide the CMP and doesn't require materializing a complex immediate, so is also a win.
      
      llvm-svn: 285893
      b60d8b19
    • Pavel Labath's avatar
      Fix Timer unit test · 174c578b
      Pavel Labath authored
      I did not take into account that the output of the Dump function will be
      non-deterministic. Fix that by increasing of the times, this also makes the test
      check that the dump function sorts the output.
      
      llvm-svn: 285892
      174c578b
    • Pavel Labath's avatar
      Remove TimeSpecTimeout class · bfa601f6
      Pavel Labath authored
      the class is unused.
      
      llvm-svn: 285891
      bfa601f6
    • Pavel Labath's avatar
      Refactor Timer class · 96a3c91e
      Pavel Labath authored
      Summary:
      While removing TimeValue from this class I noticed a lot of room for small
      simplifications here. Main are:
        - instead of complicated start-stop dances to compute own time, each Timer
          just starts the timer once, and keeps track of the durations of child
          timers. Then the own time can be computed at the end by subtracting the two
          values.
        - remove double accounting in TimerStack - the stack object already knows the
          number of timers.
      The interface does not lend itself well to unit testing, but I have added a
      couple of tests which can (and did) catch any obvious errors.
      
      Reviewers: tberghammer, clayborg
      
      Subscribers: mgorny, lldb-commits
      
      Differential Revision: https://reviews.llvm.org/D26243
      
      llvm-svn: 285890
      96a3c91e
    • Serge Pavlov's avatar
      Reverted r285882 (Enhancement to test for -ast-print) · 09387683
      Serge Pavlov authored
      It broke buildbot on Windows.
      
      llvm-svn: 285889
      09387683
    • George Rimar's avatar
      [ELF] - Update after LLVM change (r285886) · 4d2aad9d
      George Rimar authored
      llvm-svn: 285888
      4d2aad9d
    • George Rimar's avatar
      [tools/obj2yaml] - Update after LLVM change r285886 · 02334f6c
      George Rimar authored
      llvm-svn: 285887
      02334f6c
    • George Rimar's avatar
      [Object/ELF] - Make getSymbol() return Error. · e1924f06
      George Rimar authored
      That is consistent with other methods around
      and helps to handle error on a caller side.
      
      Differential revision: https://reviews.llvm.org/D26247
      
      llvm-svn: 285886
      e1924f06
    • Ravitheja Addepally's avatar
      Test for YMMRegisters. · 0f80cc84
      Ravitheja Addepally authored
      Summary:
      This patch contains test for reading YMM Registers. The test basically
      contains an inferior that loads the ymm registers with a bit pattern
      and the python test executes register read to check if the bit pattern
      is correctly written in the registers. This test is repeated twice for
      each register with a different pattern for better sanity.
      
      Reviewers: tberghammer, zturner, clayborg
      
      Subscribers: tberghammer, danalbert, srhines
      
      Differential Revision: https://reviews.llvm.org/D26242
      
      llvm-svn: 285885
      0f80cc84
    • George Rimar's avatar
      [ELF] - Removed unused method declaration. NFC. · db37e5b5
      George Rimar authored
      llvm-svn: 285884
      db37e5b5
    • Olivier Goffart's avatar
      Fix heuristics skipping invalid ctor-initializers with C++11 · 3cd10137
      Olivier Goffart authored
      Use better heuristics to detect if a '{' might be the start of the constructor body
      or not. Especially when there is a completion token.
      
      Fix the test 'test/CodeCompletion/ctor-initializer.cpp ' when clang defaults to c++11
      
      The problem was is how we recover invalid code in the ctor-init part as we skip the
      function body. In particular, we want to know if a '{' is the begining of the body.
      In C++03, we always consider it as the beginng of the body. The problem was that in
      C++11, it may be the start of an initializer, so we skip over it, causing further
      parse errors later. (It is important that we are able to parse correctly the rest
      of the class definition, to know what are the class member, for example)
      
      This commit is improving the heuristics to decide if the '{' is starting a function
      body. The rules are the following: If we are not in a template argument, and that the
      previous tokens are not an identifier, or a >, then it is much more likely to be the
      function body. We verify that further by checking the token after the matching '}'
      
      The commit also fix the behavior when there is a code_completion token in the
      ctor-initializers.
      
      Differential Revision: https://reviews.llvm.org/D21502
      
      llvm-svn: 285883
      3cd10137
    • Serge Pavlov's avatar
      Enhancement to test for -ast-print · 459d4093
      Serge Pavlov authored
      Present tests for the functionality provided by command lime option
      `-ast-print` check only absence of crash. This change tries to make
      testing better, - the output produced by the compiler is compiled again
      with option `-print-ast` and both outputs are compared. Such test at
      least checks that the output is valid code. This change fixes only the
      test for pure C.
      
      llvm-svn: 285882
      459d4093
    • Jonas Hahnfeld's avatar
      [CMake] Disable rpath for UnitTests · 277a09d9
      Jonas Hahnfeld authored
      This was broken since rL285714.
      
      Differential Revision: https://reviews.llvm.org/D26246
      
      llvm-svn: 285881
      277a09d9
    • Vedant Kumar's avatar
      [Sema] Remove a dead assignment, NFC. · e03e5953
      Vedant Kumar authored
      The assignment to NextIsDereference is either followed by (1) another,
      unrelated assignment to NextIsDereference or by (2) an early loop exit.
      
      Found by clang's static analyzer: http://llvm.org/reports/scan-build
      
      (While we're at it fix a typo.)
      
      llvm-svn: 285879
      e03e5953
    • Craig Topper's avatar
      [AVX-512] Use 'vnot' instead of 'not' in patterns involving vXi1 vectors. · 7b9cc147
      Craig Topper authored
      This fixes selection of KANDN instructions and allows us to remove an extra set of patterns for KNOT and KXNOR.
      
      Reviewers: delena, igorb
      
      Subscribers: llvm-commits
      
      Differential Revision: https://reviews.llvm.org/D26134
      
      llvm-svn: 285878
      7b9cc147
    • Elena Demikhovsky's avatar
      Expandload and Compressstore intrinsics · caaceef4
      Elena Demikhovsky authored
      2 new intrinsics covering AVX-512 compress/expand functionality.
      This implementation includes syntax, DAG builder, operation lowering and tests.
      Does not include: handling of illegal data types, codegen prepare pass and the cost model.
      
      llvm-svn: 285876
      caaceef4
    • Rafael Espindola's avatar
      Pass the sections to getShtGroupSignature. · 7c7abafd
      Rafael Espindola authored
      This avoids fetching it again from the object.
      
      llvm-svn: 285875
      7c7abafd
    • Rafael Espindola's avatar
      Split getSection in two. · 203ff0d3
      Rafael Espindola authored
      This will allow avoiding repeated error checking in a few cases.
      
      llvm-svn: 285874
      203ff0d3
    • George Burgess IV's avatar
      [CodeGen] Use StringRef. NFC. · 70d15b36
      George Burgess IV authored
      Looks like CurFn's name outlives FunctionName, so we can just pass
      StringRefs around rather than going from a StringRef to a std::string
      to a const char* to a StringRef.
      
      llvm-svn: 285873
      70d15b36
    • Eric Fiselier's avatar
      [Sema] Allow static_cast<T&&>(e) to check explicit conversions for non-reference-related types. · e4e9e281
      Eric Fiselier authored
      Summary:
      [expr.cast.static] states:
      > 3. A glvalue of type “cv1 T1” can be cast to type “rvalue reference to cv2 T2” if “cv2 T2” is reference-compatible
      > with “cv1 T1”. The result refers to the object or the specified base class subobject thereof. If T2 is
      > an inaccessible or ambiguous base class of T1, a program that necessitates such a cast is
      > ill-formed.
      > 
      > 4. Otherwise, an expression e can be explicitly converted to a type T using a static_cast of the form static_-
      > cast<T>(e) if the declaration T t(e); is well-formed, for some invented temporary variable t. [...]
      
      Currently when checking p3 Clang will diagnose `static_cast<T&&>(e)` as invalid if the argument is not reference compatible with `T`. However I believe the correct behavior is to also check p4 in those cases.  For example:
      
      ```
      double y = 42;
      static_cast<int&&>(y); // this should be OK.  'int&& t(y)' is well formed
      ```
      
      Note that we still don't check p4 for non-reference-compatible types which are reference-related since  `T&& t(e);` should never be well formed in those cases.
      
      
      Reviewers: rsmith
      
      Subscribers: cfe-commits
      
      Differential Revision: https://reviews.llvm.org/D26231
      
      llvm-svn: 285872
      e4e9e281
    • Teresa Johnson's avatar
      [ThinLTO] Handle distributed backend case when doing renaming · 0515fb8d
      Teresa Johnson authored
      Summary:
      The recent change I made to consult the summary when deciding whether to
      rename (to handle inline asm) in r285513 broke the distributed build
      case. In a distributed backend we will only have a portion of the
      combined index, specifically for imported modules we only have the
      summaries for any imported definitions. When renaming on import we were
      asserting because no summary entry was found for a local reference being
      linked in (def wasn't imported).
      
      We only need to consult the summary for a renaming decision for the
      exporting module. For imports, we would have prevented importing any
      references to NoRename values already.
      
      Reviewers: mehdi_amini
      
      Subscribers: llvm-commits
      
      Differential Revision: https://reviews.llvm.org/D26250
      
      llvm-svn: 285871
      0515fb8d
    • Richard Smith's avatar
      Update manglings for C++17 noexcept function types to match Jason Merrill's · ef09aa90
      Richard Smith authored
      proposal on cxx-abi-dev earlier today.
      
      llvm-svn: 285870
      ef09aa90
    • Richard Smith's avatar
      Teach clang-query to dump types. I couldn't find any existing tests for... · 14d0484a
      Richard Smith authored
      Teach clang-query to dump types. I couldn't find any existing tests for clang-query's dumping functionality. =(
      
      llvm-svn: 285869
      14d0484a
    • Argyrios Kyrtzidis's avatar
      [index] Fix assertion hit when handling a declaration of C++'s 'operator new' function. · f12918d2
      Argyrios Kyrtzidis authored
      Part of this is to allow creating a USR for the canonical decl of that which is implicit and does
      not have a source location.
      
      rdar://28978992
      
      llvm-svn: 285868
      f12918d2
    • Richard Smith's avatar
      [p0012] Implement ABI support for throwing a noexcept function pointer and · 80b64f08
      Richard Smith authored
      catching as non-noexcept
      
      This implements the following proposal from cxx-abi-dev:
      
      http://sourcerytools.com/pipermail/cxx-abi-dev/2016-October/002988.html
      
      ... which is necessary for complete support of http://wg21.link/p0012,
      specifically throwing noexcept function and member function pointers and
      catching them as non-noexcept pointers.
      
      Differential Review: https://reviews.llvm.org/D26178
      
      llvm-svn: 285867
      80b64f08
    • Greg Bedwell's avatar
      Revert "[InstCombine] allow splat vector folds in adjustMinMax()" · 5fc6f945
      Greg Bedwell authored
      This reverts commit r285732.
      
      This change introduced a new assertion failure in the following
      testcase at -O2:
      
      typedef short __v8hi __attribute__((__vector_size__(16)));
      __v8hi foo(__v8hi &V1, __v8hi &V2, unsigned mask) {
        __v8hi Result = V1;
        if (mask & 0x80)
          Result[0] = V2[0];
        return Result;
      }
      
      llvm-svn: 285866
      5fc6f945
  2. Nov 02, 2016
Loading