Skip to content
  1. Mar 10, 2017
    • Matthias Braun's avatar
      CODE_OWNERS: Sort names · 46fe1467
      Matthias Braun authored
      llvm-svn: 297489
      46fe1467
    • Zachary Turner's avatar
      [Support] Don't return an error if realPath fails. · 3c0dc336
      Zachary Turner authored
      In openFileForRead, we would not previously return an error
      if real_path resolution failed.  After a recent patch, we
      started propagating this error up.  This caused a failure
      in clang when trying to call openFileForRead("nul").  This
      patch restores the previous behavior of not propagating this
      error up.
      
      llvm-svn: 297488
      3c0dc336
    • Weiming Zhao's avatar
      [Builtin][ARM] Fix test case for uldivmod · 9dd49054
      Weiming Zhao authored
      Summary: the inline asm should set those clobbered registers.
      
      Reviewers: rengolin, compnerd, jroelofs
      
      Reviewed By: jroelofs
      
      Subscribers: aemerson, llvm-commits
      
      Differential Revision: https://reviews.llvm.org/D30811
      
      llvm-svn: 297487
      9dd49054
    • Simon Pilgrim's avatar
      [X86][SSE] Added tests showing missed truncations for sitofp conversion · e54cd653
      Simon Pilgrim authored
      SelectionDAG::ComputeNumSignBits is poor at build_vector handling, meaning that we can't see that all the vXi64 sources are in fact sign extended i32 or smaller.
      
      llvm-svn: 297486
      e54cd653
    • Petar Jovanovic's avatar
      [mips][msa] Remove range checks for non-immediate sld.[bhwd] instructions · bc97ab28
      Petar Jovanovic authored
      Removes immediate range checks for these instructions, since they have GPR
      rt as their input operand.
      
      Patch by Stefan Maksimovic.
      
      Differential Revision: https://reviews.llvm.org/D30693
      
      llvm-svn: 297485
      bc97ab28
    • Zachary Turner's avatar
      Fix test failure when Home directory cannot be found. · aeab48ab
      Zachary Turner authored
      llvm-svn: 297484
      aeab48ab
    • Zachary Turner's avatar
      Add llvm::sys::fs::real_path. · e48ace6a
      Zachary Turner authored
      LLVM already has real_path like functionality, but it is
      cumbersome to use and involves clean up after (e.g. you have
      to call openFileForRead, then close the resulting FD).
      
      Furthermore, on Windows it doesn't work for directories since
      opening a directory and opening a file require slightly
      different flags.
      
      So I add a simple function `real_path` which works for all
      paths on all platforms and has a simple to use interface.
      
      In doing so, I add the ability to opt in to resolving tilde
      expressions (e.g. ~/foo), which are normally handled by
      the shell.
      
      Differential Revision: https://reviews.llvm.org/D30668
      
      llvm-svn: 297483
      e48ace6a
    • Amaury Sechet's avatar
      [SelectionDAG] Make SelectionDAG aware of the known bits in USUBO and SSUBO and SUBC. · 62e0759d
      Amaury Sechet authored
      Summary:
      Depends on D30379
      
      This improves the state of things for the sub class of operation.
      
      Reviewers: jyknight, nemanjai, mkuper, spatel, RKSimon, zvi, bkramer
      
      Subscribers: llvm-commits
      
      Differential Revision: https://reviews.llvm.org/D30436
      
      llvm-svn: 297482
      62e0759d
    • Simon Pilgrim's avatar
      [X86][MMX] Add tests showing missed opportunities to use MMX sitofp conversions · ed655f09
      Simon Pilgrim authored
      If we are transferring MMX registers to XMM for conversion we could use the MMX equivalents (CVTPI2PD + CVTPI2PS) without affecting rounding/exceptions etc.
      
      llvm-svn: 297481
      ed655f09
    • Jonathan Peyton's avatar
      Fix assertion failure when 'proclist' is used without 'explicit' in KMP_AFFINITY · de8d6591
      Jonathan Peyton authored
      This change fixes an assertion failure the in case KMP_AFFINITY is set with
      'proclist' specified but without 'explicit'
      e.g., KMP_AFFINITY=verbose,proclist=[0-31]
      
      Patch by Olga Malysheva
      
      Differential Revision: https://reviews.llvm.org/D30404
      
      llvm-svn: 297480
      de8d6591
    • Amaury Sechet's avatar
      [SelectionDAG] Make SelectionDAG aware of the known bits in UADDO and SADDO. · 69fa16c8
      Amaury Sechet authored
      Summary: As per title. This is extracted from D29872 and I threw SADDO in.
      
      Reviewers: jyknight, nemanjai, mkuper, spatel, RKSimon, zvi, bkramer
      
      Subscribers: llvm-commits
      
      Differential Revision: https://reviews.llvm.org/D30379
      
      llvm-svn: 297479
      69fa16c8
    • Tobias Grosser's avatar
      [isl++] Do not use enum prefix · 9839774e
      Tobias Grosser authored
      
      
      Instead of declaring a function as:
      
        inline val plain_get_val_if_fixed(enum dim type, unsigned int pos) const;
      
      we use:
      
        inline isl::val plain_get_val_if_fixed(isl::dim type, unsigned int pos) const;
      
      The first argument caused the following compile time error on windows:
      
        "error C3431: 'dim': a scoped enumeration cannot be redeclared as an
        unscoped enumeration"
      
      In some cases it is sufficient to just drop the 'enum' prefix, but for example
      for isl::set the 'enum class dim' type collides with the function name
      isl::set::dim and can consequently not be referenced. To avoid such kind of
      ambiguities in the future we add the isl:: prefix consistently to all types
      used.
      
      Reported-by: default avatarMichael Kruse <llvm@meinersbur.de>
      llvm-svn: 297478
      9839774e
    • Simon Pilgrim's avatar
      [X86][MMX] Add tests showing missed opportunities to use MMX fptosi conversions · c6b55729
      Simon Pilgrim authored
      If we are transferring XMM conversion results to MMX registers we could use the MMX equivalents (CVTPD2PI/CVTTPD2PI + CVTPS2PI/CVTTPS2PI) with affecting rounding/expections etc.
      
      llvm-svn: 297476
      c6b55729
    • Simon Pilgrim's avatar
      [X86][MMX] Updated bad stack spill shift value test to actually show the problem · b8856148
      Simon Pilgrim authored
      Cleaning up the ir had stopped showing the issue.
      
      llvm-svn: 297475
      b8856148
    • Simon Pilgrim's avatar
      [X86][MMX] Regenerate mmx bitcast tests · 67d25b29
      Simon Pilgrim authored
      llvm-svn: 297474
      67d25b29
    • Michael Kruse's avatar
      [Simplify] Add -polly-simplify pass. · 0446d81e
      Michael Kruse authored
      This new pass removes unnecessary accesses and writes. It currently
      supports 2 simplifications, but more are planned.
      
      It removes write accesses that write a loaded value back to the location
      it was loaded from. It is a typical artifact from DeLICM. Removing it
      will get rid of bogus dependencies later in dependency analysis.
      
      It also removes statements without side-effects. ScopInfo already
      removes these, but the removal of unnecessary writes can result in
      more side-effect free statements.
      
      Differential Revision: https://reviews.llvm.org/D30820
      
      llvm-svn: 297473
      0446d81e
    • Rafael Espindola's avatar
      Don't pass Dot to every callback. · 4595df94
      Rafael Espindola authored
      It is available from ScriptBase.
      
      llvm-svn: 297472
      4595df94
    • Simon Pilgrim's avatar
      [X86][MMX] Add test showing bad stack spill of shift value · caa9172b
      Simon Pilgrim authored
      i32 is spilled to stack but 64-bit mmx is reloaded - leaving garbage in the other half of the register
      
      llvm-svn: 297471
      caa9172b
    • Simon Pilgrim's avatar
      [X86][MMX] Regenerate mmx load folding tests · 63ad95ae
      Simon Pilgrim authored
      llvm-svn: 297470
      63ad95ae
    • Anastasia Stulova's avatar
      [OpenCL] Fix type compatibility check and generic AS mangling. · 81a25e35
      Anastasia Stulova authored
      1. Reimplemented conditional operator so that it checks
      compatibility of unqualified pointees of the 2nd and
      the 3rd operands (C99, OpenCL v2.0 6.5.15).
      
      Define QualTypes compatibility for OpenCL as following:
      
         - corresponding types are compatible (C99 6.7.3)
         - CVR-qualifiers are equal (C99 6.7.3)
         - address spaces are equal (implementation defined)
      
      2. Added generic address space to Itanium mangling.
      
      Review: D30037
      
      Patch by Dmitry Borisenkov!
      
      llvm-svn: 297468
      81a25e35
    • Andi-Bogdan Postelnicu's avatar
    • Tobias Grosser's avatar
      [DeadCodeElimination] Translate to C++ bindings · 3e618c33
      Tobias Grosser authored
      This pass is a small and self-contained example of a piece of code that was
      written with the isl C interface. The diff of this change nicely shows how the
      C++ bindings can improve the readability of the code by avoiding the long C
      function names and by avoiding any need for memory management.
      
      As you will see, no calls to isl_*_copy or isl_*_free are needed anymore.
      Instead the C++ interface takes care of automatically managing the objects.
      This may introduce internally additional copies, but due to the isl reference
      counting, such copies are expected to be cheap. For performance critical
      operations, we will later exploit move semantics to eliminate unnecessary
      copies that have shown to be costly.
      
      Below we give a set of examples that shows the benefit of the C++ interface vs.
      the pure C interface.
      
      Check properties
      ----------------
      
      Before:
      
        if (isl_aff_is_zero(aff) ||  isl_aff_is_one(aff))
          return true;
      
      After:
      
        if (Aff.is_zero() || Aff.is_one())
          return true;
      
      Type conversion
      ---------------
      
      Before:
      
        isl_union_pw_multi_aff *UPMA = isl_union_pw_multi_aff_from_union_map(umap);
      
      After:
      
        isl::union_pw_multi_aff UPMA = UMap;
      
      Type construction
      -----------------
      
      Before:
      
        auto *Empty = isl_union_map_empty(space);
      
      After:
      
        auto Empty = isl::union_map::empty(Space);
      
      Operations
      ----------
      
      Before:
      
        set = isl_union_set_intersect(set, set2);
      
      After:
      
        Set = Set.intersect(Set2);
      
      The use of isl::boolean in return types also adds an increases the robustness
      of Polly, as on conversion to true or false, we verify that no isl_bool_error
      has been returned and assert in case an error was returned. Before this change
      we would have just ignored the error and proceeded with (some) exection path.
      
      Tags: #polly
      
      Reviewed By: Meinersbur
      
      Differential Revision: https://reviews.llvm.org/D30619
      
      llvm-svn: 297466
      3e618c33
    • Alex Lorenz's avatar
      Print nested name specifiers for typedefs and type aliases · 76377dcf
      Alex Lorenz authored
      Printing typedefs or type aliases using clang_getTypeSpelling() is missing the
      namespace they are defined in. This is in contrast to other types that always
      yield the full typename including namespaces.
      
      Patch by Michael Reiher!
      
      Differential Revision: https://reviews.llvm.org/D29944
      
      llvm-svn: 297465
      76377dcf
    • Tobias Grosser's avatar
      [unittest] Translate isl tests to C++ bindings · 3cc57fa1
      Tobias Grosser authored
      For this translation we introduce two functions, valFromAPInt and APIntFromVal,
      to convert between isl::val and APInt. For now these are just proxies, but in
      the future they will replace the current isl_val* based conversion functions.
      
      The isl unit test cases benefit most from the new isl::boolean (from Michael
      Kruse), which can be explicitly casted to bool and which -- as part of this cast
      -- emits a check that no error condition has been triggered so far. This allows
      us to simplify
      
        EXPECT_EQ(isl_bool_true, isl_val_is_zero(IslZero));
      
      to
      
        EXPECT_TRUE(IslZero.is_zero());
      
      This simplification also becomes very clear in operator==, which changes from
      
        auto IsEqual = isl_set_is_equal(LHS.keep(), RHS.keep());
        EXPECT_NE(isl_bool_error, IsEqual);
        return IsEqual;
      
      to just
      
        return bool(LHS.is_equal(RHS));
      
      Some background for non-isl users. The isl C interface has an isl_bool type,
      which can be either true, false, or error. Hence, whenever a function returns
      a value of type isl_bool, an explicit error check should be considered. By
      using isl::boolean, we can just cast the isl::boolean to 'bool' or simply use
      the isl::boolean in a context where it will automatically be casted to bool
      (e.g., in an if-condition). When doing so, the C++ bindings automatically add
      code that verifies that the return value is not an error code. If it is, the
      program will warn about this and abort. For cases where errors are expected,
      isl::boolean provides checks such as boolean::is_true_or_error() or
      boolean::is_true_no_error() to explicitly control program behavior in case of
      error conditions.
      
      Thanks to the new automatic memory management, we also can avoid many calls to
      isl_*_free. For code that had previously been managed by IslPtr<>, many calls
      to give/take/copy are eliminated.
      
      Tags: #polly
      
      Reviewed By: Meinersbur
      
      Differential Revision: https://reviews.llvm.org/D30618
      
      llvm-svn: 297464
      3cc57fa1
    • Tobias Grosser's avatar
      [FlattenAlgo] Translate to C++ bindings · 51ebda8c
      Tobias Grosser authored
      Translate the full algorithm to use the new isl C++ bindings
      
      This is a large piece of code that has been written with the Polly IslPtr<>
      memory management tool, which only performed memory management, but did not
      provide a method interface. As such the code was littered with calls to
      give(), copy(), keep(), and take(). The diff of this change should give a
      good example how the new method interface simplifies the code by removing the
      need for switching between managed types and C functions all the time
      and consequently also the need to use the long C function names.
      
      These are a couple of examples comparing the old IslPtr memory management
      interface with the complete method interface.
      
      Check properties
      ----------------
      
      Before:
      
        if (isl_aff_is_zero(Aff.get()) ||  isl_aff_is_one(Aff.get()))
          return true;
      
      After:
      
        if (Aff.is_zero() || Aff.is_one())
          return true;
      
      Type conversion
      ---------------
      
      Before:
      
        isl_union_pw_multi_aff *UPMA =
            give(isl_union_pw_multi_aff_from_union_map(UMap.copy());
      
      After:
      
        isl::union_pw_multi_aff UPMA = UMap;
      
      Type construction
      -----------------
      
      Before:
      
        auto Empty = give(isl_union_map_empty(Space.copy());
      
      After:
      
        auto Empty = isl::union_map::empty(Space);
      
      Operations
      ----------
      
      Before:
      
        Set = give(isl_union_set_intersect(Set.copy(), Set2.copy());
      
      After:
      
        Set = Set.intersect(Set2);
      
      Tags: #polly
      
      Reviewed By: Meinersbur
      
      Differential Revision: https://reviews.llvm.org/D30617
      
      llvm-svn: 297463
      51ebda8c
    • Tobias Grosser's avatar
      Add method interface to isl C++ bindings · 4c24e579
      Tobias Grosser authored
      The isl C++ binding method interface introduces a thin C++ layer that allows
      to call isl methods directly on the memory managed C++ objects. This makes the
      relevant methods directly available via code-completion interfaces, allows for
      the use of overloading, conversion constructors, and many other nice C++
      features that make using isl a lot easier.
      
      The individual features will be highlighted in the subsequent commits.
      
      Tags: #polly
      
      Reviewed By: Meinersbur
      
      Differential Revision: https://reviews.llvm.org/D30616
      
      llvm-svn: 297462
      4c24e579
    • Gabor Horvath's avatar
      [analyzer] Extend block in critical section check with C11 and Pthread APIs. · 829c6bc0
      Gabor Horvath authored
      Patch by Zoltan Daniel Torok!
      
      Differential Revision: https://reviews.llvm.org/D29567
      
      llvm-svn: 297461
      829c6bc0
    • Simon Pilgrim's avatar
      Fix signed/unsigned comparison warnings · e9313ba2
      Simon Pilgrim authored
      llvm-svn: 297460
      e9313ba2
    • Simon Pilgrim's avatar
      Fix Wdocumentation warning · debcbef0
      Simon Pilgrim authored
      llvm-svn: 297459
      debcbef0
    • Simon Pilgrim's avatar
      [APInt] Add APInt::insertBits() method to insert an APInt into a larger APInt · b02667c4
      Simon Pilgrim authored
      We currently have to insert bits via a temporary variable of the same size as the target with various shift/mask stages, resulting in further temporary variables, all of which require the allocation of memory for large APInts (MaskSizeInBits > 64).
      
      This is another of the compile time issues identified in PR32037 (see also D30265).
      
      This patch adds the APInt::insertBits() helper method which avoids the temporary memory allocation and masks/inserts the raw bits directly into the target.
      
      Differential Revision: https://reviews.llvm.org/D30780
      
      llvm-svn: 297458
      b02667c4
    • Simon Dardis's avatar
      [mips][msa] Accept more values for constant splats · 7090d145
      Simon Dardis authored
      This patches teaches the MIPS backend to accept more values for constant
      splats. Previously, only 10 bit signed immediates or values that could be
      loaded using an ldi.[bhwd] instruction would be acceptted. This patch relaxes
      that constraint so that any constant value that be splatted is accepted.
      
      As a result, the constant pool is used less for vector operations, and the
      suite of bit manipulation instructions b(clr|set|neg)i can now be used with
      the full range of their immediate operand.
      
      Reviewers: slthakur
      
      Differential Revision: https://reviews.llvm.org/D30640
      
      llvm-svn: 297457
      7090d145
    • Artyom Skrobov's avatar
      imm_comp_XFORM (defined in ARMInstrThumb.td) duplicates imm_not_XFORM (defined in ARMInstrInfo.td) · 94fb0bb6
      Artyom Skrobov authored
      Reviewers: grosbach, rengolin, jmolloy
      
      Reviewed By: jmolloy
      
      Subscribers: aemerson, llvm-commits
      
      Differential Revision: https://reviews.llvm.org/D30782
      
      llvm-svn: 297456
      94fb0bb6
    • Krasimir Georgiev's avatar
      [clang-format] Use a reference in loop variable; NFC · d86c25d6
      Krasimir Georgiev authored
      llvm-svn: 297455
      d86c25d6
    • Sanne Wouda's avatar
      [Assembler] Add location info to unary expressions. · 9dfa6ade
      Sanne Wouda authored
      Summary:
      This is a continuation of D28861.  Add an SMLoc to MCUnaryExpr such that
      a better diagnostic can be given in case of an error in later stages of
      assembling.
      
      Reviewers: rengolin, grosbach, javed.absar, olista01
      
      Reviewed By: olista01
      
      Subscribers: llvm-commits
      
      Differential Revision: https://reviews.llvm.org/D30581
      
      llvm-svn: 297454
      9dfa6ade
    • Artyom Skrobov's avatar
      Refactor the multiply-accumulate combines to act on · 0cc80c1f
      Artyom Skrobov authored
      ARMISD::ADD[CE] nodes, instead of the generic ISD::ADD[CE].
      
      Summary:
      This allows for some simplification because the combines
      are no longer limited to just one go at the node before
      it gets legalized into an ARM target-specific one.
      
      Reviewers: jmolloy, rogfer01
      
      Subscribers: aemerson, llvm-commits, rengolin
      
      Differential Revision: https://reviews.llvm.org/D30401
      
      llvm-svn: 297453
      0cc80c1f
    • Tobias Grosser's avatar
      Introduce isl C++ bindings, Part 1: value_ptr style interface · deaef15f
      Tobias Grosser authored
      Over the last couple of months several authors of independent isl C++ bindings
      worked together to jointly design an official set of isl C++ bindings which
      combines their experience in developing isl C++ bindings. The new bindings have
      been designed around a value pointer style interface and remove the need for
      explicit pointer managenent and instead use C++ language features to manage isl
      objects.
      
      This commit introduces the smart-pointer part of the isl C++ bindings and
      replaces the current IslPtr<T> classes, which served the very same purpose, but
      had to be manually maintained. Instead, we now rely on automatically generated
      classes for each isl object, which provide value_ptr semantics.
      
      An isl object has the following smart pointer interface:
      
          inline set manage(__isl_take isl_set *ptr);
      
          class set {
            friend inline set manage(__isl_take isl_set *ptr);
            isl_set *ptr = nullptr;
            inline explicit set(__isl_take isl_set *ptr);
      
          public:
            inline set();
            inline set(const set &obj);
            inline set &operator=(set obj);
            inline ~set();
            inline __isl_give isl_set *copy() const &;
            inline __isl_give isl_set *copy() && = delete;
            inline __isl_keep isl_set *get() const;
            inline __isl_give isl_set *release();
            inline bool is_null() const;
          }
      
      The interface and behavior of the new value pointer style classes is inspired
      by http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3339.pdf, which
      proposes a std::value_ptr, a smart pointer that applies value semantics to its
      pointee.
      
      We currently only provide a limited set of public constructors and instead
      require provide a global overloaded type constructor method "isl::obj
      isl::manage(isl_obj *)", which allows to convert an isl_set* to an isl::set by
      calling 'S = isl::manage(s)'. This pattern models the make_unique() constructor
      for unique pointers.
      
      The next two functions isl::obj::get() and isl::obj::release() are taken
      directly from the std::value_ptr proposal:
      
      S.get() extracts the raw pointer of the object managed by S.
      S.release() extracts the raw pointer of the object managed by S and sets the
      object in S to null.
      
      We additionally add std::obj::copy(). S.copy() returns a raw pointer refering
      to a copy of S, which is a shortcut for "isl::obj(oldobj).release()", a
      functionality commonly needed when interacting directly with the isl C
      interface where all methods marked with __isl_take require consumable raw
      pointers.
      
      S.is_null() checks if S manages a pointer or if the managed object is currently
      null. We add this function to provide a more explicit way to check if the
      pointer is empty compared to a direct conversion to bool.
      
      This commit also introduces a couple of polly-specific extensions that cover
      features currently not handled by the official isl C++ bindings draft, but
      which have been provided by IslPtr<T> and are consequently added to avoid code
      churn. These extensions include:
      
      	- operator bool() : Conversion from objects to bool
      	- construction from nullptr_t
      	- get_ctx() method
      	- take/keep/give methods, which match the currently used naming
      	  convention of IslPtr<T> in Polly. They just forward to
      	  (release/get/manage).
      	- raw_ostream printers
      
      We expect that these extensions are over time either removed or upstreamed to
      the official isl bindings.
      
      We also export a couple of classes that have not yet been exported in isl (e.g.,
      isl::space)
      
      As part of the code review, the following two questions were asked:
      
      - Why do we not use a standard smart pointer?
      
      std::value_ptr was a proposal that has not been accepted. It is consequently
      not available in the standard library. Even if it would be available, we want
      to expand this interface with a complete method interface that is conveniently
      available from each managed pointer. The most direct way to achieve this is to
      generate a specialiced value style pointer class for each isl object type and
      add any additional methods to this class. The relevant changes follow in
      subsequent commits.
      
      - Why do we not use templates or macros to avoid code duplication?
      
      It is certainly possible to use templates or macros, but as this code is
      auto-generated there is no need to make writing this code more efficient. Also,
      most of these classes will be specialized with individual member functions in
      subsequent commits, such that there will be little code reuse to exploit. Hence,
      we decided to do so at the moment.
      
      These bindings are not yet officially part of isl, but the draft is already very
      stable. The smart pointer interface itself did not change since serveral months.
      Adding this code to Polly is against our normal policy of only importing
      official isl code. In this case however, we make an exception to showcase a
      non-trivial use case of these bindings which should increase confidence in these
      bindings and will help upstreaming them to isl.
      
      Tags: #polly
      
      Reviewed By: Meinersbur
      
      Differential Revision: https://reviews.llvm.org/D30325
      
      llvm-svn: 297452
      deaef15f
    • George Rimar's avatar
      WholeProgramDevirt: Fixed compilation error under MSVS2015. · 5d8aea10
      George Rimar authored
      It was introduced in:
      
      r296945
      WholeProgramDevirt: Implement exporting for single-impl devirtualization.
      ---------------------
      r296939
      WholeProgramDevirt: Add any unsuccessful llvm.type.checked.load devirtualizations to the list of llvm.type.test users.
      ---------------------
      
      Microsoft Visual Studio Community 2015
      Version 14.0.23107.0 D14REL
      Does not compile that code without additional brackets, showing multiple error like below:
      
      WholeProgramDevirt.cpp(1216): error C2958: the left bracket '[' found at 'c:\access_softek\llvm\lib\transforms\ipo\wholeprogramdevirt.cpp(1216)' was not matched correctly
      WholeProgramDevirt.cpp(1216): error C2143: syntax error: missing ']' before '}'
      WholeProgramDevirt.cpp(1216): error C2143: syntax error: missing ';' before '}'
      WholeProgramDevirt.cpp(1216): error C2059: syntax error: ']'
      
      llvm-svn: 297451
      5d8aea10
    • Haojian Wu's avatar
      [clang-rename] Introduce an unittest skeleton for clang-rename. · b7da0eb5
      Haojian Wu authored
      Summary: This will make references rename tests easier.
      
      Reviewers: ioeric
      
      Reviewed By: ioeric
      
      Subscribers: cfe-commits, alexfh, mgorny
      
      Differential Revision: https://reviews.llvm.org/D30813
      
      llvm-svn: 297450
      b7da0eb5
    • Tobias Grosser's avatar
      Update to isl-0.18-356-g0b05d01 · e5671e54
      Tobias Grosser authored
      This is a regular maintenance update.
      
      llvm-svn: 297449
      e5671e54
    • Simon Atanasyan's avatar
      [llvm-readobj] Support SHT_MIPS_DWARF section type flag · 6cfb101a
      Simon Atanasyan authored
      llvm-svn: 297448
      6cfb101a
Loading