and though bugs are the bane of my existence, rest assured the wretched thing will get the best of care here

  1. 17 Jan, 2018 25 commits
    • Hans Wennborg's avatar
      Merging r322003: · 134a2c12
      Hans Wennborg authored
      ```---------------------------------------------------------------------
      r322003 | niravd | 2018-01-08 08:21:35 -0800 (Mon, 08 Jan 2018) | 11 lines
      
      [DAG] Teach BaseIndexOffset to correctly handle with indexed operations
      
      BaseIndexOffset address analysis incorrectly ignores offsets folded
      into indexed memory operations causing potential errors in alias
      analysis of pre-indexed operations.
      
      Reviewers: efriedma, RKSimon, hfinkel, jyknight
      
      Subscribers: hiraditya, javed.absar, llvm-commits
      
      Differential Revision: https://reviews.llvm.org/D41701
      ```
      
      ---------------------------------------------------------------------
      
      llvm-svn: 322693
      134a2c12
    • Hans Wennborg's avatar
      Merging r321751, r321806, and r321878: · d68c17bc
      Hans Wennborg authored
      ```---------------------------------------------------------------------
      r321751 | arsenm | 2018-01-03 10:45:37 -0800 (Wed, 03 Jan 2018) | 25 lines
      
      StructurizeCFG: Fix broken backedge detection
      
      The work order was changed in r228186 from SCC order
      to RPO with an arbitrary sorting function. The sorting
      function attempted to move inner loop nodes earlier. This
      was was apparently relying on an assumption that every block
      in a given loop / the same loop depth would be seen before
      visiting another loop. In the broken testcase, a block
      outside of the loop was encountered before moving onto
      another block in the same loop. The testcase would then
      structurize such that one blocks unconditional successor
      could never be reached.
      
      Revert to plain RPO for the analysis phase. This fixes
      detecting edges as backedges that aren't really.
      
      The processing phase does use another visited set, and
      I'm unclear on whether the order there is as important.
      An arbitrary order doesn't work, and triggers some infinite
      loops. The reversed RPO list seems to work and is closer
      to the order that was used before, minus the arbitary
      custom sorting.
      
      A few of the changed tests now produce smaller code,
      and a few are slightly worse looking.
      ```
      
      ---------------------------------------------------------------------
      
      ------------------------------------------------------------------------
      r321806 | arsenm | 2018-01-04 09:23:24 -0800 (Thu, 04 Jan 2018) | 4 lines
      
      StructurizeCFG: xfail one of the testcases from r321751
      
      It fails with -verify-region-info. This seems to be a issue
      with RegionInfo itself which existed before.
      ------------------------------------------------------------------------
      
      ------------------------------------------------------------------------
      r321878 | arsenm | 2018-01-05 09:51:36 -0800 (Fri, 05 Jan 2018) | 4 lines
      
      RegionInfo: Use report_fatal_error instead of llvm_unreachable
      
      Otherwise when using -verify-region-info in a release build the
      error won't be emitted.
      ------------------------------------------------------------------------
      
      llvm-svn: 322686
      d68c17bc
    • Hans Wennborg's avatar
      Merging r322313: · b539787a
      Hans Wennborg authored
      ```---------------------------------------------------------------------
      r322313 | matze | 2018-01-11 13:57:03 -0800 (Thu, 11 Jan 2018) | 18 lines
      
      PeepholeOptimizer: Do not form PHI with subreg arguments
      
      When replacing a PHI the PeepholeOptimizer currently takes the register
      class of the register at the first operand. This however is not correct
      if this argument has a subregister index.
      
      As there is currently no API to query the register class resulting from
      applying a subregister index to all registers in a class, we can only
      abort in these cases and not perform the transformation.
      
      This changes findNextSource() to require the end of all copy chains to
      not use a subregister if there is any PHI in the chain. I had to rewrite
      the overly complicated inner loop there to have a good place to insert
      the new check.
      
      This fixes https://llvm.org/PR33071 (aka rdar://32262041)
      
      Differential Revision: https://reviews.llvm.org/D40758
      ```
      
      ---------------------------------------------------------------------
      
      llvm-svn: 322684
      b539787a
    • Hans Wennborg's avatar
      Merging r322246: · 1219711c
      Hans Wennborg authored
      ```---------------------------------------------------------------------
      r322246 | ctopper | 2018-01-10 17:38:00 -0800 (Wed, 10 Jan 2018) | 1 line
      
      [X86] Fix vpshrd builtins to require an ICE for their constant argument to match vpshld.
      ```
      
      ---------------------------------------------------------------------
      
      llvm-svn: 322682
      1219711c
    • Hans Wennborg's avatar
      Merging r322223: · cb494e4e
      Hans Wennborg authored
      ```---------------------------------------------------------------------
      r322223 | matze | 2018-01-10 12:49:57 -0800 (Wed, 10 Jan 2018) | 5 lines
      
      TargetLoweringBase: The ios simulator has no bzero function.
      
      Make sure I really get back to the beahvior before my rewrite in r321035
      which turned out not to be completely NFC as I changed the behavior for
      the ios simulator environment.
      ```
      
      ---------------------------------------------------------------------
      
      llvm-svn: 322681
      cb494e4e
    • Hans Wennborg's avatar
      Merging r322106: · 95aeee71
      Hans Wennborg authored
      ```---------------------------------------------------------------------
      r322106 | abataev | 2018-01-09 11:08:22 -0800 (Tue, 09 Jan 2018) | 11 lines
      
      [COST]Fix PR35865: Fix cost model evaluation for shuffle on X86.
      
      Summary:
      If the vector type is transformed to non-vector single type, the compile
      may crash trying to get vector information about non-vector type.
      
      Reviewers: RKSimon, spatel, mkuper, hfinkel
      
      Subscribers: llvm-commits
      
      Differential Revision: https://reviews.llvm.org/D41862
      ```
      
      ---------------------------------------------------------------------
      
      llvm-svn: 322680
      95aeee71
    • Hans Wennborg's avatar
      Merging r322272: · 40aaf371
      Hans Wennborg authored
      ```---------------------------------------------------------------------
      r322272 | zvi | 2018-01-11 04:26:52 -0800 (Thu, 11 Jan 2018) | 15 lines
      
      X86: Fix LowerBUILD_VECTORAsVariablePermute for case Src is smaller than Indices
      
      Summary:
      As RKSimon suggested in pr35820, in the case that Src is smaller in
      bit-size than Indices, need to widen Src to avoid type mismatch.
      
      Fixes pr35820
      
      Reviewers: RKSimon, craig.topper
      
      Reviewed By: RKSimon
      
      Subscribers: llvm-commits
      
      Differential Revision: https://reviews.llvm.org/D41865
      ```
      
      ---------------------------------------------------------------------
      
      llvm-svn: 322679
      40aaf371
    • Hans Wennborg's avatar
      Merging r321779: · c1d3b5d6
      Hans Wennborg authored
      ```---------------------------------------------------------------------
      r321779 | rsmith | 2018-01-03 17:24:17 -0800 (Wed, 03 Jan 2018) | 7 lines
      
      PR35045: Convert injected-class-name to its corresponding simple-template-id
      during template argument deduction.
      
      We already did this when the injected-class-name was in P, but missed the case
      where it was in A. This (probably) can't happen except in implicit deduction
      guides.
      ```
      
      ---------------------------------------------------------------------
      
      llvm-svn: 322677
      c1d3b5d6
    • Hans Wennborg's avatar
      Merging r321777: · 122b42e1
      Hans Wennborg authored
      ```---------------------------------------------------------------------
      r321777 | rsmith | 2018-01-03 17:02:18 -0800 (Wed, 03 Jan 2018) | 2 lines
      
      PR35028: Retain duplicate alignas attributes in template instantiation.
      ```
      
      ---------------------------------------------------------------------
      
      llvm-svn: 322676
      122b42e1
    • Hans Wennborg's avatar
      Merging r321870, r321872, and r321994: · 0462903e
      Hans Wennborg authored
      ```---------------------------------------------------------------------
      r321870 | abataev | 2018-01-05 07:20:40 -0800 (Fri, 05 Jan 2018) | 1 line
      
      [SLP] Update test checks, NFC.
      ```
      
      ---------------------------------------------------------------------
      
      ------------------------------------------------------------------------
      r321872 | abataev | 2018-01-05 08:15:17 -0800 (Fri, 05 Jan 2018) | 1 line
      
      [SLP] Update more test checks, NFC.
      ------------------------------------------------------------------------
      
      ------------------------------------------------------------------------
      r321994 | abataev | 2018-01-08 06:43:06 -0800 (Mon, 08 Jan 2018) | 13 lines
      
      [SLP] Fix PR35777: Incorrect handling of aggregate values.
      
      Summary:
      Fixes the bug with incorrect handling of InsertValue|InsertElement
      instrucions in SLP vectorizer. Currently, we may use incorrect
      ExtractElement instructions as the operands of the original
      InsertValue|InsertElement instructions.
      
      Reviewers: mkuper, hfinkel, RKSimon, spatel
      
      Subscribers: llvm-commits
      
      Differential Revision: https://reviews.llvm.org/D41767
      ------------------------------------------------------------------------
      
      llvm-svn: 322675
      0462903e
    • Hans Wennborg's avatar
      Merging r322473: · cf9e4fbd
      Hans Wennborg authored
      ```---------------------------------------------------------------------
      r322473 | a.elovikov | 2018-01-15 02:56:07 -0800 (Mon, 15 Jan 2018) | 23 lines
      
      [LV] Don't call recordVectorLoopValueForInductionCast for newly-created IV from a trunc.
      
      Summary:
      This method is supposed to be called for IVs that have casts in their use-def
      chains that are completely ignored after vectorization under PSE. However, for
      truncates of such IVs the same InductionDescriptor is used during
      creation/widening of both original IV based on PHINode and new IV based on
      TruncInst.
      
      This leads to unintended second call to recordVectorLoopValueForInductionCast
      with a VectorLoopVal set to the newly created IV for a trunc and causes an
      assert due to attempt to store new information for already existing entry in the
      map. This is wrong and should not be done.
      
      Fixes PR35773.
      
      Reviewers: dorit, Ayal, mssimpso
      
      Reviewed By: dorit
      
      Subscribers: RKSimon, dim, dcaballe, hsaito, llvm-commits, hiraditya
      
      Differential Revision: https://reviews.llvm.org/D41913
      ```
      
      ---------------------------------------------------------------------
      
      llvm-svn: 322673
      cf9e4fbd
    • Hans Wennborg's avatar
      Merging r321791 and r321862: · d461c802
      Hans Wennborg authored
      ```---------------------------------------------------------------------
      r321791 | sam_parker | 2018-01-04 01:42:27 -0800 (Thu, 04 Jan 2018) | 4 lines
      
      [X86] Codegen test for PR37563
      
      Adding test to ease review of D41628.
      ```
      
      ---------------------------------------------------------------------
      
      ------------------------------------------------------------------------
      r321862 | sam_parker | 2018-01-05 00:47:23 -0800 (Fri, 05 Jan 2018) | 10 lines
      
      [DAGCombine] Fix for PR37563
      
      While searching for loads to be narrowed, equal sized loads were not
      added to the list, resulting in anyext loads not being converted to
      zext loads.
      
      https://bugs.llvm.org/show_bug.cgi?id=35763
      
      Differential Revision: https://reviews.llvm.org/D41628
      
      ------------------------------------------------------------------------
      
      llvm-svn: 322671
      d461c802
    • Hans Wennborg's avatar
      Merging r321991: · 7b7f4c7e
      Hans Wennborg authored
      ```---------------------------------------------------------------------
      r321991 | sam_parker | 2018-01-08 05:21:24 -0800 (Mon, 08 Jan 2018) | 9 lines
      
      [DAGCombine] Fix for PR35761
      
      I had falsely assumed that constant operands would be operand(1) of
      the bin ops that may need their constant operand to be masked.
      
      Bugzilla: https://bugs.llvm.org/show_bug.cgi?id=35761
      
      Differential Revision: https://reviews.llvm.org/D41667
      ```
      
      ---------------------------------------------------------------------
      
      llvm-svn: 322670
      7b7f4c7e
    • Hans Wennborg's avatar
      Merging r321993: · c3a8a286
      Hans Wennborg authored
      ```---------------------------------------------------------------------
      r321993 | abataev | 2018-01-08 06:33:11 -0800 (Mon, 08 Jan 2018) | 11 lines
      
      [SLP] Fix PR35628: Count external uses on extra reduction arguments.
      
      Summary:
      If the vectorized value is marked as extra reduction argument, its users
      are not considered as external users. Patch fixes this.
      
      Reviewers: mkuper, hfinkel, RKSimon, spatel
      
      Subscribers: llvm-commits
      
      Differential Revision: https://reviews.llvm.org/D41786
      ```
      
      ---------------------------------------------------------------------
      
      llvm-svn: 322669
      c3a8a286
    • Hans Wennborg's avatar
      Merging r321963: · 07a1fe8f
      Hans Wennborg authored
      ```---------------------------------------------------------------------
      r321963 | dim | 2018-01-07 08:45:11 -0800 (Sun, 07 Jan 2018) | 51 lines
      
      Add pre-C++11 is_constructible wrappers for 3 arguments
      
      Summary:
      After rL319736 for D28253 (which fixes PR28929), gcc cannot compile `<memory>` anymore in pre-C+11 modes, complaining:
      
      ```
      In file included from /usr/include/c++/v1/memory:648:0,
                       from test.cpp:1:
      /usr/include/c++/v1/memory: In static member function 'static std::__1::shared_ptr<_Tp> std::__1::shared_ptr<_Tp>::make_shared(_A0&, _A1&, _A2&)':
      /usr/include/c++/v1/memory:4365:5: error: wrong number of template arguments (4, should be at least 1)
           static_assert((is_constructible<_Tp, _A0, _A1, _A2>::value), "Can't construct object in make_shared" );
           ^
      In file included from /usr/include/c++/v1/memory:649:0,
                       from test.cpp:1:
      /usr/include/c++/v1/type_traits:3198:29: note: provided for 'template<class _Tp, class _A0, class _A1> struct std::__1::is_constructible'
       struct _LIBCPP_TEMPLATE_VIS is_constructible
                                   ^~~~~~~~~~~~~~~~
      In file included from /usr/include/c++/v1/memory:648:0,
                       from test.cpp:1:
      /usr/include/c++/v1/memory:4365:5: error: template argument 1 is invalid
           static_assert((is_constructible<_Tp, _A0, _A1, _A2>::value), "Can't construct object in make_shared" );
           ^
      /usr/include/c++/v1/memory: In static member function 'static std::__1::shared_ptr<_Tp> std::__1::shared_ptr<_Tp>::allocate_shared(const _Alloc&, _A0&, _A1&, _A2&)':
      /usr/include/c++/v1/memory:4444:5: error: wrong number of template arguments (4, should be at least 1)
           static_assert((is_constructible<_Tp, _A0, _A1, _A2>::value), "Can't construct object in allocate_shared" );
           ^
      In file included from /usr/include/c++/v1/memory:649:0,
                       from test.cpp:1:
      /usr/include/c++/v1/type_traits:3198:29: note: provided for 'template<class _Tp, class _A0, class _A1> struct std::__1::is_constructible'
       struct _LIBCPP_TEMPLATE_VIS is_constructible
                                   ^~~~~~~~~~~~~~~~
      In file included from /usr/include/c++/v1/memory:648:0,
                       from test.cpp:1:
      /usr/include/c++/v1/memory:4444:5: error: template argument 1 is invalid
           static_assert((is_constructible<_Tp, _A0, _A1, _A2>::value), "Can't construct object in allocate_shared" );
           ^
      ```
      
      This is also reported in https://bugs.freebsd.org/224946 (FreeBSD is apparently one of the very few projects that regularly builds programs against libc++ with gcc).
      
      The reason is that the static assertions are invoking `is_constructible` with three arguments, while gcc does not have the built-in `is_constructible` feature, and the pre-C++11 `is_constructible` wrappers in `<type_traits>` only provide up to two arguments.
      
      I have added additional wrappers for three arguments, modified the `is_constructible` entry point to take three arguments instead, and added a simple test to is_constructible.pass.cpp.
      
      Reviewers: EricWF, mclow.lists
      
      Reviewed By: EricWF
      
      Subscribers: krytarowski, cfe-commits, emaste
      
      Differential Revision: https://reviews.llvm.org/D41805
      ```
      
      ---------------------------------------------------------------------
      
      llvm-svn: 322659
      07a1fe8f
    • Hans Wennborg's avatar
      Merging r322623: · 1e8dfde5
      Hans Wennborg authored
      ```---------------------------------------------------------------------
      r322623 | avt77 | 2018-01-17 02:12:06 -0800 (Wed, 17 Jan 2018) | 3 lines
      
      Allow usage of X86-prefixes as separate instrs.
      Differential Revision: https://reviews.llvm.org/D42102
      ```
      
      ---------------------------------------------------------------------
      
      llvm-svn: 322654
      1e8dfde5
    • Hans Wennborg's avatar
      Merging r322390: · d8f5d67c
      Hans Wennborg authored
      ```---------------------------------------------------------------------
      r322390 | vsapsai | 2018-01-12 10:54:35 -0800 (Fri, 12 Jan 2018) | 20 lines
      
      [Lex] Avoid out-of-bounds dereference in LexAngledStringLiteral.
      
      Fix makes the loop in LexAngledStringLiteral more like the loops in
      LexStringLiteral, LexCharConstant. When we skip a character after
      backslash, we need to check if we reached the end of the file instead of
      reading the next character unconditionally.
      
      Discovered by OSS-Fuzz:
      https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=3832
      
      rdar://problem/35572754
      
      Reviewers: arphaman, kcc, rsmith, dexonsmith
      
      Reviewed By: rsmith, dexonsmith
      
      Subscribers: cfe-commits, rsmith, dexonsmith
      
      Differential Revision: https://reviews.llvm.org/D41423
      ```
      
      ---------------------------------------------------------------------
      
      llvm-svn: 322649
      d8f5d67c
    • Hans Wennborg's avatar
      Merging r322264: · 8f38b5ed
      Hans Wennborg authored
      ```---------------------------------------------------------------------
      r322264 | dim | 2018-01-11 00:03:22 -0800 (Thu, 11 Jan 2018) | 17 lines
      
      Fix thread race between SectionPiece's OutputOff and Live members
      
      Summary:
      As reported in bug 35788, rL316280 reintroduces a race between two
      members of SectionPiece, which share the same 64 bit memory location.
      
      To fix the race, check the hash before checking the Live member, as
      suggested by Rafael.
      
      Reviewers: ruiu, rafael
      
      Reviewed By: ruiu
      
      Subscribers: smeenai, emaste, llvm-commits
      
      Differential Revision: https://reviews.llvm.org/D41884
      ```
      
      ---------------------------------------------------------------------
      
      llvm-svn: 322648
      8f38b5ed
    • Hans Wennborg's avatar
      Merging r322041: · 5b930ddf
      Hans Wennborg authored
      ```---------------------------------------------------------------------
      r322041 | ruiu | 2018-01-08 15:12:42 -0800 (Mon, 08 Jan 2018) | 9 lines
      
      Do not use parallelForEach to call maybeCompress().
      
      Currently LLVM's paralellForEach has a problem with reentracy.
      That caused https://bugs.llvm.org/show_bug.cgi?id=35788 (lld somtimes
      hangs while linking Ruby 2.4) because maybeCompress calls writeTo which
      uses paralellForEach.
      
      This patch is to avoid using paralellForEach to call maybeCompress
      to workaround the issue.
      ```
      
      ---------------------------------------------------------------------
      
      llvm-svn: 322647
      5b930ddf
    • Hans Wennborg's avatar
      Merging r322056: · df84b50e
      Hans Wennborg authored
      ```---------------------------------------------------------------------
      r322056 | skatkov | 2018-01-08 20:37:06 -0800 (Mon, 08 Jan 2018) | 13 lines
      
      [CGP] Fix Complex addressing mode for offset
      
      If the offset is differ in two addressing mode we can continue only if
      ScaleReg is not set due to we will use it as merge of different offsets.
      
      It should fix PR35799 and PR35805.
      
      Reviewers: john.brawn, reames
      Reviewed By: reames
      Subscribers: llvm-commits
      Differential Revision: https://reviews.llvm.org/D41227
      ```
      
      ---------------------------------------------------------------------
      
      llvm-svn: 322645
      df84b50e
    • Hans Wennborg's avatar
      Merging r322259: · 62840bcc
      Hans Wennborg authored
      ```---------------------------------------------------------------------
      r322259 | smeenai | 2018-01-10 22:57:01 -0800 (Wed, 10 Jan 2018) | 11 lines
      
      [ELF] Fix SysV hash tables with --no-rosegment
      
      When setting up the chain, we copy over the bucket's previous symbol
      index, assuming that this index will be 0 (STN_UNDEF) for an unused
      bucket (marking the end of the chain). When linking with --no-rosegment,
      however, unused buckets will in fact contain the padding value, and so
      the hash table will end up containing invalid chains. Zero out the hash
      table section explicitly to avoid this, similar to what's already done
      for GNU hash sections.
      
      Differential Revision: https://reviews.llvm.org/D41928
      ```
      
      ---------------------------------------------------------------------
      
      llvm-svn: 322642
      62840bcc
    • Hans Wennborg's avatar
      Merging r322236: · c559574c
      Hans Wennborg authored
      ```---------------------------------------------------------------------
      r322236 | rsmith | 2018-01-10 15:08:26 -0800 (Wed, 10 Jan 2018) | 3 lines
      
      In C++17, when instantiating an out-of-line definition of an inline static data
      member, don't forget to instantiate the initializer too.
      ```
      
      ---------------------------------------------------------------------
      
      llvm-svn: 322641
      c559574c
    • Hans Wennborg's avatar
      Merging r322160: · 45bdca2f
      Hans Wennborg authored
      ```---------------------------------------------------------------------
      r322160 | hahnfeld | 2018-01-10 00:10:23 -0800 (Wed, 10 Jan 2018) | 5 lines
      
      [OMPT] Fix cast and printf of wait_id in lock test
      
      This didn't work on 32 bit platforms.
      
      Differential Revision: https://reviews.llvm.org/D41853
      ```
      
      ---------------------------------------------------------------------
      
      llvm-svn: 322640
      45bdca2f
    • Hans Wennborg's avatar
      Merging r322068: · 1515bfe4
      Hans Wennborg authored
      ```---------------------------------------------------------------------
      r322068 | pawosm01 | 2018-01-09 02:54:06 -0800 (Tue, 09 Jan 2018) | 3 lines
      
      Fix type mismatch in omp_control_tool() implementation that makes it run incorrectly on 32-bit machines.
      
      Differential Revision: https://reviews.llvm.org/D41854
      ```
      
      ---------------------------------------------------------------------
      
      llvm-svn: 322639
      1515bfe4
    • Hans Wennborg's avatar
      Merging r322350, r322405, r322420, r322593: · 684dcd3d
      Hans Wennborg authored
      ```---------------------------------------------------------------------
      r322350 | rtrieu | 2018-01-11 20:42:27 -0800 (Thu, 11 Jan 2018) | 6 lines
      
      [ODRHash] Don't hash friend functions.
      
      In certain combinations of templated classes and friend functions, the body
      of friend functions does not get propagated along with function signature.
      Exclude friend functions for hashing to avoid this case.
      ```
      
      ---------------------------------------------------------------------
      
      ------------------------------------------------------------------------
      r322405 | rtrieu | 2018-01-12 13:49:20 -0800 (Fri, 12 Jan 2018) | 2 lines
      
      Disable test for Windows to fix Windows buildbots.
      
      ------------------------------------------------------------------------
      
      ------------------------------------------------------------------------
      r322420 | rtrieu | 2018-01-12 15:13:33 -0800 (Fri, 12 Jan 2018) | 2 lines
      
      Try to suppress Windows testing again.
      
      ------------------------------------------------------------------------
      
      ------------------------------------------------------------------------
      r322593 | rtrieu | 2018-01-16 11:53:06 -0800 (Tue, 16 Jan 2018) | 6 lines
      
      Add context to why test was disabled on Windows
      
      test/Modules/odr_hash-Friend.cpp triggers an assertion in MicrosoftMangle.cpp
      This has been reported in PR35939
      
      
      ------------------------------------------------------------------------
      
      llvm-svn: 322632
      684dcd3d
  2. 16 Jan, 2018 12 commits
    • Hans Wennborg's avatar
      ReleaseNotes: add Zig to External Open Source Projects · 96ad2f96
      Hans Wennborg authored
      Patch by Andrew Kelley!
      
      Differential revision: https://reviews.llvm.org/D41875
      
      llvm-svn: 322567
      96ad2f96
    • Hans Wennborg's avatar
      Merging r321986: · 60151ce4
      Hans Wennborg authored
      ```---------------------------------------------------------------------
      r321986 | jhenderson | 2018-01-08 02:17:03 -0800 (Mon, 08 Jan 2018) | 25 lines
      
      [ELF] Compress debug sections after assignAddresses and support custom layout
      
      Previously, in r320472, I moved the calculation of section offsets and sizes
      for compressed debug sections into maybeCompress, which happens before
      assignAddresses, so that the compression had the required information. However,
      I failed to take account of relocations that patch such sections. This had two
      effects:
      
      1. A race condition existed when a debug section referred to a different debug
      section (see PR35788).
      2. References to symbols in non-debug sections would be patched incorrectly.
      This is because the addresses of such symbols are not calculated until after
      assignAddresses (this was a partial regression caused by r320472, but they
      could still have been broken before, in the event that a custom layout was used
      in a linker script).
      
      assignAddresses does not need to know about the output section size of
      non-allocatable sections, because they do not affect the value of Dot. This
      means that there is no longer a reason not to support custom layout of
      compressed debug sections, as far as I'm aware. These two points allow for
      delaying when maybeCompress can be called, removing the need for the loop I
      previously added to calculate the section size, and therefore the race
      condition. Furthermore, by delaying, we fix the issues of relocations getting
      incorrect symbol values, because they have now all been finalized.
      ```
      
      ---------------------------------------------------------------------
      
      llvm-svn: 322565
      60151ce4
    • Hans Wennborg's avatar
      Merging r322018: · e2ef189d
      Hans Wennborg authored
      ```---------------------------------------------------------------------
      r322018 | abataev | 2018-01-08 11:02:51 -0800 (Mon, 08 Jan 2018) | 9 lines
      
      [OPENMP] Current status of OpenMP support.
      
      Summary: Some info about supported features of OpenMP 4.5-5.0.
      
      Reviewers: hfinkel, rsmith
      
      Subscribers: kkwli0, Hahnfeld, cfe-commits
      
      Differential Revision: https://reviews.llvm.org/D39457
      ```
      
      ---------------------------------------------------------------------
      
      llvm-svn: 322564
      e2ef189d
    • Hans Wennborg's avatar
      Merging r321983: · 0458cc4c
      Hans Wennborg authored
      ```---------------------------------------------------------------------
      r321983 | smeenai | 2018-01-07 21:58:36 -0800 (Sun, 07 Jan 2018) | 10 lines
      
      [COFF] Initalize ErrorHandler with CanExitEarly value
      
      Previously, the COFF driver would call exit(1) from the
      ErrorHandler in the case of a link error, even if
      CanExitEarly=false was specified. Now it initializes
      the ErrorHandler in the same way that the ELF driver does.
      
      Patch by Andrew Kelley.
      
      Differential Revision: https://reviews.llvm.org/D41803
      ```
      
      ---------------------------------------------------------------------
      
      llvm-svn: 322563
      0458cc4c
    • Hans Wennborg's avatar
      Merging r321980: · 1a951945
      Hans Wennborg authored
      ```---------------------------------------------------------------------
      r321980 | phosek | 2018-01-07 18:23:10 -0800 (Sun, 07 Jan 2018) | 5 lines
      
      [llvm-readobj] Support -needed-libs option for Mach-O files
      
      This implements the -needed-libs option in Mach-O dumper.
      
      Differential Revision: https://reviews.llvm.org/D41527
      ```
      
      ---------------------------------------------------------------------
      
      llvm-svn: 322561
      1a951945
    • Hans Wennborg's avatar
      Merging r321964: · c94ab432
      Hans Wennborg authored
      ```---------------------------------------------------------------------
      r321964 | hahnfeld | 2018-01-07 08:54:36 -0800 (Sun, 07 Jan 2018) | 7 lines
      
      Correct types of pointers to doacross_num_done
      
      This field is defined as kmp_int32, so we should use neither
      pointers to kmp_int64 nor 64 bit atomic instructions.
      (Found while testing on a Raspberry Pi, 32 bit ARM)
      
      Differential Revision: https://reviews.llvm.org/D41656
      ```
      
      ---------------------------------------------------------------------
      
      llvm-svn: 322560
      c94ab432
    • Hans Wennborg's avatar
      Merging r321789: · 756262de
      Hans Wennborg authored
      ```---------------------------------------------------------------------
      r321789 | hiraditya | 2018-01-03 23:47:24 -0800 (Wed, 03 Jan 2018) | 8 lines
      
      [GVNHoist] Fix: PR35222 gvn-hoist incorrectly erases load in case of a loop
      
      Reviewers:
          dberlin
          sebpop
          eli.friedman
      
      Differential Revision: https://reviews.llvm.org/D41453
      ```
      
      ---------------------------------------------------------------------
      
      llvm-svn: 322558
      756262de
    • Hans Wennborg's avatar
      Merging r321754: · 7aa59cea
      Hans Wennborg authored
      ```---------------------------------------------------------------------
      r321754 | adrian | 2018-01-03 11:10:21 -0800 (Wed, 03 Jan 2018) | 9 lines
      
      -gmodules: Emit debug info for implicit module imports via #include.
      
      When a type is only used as a template parameter and that type is the
      only type imported from another #include'd module, no skeleton CU for
      that module is generated, so a consumer doesn't know where to find the
      type definition. By emitting an import declaration, we can force a
      skeleton CU to be generated for each imported module.
      
      rdar://problem/36266156
      ```
      
      ---------------------------------------------------------------------
      
      llvm-svn: 322557
      7aa59cea
    • Hans Wennborg's avatar
      Merging r321771: · c0067fe8
      Hans Wennborg authored
      ```---------------------------------------------------------------------
      r321771 | vedantk | 2018-01-03 15:11:32 -0800 (Wed, 03 Jan 2018) | 21 lines
      
      [CGBuiltin] Handle unsigned mul overflow properly (PR35750)
      
      r320902 fixed the IRGen for some types of checked multiplications. It
      did not handle unsigned overflow correctly in the case where the signed
      operand is negative (PR35750).
      
      Eli pointed out that on overflow, the result must be equal to the unique
      value that is equivalent to the mathematically-correct result modulo two
      raised to the k power, where k is the number of bits in the result type.
      
      This patch fixes the specialized IRGen from r320902 accordingly.
      
      Testing: Apart from check-clang, I modified the test harness from
      r320902 to validate the results of all multiplications -- not just the
      ones which don't overflow:
      
        https://gist.github.com/vedantk/3eb9c88f82e5c32f2e590555b4af5081
      
      llvm.org/PR35750, rdar://34963321
      
      Differential Revision: https://reviews.llvm.org/D41717
      ```
      
      ---------------------------------------------------------------------
      
      llvm-svn: 322555
      c0067fe8
    • Hans Wennborg's avatar
      Merging r321933: · e2c7eaa7
      Hans Wennborg authored
      ```---------------------------------------------------------------------
      r321933 | xazax | 2018-01-06 02:51:00 -0800 (Sat, 06 Jan 2018) | 4 lines
      
      [analyzer] Fix some check's output plist not containing the check name
      
      Differential Revision: https://reviews.llvm.org/D41538
      ```
      
      ---------------------------------------------------------------------
      
      llvm-svn: 322550
      e2c7eaa7
    • Hans Wennborg's avatar
      Merging r322103: · 9cf9cacd
      Hans Wennborg authored
      ```---------------------------------------------------------------------
      r322103 | tejohnson | 2018-01-09 10:32:53 -0800 (Tue, 09 Jan 2018) | 25 lines
      
      Fix crash when linking metadata with ODR type uniquing
      
      Summary:
      With DebugTypeODRUniquing enabled, during IR linking debug metadata
      in the destination module may be reached from the source module.
      This means that ConstantAsMetadata nodes (e.g. on DITemplateValueParameter)
      may contain a value the destination module. When trying to map such
      metadata nodes, we will attempt to map a GV already in the dest module.
      linkGlobalValueProto will end up with a source GV that is the same as
      the dest GV as well as the new GV. Trying to access the TypeMap for the
      source GV type, which is actually a dest GV type, hits an assertion
      since it appears that we have mapped into the source module (because the
      type is the value not a key into the map).
      
      Detect that we don't need to access the TypeMap in this case, since
      there is no need to create a bitcast from the new GV to the source GV
      type as they GV are the same.
      
      Fixes PR35722.
      
      Reviewers: mehdi_amini, pcc
      
      Subscribers: probinson, llvm-commits, eraman
      
      Differential Revision: https://reviews.llvm.org/D41624
      ```
      
      ---------------------------------------------------------------------
      
      llvm-svn: 322545
      9cf9cacd
    • Hans Wennborg's avatar
      Merging r322518: · 14adc65b
      Hans Wennborg authored
      ```---------------------------------------------------------------------
      r322518 | erichkeane | 2018-01-15 13:16:25 -0800 (Mon, 15 Jan 2018) | 4 lines
      
      Revert 319303: Add _Float128 as alias to __float128 to enable compilations on Fedora27/glibc2
      
      Differential Revision: https://reviews.llvm.org/D40673
      ```
      
      ---------------------------------------------------------------------
      
      llvm-svn: 322539
      14adc65b
  3. 11 Jan, 2018 1 commit
  4. 09 Jan, 2018 1 commit
  5. 04 Jan, 2018 1 commit
    • Hans Wennborg's avatar
      Merging r321762: · 9dd5a02f
      Hans Wennborg authored
      ```---------------------------------------------------------------------
      r321762 | juliehockett | 2018-01-03 14:10:11 -0800 (Wed, 03 Jan 2018) | 8 lines
      
      [clang-tidy] Update fuchsia-overloaded-operator to check for valid loc
      
      Updating fuchsia-overloaded-operator check to not issue warnings for
      invalid locations.
      
      Fixes PR35803.
      
      Differential Revision: https://reviews.llvm.org/D41708
      ```
      
      ---------------------------------------------------------------------
      
      llvm-svn: 321800
      9dd5a02f