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

  1. 11 May, 2015 1 commit
    • Tom Stellard's avatar
      Merging r226124: · c90bbf95
      Tom Stellard authored
      ```---------------------------------------------------------------------
      r226124 | hans | 2015-01-14 23:36:20 -0500 (Wed, 14 Jan 2015) | 2 lines
      
      utils/release/tag.sh: fix -revision vs. -rc check
      ```
      
      ---------------------------------------------------------------------
      
      llvm-svn: 237015
      c90bbf95
  2. 08 May, 2015 8 commits
    • Eric Fiselier's avatar
      Fix merge conflict that resulted in bad preprocessor block · c42617cc
      Eric Fiselier authored
      llvm-svn: 236872
      c42617cc
    • Tom Stellard's avatar
      Merging r236299: · adf9c878
      Tom Stellard authored
      ```---------------------------------------------------------------------
      r236299 | ericwf | 2015-04-30 18:49:37 -0700 (Thu, 30 Apr 2015) | 7 lines
      
      Disallow conversions from function pointers to void*.
      
      Function pointers and member function pointers cannot be converted to void*.
      libc++abi incorrectly allows this conversion for function pointers.
      
      Review URL: http://reviews.llvm.org/D8811
      ```
      
      ---------------------------------------------------------------------
      
      llvm-svn: 236868
      adf9c878
    • Tom Stellard's avatar
      Merging r234254: · de42153e
      Tom Stellard authored
      ```---------------------------------------------------------------------
      r234254 | ericwf | 2015-04-06 16:03:01 -0700 (Mon, 06 Apr 2015) | 25 lines
      
      [libcxxabi] Disallow Base to Derived conversions for catching pointers to members.
      
      Summary:
      I accidentally implemented the 4.11 [conv.mem] conversions for libc++abi in a recent patch. @majnemer pointed out that 5.13 [except.handle] only allows the pointer conversions in 4.10 and not those is 4.11. This patch no longer allows the following example code:
      
      ```c++
      struct A {};
      struct B : public A {};
      
      int main() {
        try {
          throw (int A::*)0;
        } catch (int B::*) {
          // exception caught here.
        }
      }
      ```
      
      Reviewers: mclow.lists, jroelofs, majnemer
      
      Reviewed By: majnemer
      
      Subscribers: majnemer, cfe-commits
      
      Differential Revision: http://reviews.llvm.org/D8845
      ```
      
      ---------------------------------------------------------------------
      
      llvm-svn: 236866
      de42153e
    • Tom Stellard's avatar
      Add tests missed in r236862 · 84c765b2
      Tom Stellard authored
      llvm-svn: 236864
      84c765b2
    • Tom Stellard's avatar
      Merging r233984: · 5b8be6aa
      Tom Stellard authored
      ```---------------------------------------------------------------------
      r233984 | ericwf | 2015-04-02 16:26:37 -0700 (Thu, 02 Apr 2015) | 22 lines
      
      [libcxxabi] Fix multi-level pointer conversions and pointer to member conversion detection.
      
      Summary:
      Currently there are bugs in out detection of multi-level pointer conversions and pointer to member conversions. This patch fixes the following issues.
      
      * Allow multi-level pointers with different nested qualifiers.
      * Allow multi-level mixed pointers to objects and pointers to members with different nested qualifiers.
      * Allow conversions from `int Base::*` to `int Derived::*` but only for non-nested pointers.
      
      There is still some work that needs to be done to clean this patch up but I want to get some input on it.
      Open questions:
      
      * Does `__pointer_to_member_type_info::can_catch(...)` need to adjust the pointer if a base to derived conversion is performed?
      
      
      Reviewers: danalbert, compnerd, mclow.lists
      
      Reviewed By: mclow.lists
      
      Subscribers: cfe-commits
      
      Differential Revision: http://reviews.llvm.org/D8758
      ```
      
      ---------------------------------------------------------------------
      
      llvm-svn: 236862
      5b8be6aa
    • Tom Stellard's avatar
      Merging r231852: · bdb73c27
      Tom Stellard authored
      ```---------------------------------------------------------------------
      r231852 | ericwf | 2015-03-10 14:32:53 -0700 (Tue, 10 Mar 2015) | 1 line
      
      Remove unneeded const_cast in readPointerHelper. Pointed out by jroelofs
      ```
      
      ---------------------------------------------------------------------
      
      llvm-svn: 236861
      bdb73c27
    • Tom Stellard's avatar
      Merging r231839: · 84bbfdce
      Tom Stellard authored
      ```---------------------------------------------------------------------
      r231839 | ericwf | 2015-03-10 13:43:34 -0700 (Tue, 10 Mar 2015) | 11 lines
      
      [libcxx] Fix PR21580 - Undefined behavior in readEncodedPointer()
      
      Summary: This patch fixes a bug in `readEncodedPointer()` where it would read from memory that was not suitably aligned. This patch fixes it by using memcpy.
      
      Reviewers: danalbert, echristo, compnerd, mclow.lists
      
      Reviewed By: compnerd, mclow.lists
      
      Subscribers: cfe-commits
      
      Differential Revision: http://reviews.llvm.org/D8179
      ```
      
      ---------------------------------------------------------------------
      
      llvm-svn: 236860
      84bbfdce
    • Tom Stellard's avatar
      Merging r229413: · 1c30c229
      Tom Stellard authored
      ```---------------------------------------------------------------------
      r229413 | atrick | 2015-02-16 13:10:47 -0500 (Mon, 16 Feb 2015) | 16 lines
      
      AArch64: Safely handle the incoming sret call argument.
      
      This adds a safe interface to the machine independent InputArg struct
      for accessing the index of the original (IR-level) argument. When a
      non-native return type is lowered, we generate the hidden
      machine-level sret argument on-the-fly. Before this fix, we were
      representing this argument as OrigArgIndex == 0, which is an outright
      lie. In particular this crashed in the AArch64 backend where we
      actually try to access the type of the original argument.
      
      Now we use a sentinel value for machine arguments that have no
      original argument index. AArch64, ARM, Mips, and PPC now check for this
      case before accessing the original argument.
      
      Fixes <rdar://19792160> Null pointer assertion in AArch64TargetLowering
      ```
      
      ---------------------------------------------------------------------
      
      llvm-svn: 236856
      1c30c229
  3. 07 May, 2015 1 commit
    • Tom Stellard's avatar
      Merging r234977: · 88aadd21
      Tom Stellard authored
      ```---------------------------------------------------------------------
      r234977 | lhames | 2015-04-15 00:46:01 -0400 (Wed, 15 Apr 2015) | 5 lines
      
      [RuntimeDyld] Add casts to make delta computation 64-bit.
      
      Hopefully this will fix the i686/msvc build failure described at:
      http://bb.pgr.jp/builders/ninja-clang-i686-msc18-R/builds/803
      ```
      
      ---------------------------------------------------------------------
      
      llvm-svn: 236784
      88aadd21
  4. 05 May, 2015 2 commits
    • Tom Stellard's avatar
      Merging r235931: · 23436bb0
      Tom Stellard authored
      ```---------------------------------------------------------------------
      r235931 | aaron | 2015-04-27 18:31:12 -0400 (Mon, 27 Apr 2015) | 2 lines
      
      Check whether the operand to a noexcept expression is valid or not. Fixes PR15842.
      ```
      
      ---------------------------------------------------------------------
      
      llvm-svn: 236502
      23436bb0
    • Tom Stellard's avatar
      Merging r230564: · 512e243a
      Tom Stellard authored
      ```---------------------------------------------------------------------
      r230564 | spatel | 2015-02-25 17:46:08 -0500 (Wed, 25 Feb 2015) | 8 lines
      
      only propagate equality comparisons of FP values that we are certain are non-zero
      
      This is a follow-on to r227491 which tightens the check for propagating FP
      values. If a non-constant value happens to be a zero, we would hit the same
      bug as before.
      
      Bug noted and patch suggested by Eli Friedman.
      ```
      
      ---------------------------------------------------------------------
      
      llvm-svn: 236499
      512e243a
  5. 04 May, 2015 13 commits
    • Tom Stellard's avatar
      Merging r236307: · affd58a9
      Tom Stellard authored
      ```---------------------------------------------------------------------
      r236307 | thomas.stellard | 2015-04-30 23:44:09 -0400 (Thu, 30 Apr 2015) | 4 lines
      
      R600/SI: Add VCC as an implict def of SI_KILL
      
      When SI_KILL has a register operand, its lowered form writes to vcc.
      ```
      
      ---------------------------------------------------------------------
      
      llvm-svn: 236452
      affd58a9
    • Tom Stellard's avatar
      Merging r236306: · 8a771f0d
      Tom Stellard authored
      ```---------------------------------------------------------------------
      r236306 | thomas.stellard | 2015-04-30 23:44:08 -0400 (Thu, 30 Apr 2015) | 11 lines
      
      R600/SI: Fix verifier errors from the SIAnnotateControlFlow pass
      
      This pass was generating 'Instruction does not dominate all uses!'
      errors for programs which had loops with a condition variable that
      depended on the result of a phi instruction from outside of the loop.
      
      The pass was inserting new phi nodes outside of the loop which used values
      defined inside the loop.
      
      http://bugs.freedesktop.org/show_bug.cgi?id=90056
      ```
      
      ---------------------------------------------------------------------
      
      llvm-svn: 236451
      8a771f0d
    • Tom Stellard's avatar
      Merging r235662: · 820b01a8
      Tom Stellard authored
      ```---------------------------------------------------------------------
      r235662 | thomas.stellard | 2015-04-23 18:59:24 -0400 (Thu, 23 Apr 2015) | 2 lines
      
      R600: Correctly lower CONCAT_VECTOR nodes with more than 2 operands
      ```
      
      ---------------------------------------------------------------------
      
      llvm-svn: 236450
      820b01a8
    • Tom Stellard's avatar
      Merging r235641: · 94692a7b
      Tom Stellard authored
      ```---------------------------------------------------------------------
      r235641 | thomas.stellard | 2015-04-23 16:32:01 -0400 (Thu, 23 Apr 2015) | 9 lines
      
      R600/SI: Fix indirect addressing with a negative constant offset
      
      When the base register index of the vector plus the constant offset
      was less than zero, we were passing the wrong base register to the indirect
      addressing instruction.
      
      In this case, we need to set the base register to v0 and then add
      the computed (negative) index to m0.
      ```
      
      ---------------------------------------------------------------------
      
      llvm-svn: 236449
      94692a7b
    • Tom Stellard's avatar
      Merging r235524: · dc1f0687
      Tom Stellard authored
      ```---------------------------------------------------------------------
      r235524 | Matthew.Arsenault | 2015-04-22 13:10:44 -0400 (Wed, 22 Apr 2015) | 4 lines
      
      R600: Fix always inline pass breaking noinline functions
      
      No test since calls are not actually supported yet.
      ```
      
      ---------------------------------------------------------------------
      
      llvm-svn: 236448
      dc1f0687
    • Tom Stellard's avatar
      GCOV: Fix ABI breakage from r236303 · 034f3f6a
      Tom Stellard authored
      This effectively reverts the part of r236303, which added a new member
      to the GCOVOptions and broke ABI compatibility with 3.6.0.
      
      llvm-svn: 236445
      034f3f6a
    • Tom Stellard's avatar
      Merging r232786: · e1d60147
      Tom Stellard authored
      ```---------------------------------------------------------------------
      r232786 | david.majnemer | 2015-03-19 20:02:27 -0400 (Thu, 19 Mar 2015) | 7 lines
      
      Don't crash-on-valid when an inline function is friend of class template
      
      We assumed that the most recent declaration of an inline function would
      also be inline.  However, a more recent declaration can come from a
      friend declaration in a class template that is instantiated at the
      definition of the function.
      ```
      
      ---------------------------------------------------------------------
      
      llvm-svn: 236442
      e1d60147
    • Tom Stellard's avatar
      Merging r232675: · 67d49afc
      Tom Stellard authored
      ```---------------------------------------------------------------------
      r232675 | rtrieu | 2015-03-18 17:52:47 -0400 (Wed, 18 Mar 2015) | 9 lines
      
      When cloning LocalInstantiationScope's, don't update the current scope in Sema.
      
      Construction of LocalInstantiationScope automatically updates the current scope
      inside Sema.  However, when cloning a scope, the current scope does not change.
      Change the cloning function to preserve the current scope.
      
      Review: http://reviews.llvm.org/D8407
      BUG: https://llvm.org/bugs/show_bug.cgi?id=22931
      ```
      
      ---------------------------------------------------------------------
      
      llvm-svn: 236441
      67d49afc
    • Tom Stellard's avatar
      Merging r232425: · ed4cd429
      Tom Stellard authored
      ```---------------------------------------------------------------------
      r232425 | rtrieu | 2015-03-16 17:49:43 -0400 (Mon, 16 Mar 2015) | 4 lines
      
      Take the non-reference type when constructing a dummy expression.
      
      Otherwise, Expr will assert during construction with a reference type.
      ```
      
      ---------------------------------------------------------------------
      
      llvm-svn: 236440
      ed4cd429
    • Tom Stellard's avatar
      Merging r230603: · 7279da2a
      Tom Stellard authored
      ```---------------------------------------------------------------------
      r230603 | rtrieu | 2015-02-25 21:40:48 -0500 (Wed, 25 Feb 2015) | 8 lines
      
      Update assumption in template diffing about integer template arguments.
      
      Fix for PR22017.  Integer template arguments are automatically bit extended to
      the size of the integer type.  In template diffing, evaluated expressions were
      not having their results extending, leading to comparing two APSInt's with
      different widths.  Apply the proper bit extending when evaluating template
      arguments.  This mainly affected bool template arguments.
      ```
      
      ---------------------------------------------------------------------
      
      llvm-svn: 236439
      7279da2a
    • Tom Stellard's avatar
      Merging r226983: · c1ef02e7
      Tom Stellard authored
      ```---------------------------------------------------------------------
      r226983 | rtrieu | 2015-01-23 21:48:32 -0500 (Fri, 23 Jan 2015) | 16 lines
      
      When checking the template argument list, use a copy of that list for changes
      and only update the orginal list on a valid arugment list.  When checking an
      individual expression template argument, and conversions are required, update
      the expression in the template argument.  Since template arguments are
      speculatively checked, the copying of the template argument list prevents
      updating the template arguments when the list does not match the template.
      
      Additionally, clean up the integer checking code in the template diffing code.
      The code performs unneccessary conversions from APSInt to APInt.
      
      Fixes PR21758.
      
      This essentially reverts r224770 to recommits r224667 and r224668 with extra
      changes to prevent the template instantiation problems seen in PR22006.
      A test to catch the discovered problem is also added.
      ```
      
      ---------------------------------------------------------------------
      
      llvm-svn: 236438
      c1ef02e7
    • Tom Stellard's avatar
      Revert "Merging r232439:" · 6176eda8
      Tom Stellard authored
      This reverts commit r236305.
      
      This commit requires an ABI change to LLVM, which is not allowed for
      stable releases.
      
      llvm-svn: 236437
      6176eda8
    • Daniel Sanders's avatar
      [mips] Added release notes for 3.6.1. · e5d2d3d5
      Daniel Sanders authored
      llvm-svn: 236417
      e5d2d3d5
  6. 02 May, 2015 2 commits
    • Tom Stellard's avatar
      Merging r227574: · adee8738
      Tom Stellard authored
      ```---------------------------------------------------------------------
      r227574 | geek4civic | 2015-01-30 08:01:19 -0500 (Fri, 30 Jan 2015) | 2 lines
      
      [Cygming] Seek also chkstk_ms, or JIT fails with DLL builds. It is fixup for r227519.
      ```
      
      ---------------------------------------------------------------------
      
      llvm-svn: 236379
      adee8738
    • Tom Stellard's avatar
      Merging r227519: · 60e45dc3
      Tom Stellard authored
      ```---------------------------------------------------------------------
      r227519 | reid | 2015-01-29 18:58:04 -0500 (Thu, 29 Jan 2015) | 10 lines
      
      x86: Fix large model calls to __chkstk for dynamic allocas
      
      In the large code model, we now put __chkstk in %r11 before calling it.
      
      Refactor the code so that we only do this once. Simplify things by using
      __chkstk_ms instead of __chkstk on cygming. We already use that symbol
      in the prolog emission, and it simplifies our logic.
      
      Second half of PR18582.
      ```
      
      ---------------------------------------------------------------------
      
      llvm-svn: 236378
      60e45dc3
  7. 01 May, 2015 4 commits
    • Tom Stellard's avatar
      Merging r232439: · 64a3336c
      Tom Stellard authored
      ```---------------------------------------------------------------------
      r232439 | mail | 2015-03-16 19:52:21 -0400 (Mon, 16 Mar 2015) | 7 lines
      
      GCOV: Expose the -coverage-exit-block-before-body flag in clang -cc1
      
      This exposes the optional exit block placement logic from r232438 as a
      clang -cc1 option. There is a test on the llvm side, but there isn't
      really a way to inspect the gcov options from clang to test it here as
      well.
      ```
      
      ---------------------------------------------------------------------
      
      llvm-svn: 236305
      64a3336c
    • Tom Stellard's avatar
      Merging r232443: · 6cb21419
      Tom Stellard authored
      ```---------------------------------------------------------------------
      r232443 | mail | 2015-03-16 20:18:51 -0400 (Mon, 16 Mar 2015) | 4 lines
      
      llvm-cov: Warn instead of error if a .gcda has arcs from an exit block
      
      Patch by Vanderson M. Rosario. Thanks!
      ```
      
      ---------------------------------------------------------------------
      
      llvm-svn: 236304
      6cb21419
    • Tom Stellard's avatar
      Merging r232438: · b0d8a50b
      Tom Stellard authored
      ```---------------------------------------------------------------------
      r232438 | mail | 2015-03-16 19:52:03 -0400 (Mon, 16 Mar 2015) | 6 lines
      
      GCOV: Make the exit block placement from r223193 optional
      
      By default we want our gcov emission to stay 4.2 compatible, which
      means we need to continue emit the exit block last by default. We add
      an option to emit it before the body for users that need it.
      ```
      
      ---------------------------------------------------------------------
      
      llvm-svn: 236303
      b0d8a50b
    • Tom Stellard's avatar
      Merging r227503: · 1db992cc
      Tom Stellard authored
      ```---------------------------------------------------------------------
      r227503 | reid | 2015-01-29 17:33:00 -0500 (Thu, 29 Jan 2015) | 11 lines
      
      Update comments to use unreachable instead of llvm.trap, as implemented now
      
      win64: Call __chkstk through a register with the large code model
      
      Fixes half of PR18582. True dynamic allocas will still have a
      CALL64pcrel32 which will fail.
      
      Reviewers: majnemer
      
      Differential Revision: http://reviews.llvm.org/D7267
      ```
      
      ---------------------------------------------------------------------
      
      llvm-svn: 236302
      1db992cc
  8. 30 Apr, 2015 2 commits
    • Tom Stellard's avatar
      Merging r231259: · 8cd08dc9
      Tom Stellard authored
      ```---------------------------------------------------------------------
      r231259 | marek.olsak | 2015-03-04 12:33:45 -0500 (Wed, 04 Mar 2015) | 4 lines
      
      R600/SI: Add an intrinsic for S_FLBIT_I32 / V_FFBH_I32
      
      Required by OpenGL (ARB_gpu_shader5).
      ```
      
      ---------------------------------------------------------------------
      
      llvm-svn: 236263
      8cd08dc9
    • Daniel Sanders's avatar
      Merging r236099: · f15e2968
      Daniel Sanders authored
      ```---------------------------------------------------------------------
      r236099 | dsanders | 2015-04-29 13:28:58 +0100 (Wed, 29 Apr 2015) | 13 lines
      
      [mips] Correct 128-bit shifts on 64-bit targets.
      
      Summary:
      The existing code was correct for 32-bit GPR's but not 64-bit GPR's. It now
      accounts for both cases.
      
      Reviewers: vkalintiris
      
      Reviewed By: vkalintiris
      
      Subscribers: llvm-commits, mohit.bhakkad, sagar
      
      Differential Revision: http://reviews.llvm.org/D9337
      ```
      
      ---------------------------------------------------------------------
      
      llvm-svn: 236215
      f15e2968
  9. 29 Apr, 2015 7 commits
    • Pawel Bylica's avatar
      Correct syntax of getelementptr in regression test. NFC · f05802cf
      Pawel Bylica authored
      Bonus: unused variable removed.
       
      llvm-svn: 236116
      f05802cf
    • Daniel Sanders's avatar
      Attempt #2: Fix ABI compatibility with 3.6.0 by moving new virtual function to end of subclass. NFC · a931b20d
      Daniel Sanders authored
      The previous attempt at fixing this only moved the problem to the subclass
      vtable. We can safely move the function into the subclass so attempt to fix it
      that way.
      
      llvm-svn: 236112
      a931b20d
    • Pawel Bylica's avatar
      Merge r232176: ConstantFold: Fix big shift constant folding · f143d92b
      Pawel Bylica authored
      Constant folding for shift IR instructions ignores all bits above 32 of
      second argument (shift amount).
      Because of that, some undef results are not recognized and APInt can
      raise an assert failure if second argument has more than 64 bits.
      
      Patch by Paweł Bylica!
      
      Differential Revision: http://reviews.llvm.org/D7701
      
      llvm-svn: 236109
      f143d92b
    • Pawel Bylica's avatar
      Merge r231984: Handle big index in getelementptr instruction · b1af12d8
      Pawel Bylica authored
      CodeGen incorrectly ignores (assert from APInt) constant index bigger
      than 2^64 in getelementptr instruction. This is a test and fix for that.
      
      Patch by Paweł Bylica!
      
      Reviewed By: rnk
      
      Subscribers: majnemer, rnk, mcrosier, resistor, llvm-commits
      
      Differential Revision: http://reviews.llvm.org/D8219
      
      llvm-svn: 236108
      b1af12d8
    • Daniel Sanders's avatar
    • Tom Stellard's avatar
      Merging r234891: · 435864d3
      Tom Stellard authored
      ```---------------------------------------------------------------------
      r234891 | thomas.stellard | 2015-04-14 10:36:45 -0400 (Tue, 14 Apr 2015) | 12 lines
      
      R600/SI: Fix verifier error caused by SIAnnotateControlFlow
      
      This pass will always try to insert llvm.SI.ifbreak intrinsics
      in the same block that its conditional value is computed in.  This is
      a problem when conditions for breaks or continue are computed outside
      of the loop, because the llvm.SI.ifbreak intrinsic ends up being inserted
      outside of the loop.
      
      This patch fixes this problem by inserting the llvm.SI.ifbreak
      intrinsics in the loop header when the condition is computed outside
      the loop.
      ```
      
      ---------------------------------------------------------------------
      
      llvm-svn: 236072
      435864d3
    • Tom Stellard's avatar
      Merging r233080: · e3091ed6
      Tom Stellard authored
      ```---------------------------------------------------------------------
      r233080 | marek.olsak | 2015-03-24 09:40:38 -0400 (Tue, 24 Mar 2015) | 4 lines
      
      R600/SI: Insert more NOPs after READLANE on VI, don't use NOPs on CI
      
      This is a candidate for stable.
      ```
      
      ---------------------------------------------------------------------
      
      llvm-svn: 236071
      e3091ed6