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

  1. 13 Feb, 2015 1 commit
    • Hans Wennborg's avatar
      Merging r229029, minus the test which didn't work on the branch: · 602ad0e6
      Hans Wennborg authored
      ```---------------------------------------------------------------------
      r229029 | chandlerc | 2015-02-12 18:30:01 -0800 (Thu, 12 Feb 2015) | 16 lines
      
      [IC] Fix a bug with the instcombine canonicalizing of loads and
      propagating of metadata.
      
      We were propagating !nonnull metadata even when the newly formed load is
      no longer of a pointer type. This is clearly broken and results in LLVM
      failing the verifier and aborting. This patch just restricts the
      propagation of !nonnull metadata to when we actually have a pointer
      type.
      
      This bug report and the initial version of this patch was provided by
      Charles Davis! Many thanks for finding this!
      
      We still need to add logic to round-trip the metadata correctly if we
      combine from pointer types to integer types and then back by using range
      metadata for the integer type loads. But this is the minimal and safe
      version of the patch, which is important so we can backport it into 3.6.
      ```
      
      ---------------------------------------------------------------------
      
      llvm-svn: 229036
      602ad0e6
  2. 12 Feb, 2015 8 commits
    • Hans Wennborg's avatar
      Merging r228969: · 022a4c41
      Hans Wennborg authored
      ```---------------------------------------------------------------------
      r228969 | hfinkel | 2015-02-12 14:43:52 -0800 (Thu, 12 Feb 2015) | 7 lines
      
      [SDAG] Don't try to use FP_EXTEND/FP_ROUND for int<->fp promotions
      
      The PowerPC backend has long promoted some floating-point vector operations
      (such as select) to integer vector operations. Unfortunately, this behavior was
      broken by r216555. When using FP_EXTEND/FP_ROUND for promotions, we must check
      that both the old and new types are floating-point types. Otherwise, we must
      use BITCAST as we did prior to r216555 for everything.
      ```
      
      ---------------------------------------------------------------------
      
      llvm-svn: 228986
      022a4c41
    • Hans Wennborg's avatar
      Merging r226616: · aae610a1
      Hans Wennborg authored
      ```---------------------------------------------------------------------
      r226616 | adrian | 2015-01-20 14:37:25 -0800 (Tue, 20 Jan 2015) | 2 lines
      
      DebugLocs without a scope should fail the verification.
      Follow-up to r226588.
      ```
      
      ---------------------------------------------------------------------
      
      llvm-svn: 228985
      aae610a1
    • Hans Wennborg's avatar
      Merging r226588: · e27e03b9
      Hans Wennborg authored
      ```---------------------------------------------------------------------
      r226588 | adrian | 2015-01-20 10:03:37 -0800 (Tue, 20 Jan 2015) | 1 line
      
      Add an assertion and prefer a crash over an infinite loop.
      ```
      
      ---------------------------------------------------------------------
      
      llvm-svn: 228984
      e27e03b9
    • Hans Wennborg's avatar
      Merging r228979: · 6a4ed8e3
      Hans Wennborg authored
      ```---------------------------------------------------------------------
      r228979 | majnemer | 2015-02-12 15:26:26 -0800 (Thu, 12 Feb 2015) | 8 lines
      
      X86: Don't crash if we can't decode the pshufb mask
      
      Constant pool entries are uniqued by their contents regardless of their
      type.  This means that a pshufb can have a shuffle mask which isn't a
      simple array of bytes.
      
      The code path which attempts to decode the mask didn't check for
      failure, causing PR22559.
      ```
      
      ---------------------------------------------------------------------
      
      llvm-svn: 228983
      6a4ed8e3
    • Hans Wennborg's avatar
      Merging r228957: · 2f356a13
      Hans Wennborg authored
      ```---------------------------------------------------------------------
      r228957 | bsteinbr | 2015-02-12 13:04:22 -0800 (Thu, 12 Feb 2015) | 14 lines
      
      Fix a crash in the assumption cache when inlining indirect function calls
      
      Summary:
      Instances of the AssumptionCache are per function, so we can't re-use
      the same AssumptionCache instance when recursing in the CallAnalyzer to
      analyze a different function. Instead we have to pass the
      AssumptionCacheTracker to the CallAnalyzer so it can get the right
      AssumptionCache on demand.
      
      Reviewers: hfinkel
      
      Subscribers: llvm-commits, hans
      
      Differential Revision: http://reviews.llvm.org/D7533
      ```
      
      ---------------------------------------------------------------------
      
      llvm-svn: 228965
      2f356a13
    • Hans Wennborg's avatar
      Merging r228842: · 1a8cc869
      Hans Wennborg authored
      ```---------------------------------------------------------------------
      r228842 | jvoung | 2015-02-11 08:12:50 -0800 (Wed, 11 Feb 2015) | 17 lines
      
      Gold-plugin: Broaden scope of get/release_input_file to scope of Module.
      
      Summary:
      Move calls to get_input_file and release_input_file out of
      getModuleForFile(). Otherwise release_input_file may end up
      unmapping a view of the file while the view is still being
      used by the Module (on 32-bit hosts).
      
      Fix for PR22482.
      
      Test Plan: Add test using --no-map-whole-files.
      
      Reviewers: rafael, nlewycky
      
      Subscribers: llvm-commits
      
      Differential Revision: http://reviews.llvm.org/D7539
      ```
      
      ---------------------------------------------------------------------
      
      llvm-svn: 228942
      1a8cc869
    • Hans Wennborg's avatar
      Merging r228899: · e022d920
      Hans Wennborg authored
      ```---------------------------------------------------------------------
      r228899 | chandlerc | 2015-02-11 18:30:56 -0800 (Wed, 11 Feb 2015) | 28 lines
      
      [slp] Fix a nasty bug in the SLP vectorizer that Joerg pointed out.
      Apparently some code finally started to tickle this after my
      canonicalization changes to instcombine.
      
      The bug stems from trying to form a vector type out of scalars that
      aren't compatible at all. In this example, from x86_mmx values. The code
      in the vectorizer that checks for reasonable types whas checking for
      aggregates or vectors, but there are lots of other types that should
      just never reach the vectorizer.
      
      Debugging this was made more confusing by the lie in an assert in
      VectorType::get() -- it isn't that the types are *primitive*. The types
      must be integer, pointer, or floating point types. No other types are
      allowed.
      
      I've improved the assert and added a helper to the vectorizer to handle
      the element type validity checks. It now re-uses the VectorType static
      function and then further excludes weird target-specific types that we
      probably shouldn't be touching here (x86_fp80 and ppc_fp128). Neither of
      these are really reachable anyways (neither 80-bit nor 128-bit things
      will get vectorized) but it seems better to just eagerly exclude such
      nonesense.
      
      I've added a test case, but while it definitely covers two of the paths
      through this code there may be more paths that would benefit from test
      coverage. I'm not familiar enough with the SLP vectorizer to synthesize
      test cases for all of these, but was able to update the code itself by
      inspection.
      ```
      
      ---------------------------------------------------------------------
      
      llvm-svn: 228940
      e022d920
    • Hans Wennborg's avatar
      Reverting r225904 to fix PR22505: · 41ea8934
      Hans Wennborg authored
      ```---------------------------------------------------------------------
      r225904 | rnk | 2015-01-13 17:05:27 -0800 (Tue, 13 Jan 2015) | 27 lines
      
      CodeGen support for x86_64 SEH catch handlers in LLVM
      
      This adds handling for ExceptionHandling::MSVC, used by the
      x86_64-pc-windows-msvc triple. It assumes that filter functions have
      already been outlined in either the frontend or the backend. Filter
      functions are used in place of the landingpad catch clause type info
      operands. In catch clause order, the first filter to return true will
      catch the exception.
      
      The C specific handler table expects the landing pad to be split into
      one block per handler, but LLVM IR uses a single landing pad for all
      possible unwind actions. This patch papers over the mismatch by
      synthesizing single instruction BBs for every catch clause to fill in
      the EH selector that the landing pad block expects.
      
      Missing functionality:
      - Accessing data in the parent frame from outlined filters
      - Cleanups (from __finally) are unsupported, as they will require
        outlining and parent frame access
      - Filter clauses are unsupported, as there's no clear analogue in SEH
      
      In other words, this is the minimal set of changes needed to write IR to
      catch arbitrary exceptions and resume normal execution.
      
      Reviewers: majnemer
      
      Differential Revision: http://reviews.llvm.org/D6300
      ```
      
      ---------------------------------------------------------------------
      
      llvm-svn: 228891
      41ea8934
  3. 11 Feb, 2015 7 commits
    • Hans Wennborg's avatar
      Merging r228843: · 3fd8f4a7
      Hans Wennborg authored
      ```---------------------------------------------------------------------
      r228843 | marshall | 2015-02-11 08:14:01 -0800 (Wed, 11 Feb 2015) | 1 line
      
      Change some template parameter names from _C and _N to _Cont and _Sz. No functionality change.
      ```
      
      ---------------------------------------------------------------------
      
      llvm-svn: 228882
      3fd8f4a7
    • Hans Wennborg's avatar
      Merging r228793: · 43f32f99
      Hans Wennborg authored
      ```---------------------------------------------------------------------
      r228793 | bogner | 2015-02-10 18:52:44 -0800 (Tue, 10 Feb 2015) | 12 lines
      
      InstrProf: Lower coverage mappings by setting their sections appropriately
      
      Add handling for __llvm_coverage_mapping to the InstrProfiling
      pass. We need to make sure the constant and any profile names it
      refers to are in the correct sections, which is easier and cleaner to
      do here where we have to know about profiling sections anyway.
      
      This is really tricky to test without a frontend, so I'm committing
      the test for the fix in clang. If anyone knows a good way to test this
      within LLVM, please let me know.
      
      Fixes PR22531.
      ```
      
      ---------------------------------------------------------------------
      
      llvm-svn: 228800
      43f32f99
    • Hans Wennborg's avatar
      Merging r228792: · c5b1e744
      Hans Wennborg authored
      ```---------------------------------------------------------------------
      r228792 | rsmith | 2015-02-10 18:41:33 -0800 (Tue, 10 Feb 2015) | 5 lines
      
      Add a warning for direct-list-initialization of a variable with a deduced type
      (or of a lambda init-capture, which is sort-of such a variable). The semantics
      of such constructs will change when we implement N3922, so we intend to warn on
      this in Clang 3.6 then change the semantics in Clang 3.7.
      ```
      
      ---------------------------------------------------------------------
      
      llvm-svn: 228799
      c5b1e744
    • Hans Wennborg's avatar
      Merging r228760 and r228761: · fece094b
      Hans Wennborg authored
      ```---------------------------------------------------------------------
      r228760 | majnemer | 2015-02-10 15:09:43 -0800 (Tue, 10 Feb 2015) | 3 lines
      
      EarlyCSE: It isn't safe to CSE across synchronization boundaries
      
      This fixes PR22514.
      ```
      
      ---------------------------------------------------------------------
      
      ------------------------------------------------------------------------
      r228761 | majnemer | 2015-02-10 15:11:02 -0800 (Tue, 10 Feb 2015) | 1 line
      
      EarlyCSE: Add check lines for test added in r228760
      ------------------------------------------------------------------------
      
      llvm-svn: 228790
      fece094b
    • Hans Wennborg's avatar
      Merging r228785: · a0b6a3d5
      Hans Wennborg authored
      ```---------------------------------------------------------------------
      r228785 | rsmith | 2015-02-10 17:48:47 -0800 (Tue, 10 Feb 2015) | 2 lines
      
      PR21857: weaken an incorrect assertion.
      ```
      
      ---------------------------------------------------------------------
      
      llvm-svn: 228789
      a0b6a3d5
    • Hans Wennborg's avatar
      Merging r228656: · fa2e9501
      Hans Wennborg authored
      ```---------------------------------------------------------------------
      r228656 | chandlerc | 2015-02-09 18:25:56 -0800 (Mon, 09 Feb 2015) | 16 lines
      
      [x86] Fix PR22524: the DAG combiner was incorrectly handling illegal
      nodes when folding bitcasts of constants.
      
      We can't fold things and then check after-the-fact whether it was legal.
      Once we have formed the DAG node, arbitrary other nodes may have been
      collapsed to it. There is no easy way to go back. Instead, we need to
      test for the specific folding cases we're interested in and ensure those
      are legal first.
      
      This could in theory make this less powerful for bitcasting from an
      integer to some vector type, but AFAICT, that can't actually happen in
      the SDAG so its fine. Now, we *only* whitelist specific int->fp and
      fp->int bitcasts for post-legalization folding. I've added the test case
      from the PR.
      
      (Also as a note, this does not appear to be in 3.6, no backport needed)
      ```
      
      ---------------------------------------------------------------------
      
      llvm-svn: 228787
      fa2e9501
    • Hans Wennborg's avatar
      Merging r228710: · 70afae8c
      Hans Wennborg authored
      ```---------------------------------------------------------------------
      r228710 | sylvestre | 2015-02-10 09:16:13 -0800 (Tue, 10 Feb 2015) | 11 lines
      
      Fix the LLDB build under Debian Kfreebsd
      
      Summary:
      I don't know if there is a better way for the change in source/Host/freebsd/ThisThread.cpp
      
      
      Reviewers: emaste
      
      Subscribers: hansw, emaste, lldb-commits
      
      Differential Revision: http://reviews.llvm.org/D7441
      ```
      
      ---------------------------------------------------------------------
      
      llvm-svn: 228780
      70afae8c
  4. 10 Feb, 2015 4 commits
    • Rafael Espindola's avatar
      Port r226896 to the 3.6 branch. · 9cd09177
      Rafael Espindola authored
      Original message:
      
      [pr22293] Don't crash during codegen of a recursive destructor.
      
       In ItaniumCXXABI::EmitCXXDestructors we first emit the base destructor
      and then try to emit the complete one as an alias.
      
      If in the base ends up calling the complete destructor, the GD for the
      complete will be in the list of deferred decl by the time we replace
      it with an alias and delete the original GV.
      
      llvm-svn: 228684
      9cd09177
    • Hans Wennborg's avatar
      Merging r228353: · 4814291e
      Hans Wennborg authored
      ```---------------------------------------------------------------------
      r228353 | ericwf | 2015-02-05 15:01:40 -0800 (Thu, 05 Feb 2015) | 1 line
      
      Remove use of _[A-Z] identifiers and poison them to detect usage
      ```
      
      ---------------------------------------------------------------------
      
      llvm-svn: 228668
      4814291e
    • Hans Wennborg's avatar
      Merging r228565: · 8b2730d1
      Hans Wennborg authored
      ```---------------------------------------------------------------------
      r228565 | majnemer | 2015-02-08 22:31:31 -0800 (Sun, 08 Feb 2015) | 3 lines
      
      MC: Calculate intra-section symbol differences correctly for COFF
      
      This fixes PR22060.
      ```
      
      ---------------------------------------------------------------------
      
      llvm-svn: 228667
      8b2730d1
    • Hans Wennborg's avatar
      Merging r228359: · 5e87af44
      Hans Wennborg authored
      ```---------------------------------------------------------------------
      r228359 | compnerd | 2015-02-05 15:27:41 -0800 (Thu, 05 Feb 2015) | 5 lines
      
      Fix compilation of unwind on Darwin-x86_64
      
      EHABI related typedef sugar is gated via LIBCXXABI_ARM_EHABI which did not
      protect the EHABI header.  This would cause declarations to be emitted on
      non-EHABI targets, resulting in errors.  This permits compilation on Darwin.
      ```
      
      ---------------------------------------------------------------------
      
      llvm-svn: 228666
      5e87af44
  5. 09 Feb, 2015 3 commits
    • Michael Wong's avatar
      update with Clang OpenMP release notes for 3.6 by Michael Wong · b2e7b69b
      Michael Wong authored
      llvm-svn: 228569
      b2e7b69b
    • Hans Wennborg's avatar
      Merging r228525: · a183e9e8
      Hans Wennborg authored
      ```---------------------------------------------------------------------
      r228525 | bsteinbr | 2015-02-08 09:07:14 -0800 (Sun, 08 Feb 2015) | 14 lines
      
      Correctly combine alias.scope metadata by a union instead of intersecting
      
      Summary:
      The alias.scope metadata represents sets of things an instruction might
      alias with. When generically combining the metadata from two
      instructions the result must be the union of the original sets, because
      the new instruction might alias with anything any of the original
      instructions aliased with.
      
      Reviewers: hfinkel
      
      Subscribers: llvm-commits
      
      Differential Revision: http://reviews.llvm.org/D7490
      ```
      
      ---------------------------------------------------------------------
      
      llvm-svn: 228561
      a183e9e8
    • Hans Wennborg's avatar
      Merging r228518: · 5bfe9136
      Hans Wennborg authored
      ```---------------------------------------------------------------------
      r228518 | tnorthover | 2015-02-07 16:50:47 -0800 (Sat, 07 Feb 2015) | 15 lines
      
      ARM & AArch64: teach LowerVSETCC that output type size may differ from input.
      
      While various DAG combines try to guarantee that a vector SETCC
      operation will have the same output size as input, there's nothing
      intrinsic to either creation or LegalizeTypes that actually guarantees
      it, so the function needs to be ready to handle a mismatch.
      
      Fortunately this is easy enough, just extend or truncate the naturally
      compared result.
      
      I couldn't reproduce the failure in other backends that I know have
      SIMD, so it's probably only an issue for these two due to shared
      heritage.
      
      Should fix PR21645.
      ```
      
      ---------------------------------------------------------------------
      
      llvm-svn: 228560
      5bfe9136
  6. 07 Feb, 2015 5 commits
    • Hans Wennborg's avatar
      Merging r228507: · 8506878b
      Hans Wennborg authored
      ```---------------------------------------------------------------------
      r228507 | joerg | 2015-02-07 13:24:06 -0800 (Sat, 07 Feb 2015) | 4 lines
      
      Avoid integer overflows around realloc calls resulting in potential
      heap. Problem identified by Guido Vranken. Changes differ from original
      OpenBSD sources by not depending on non-portable reallocarray.
      ```
      
      ---------------------------------------------------------------------
      
      llvm-svn: 228511
      8506878b
    • Hans Wennborg's avatar
      Merging r228500: · 9d94c97a
      Hans Wennborg authored
      ```---------------------------------------------------------------------
      r228500 | bsteinbr | 2015-02-07 09:54:36 -0800 (Sat, 07 Feb 2015) | 5 lines
      
      Properly update AA metadata when performing call slot optimization
      
      Subscribers: llvm-commits
      
      Differential Revision: http://reviews.llvm.org/D7482
      ```
      
      ---------------------------------------------------------------------
      
      llvm-svn: 228504
      9d94c97a
    • Hans Wennborg's avatar
      Merging r228490: · f6f57fd8
      Hans Wennborg authored
      ```---------------------------------------------------------------------
      r228490 | majnemer | 2015-02-07 00:26:40 -0800 (Sat, 07 Feb 2015) | 5 lines
      
      MC: Emit COFF section flags in the "proper" order
      
      COFF section flags are not idempotent:
        'rd' will make a read-write section because 'd' implies write
        'dr' will make a read-only section because 'r' disables write
      ```
      
      ---------------------------------------------------------------------
      
      llvm-svn: 228502
      f6f57fd8
    • Hans Wennborg's avatar
      Merging r227628: · ad7d8347
      Hans Wennborg authored
      ```---------------------------------------------------------------------
      r227628 | lhames | 2015-01-30 14:28:49 -0800 (Fri, 30 Jan 2015) | 6 lines
      
      [PBQP] Fix transposed worst row/column check in handleAdd/RemoveNode in the PBQP
      allocator.
      
      Patch by Jonas Paulsson. Thanks Jonas!
      ```
      
      ---------------------------------------------------------------------
      
      llvm-svn: 228501
      ad7d8347
    • Hans Wennborg's avatar
      Merging r228411: · 00ba96ec
      Hans Wennborg authored
      ```---------------------------------------------------------------------
      r228411 | rnk | 2015-02-06 09:59:49 -0800 (Fri, 06 Feb 2015) | 3 lines
      
      Don't dllexport declarations
      
      Fixes PR22488
      ```
      
      ---------------------------------------------------------------------
      
      llvm-svn: 228480
      00ba96ec
  7. 06 Feb, 2015 2 commits
    • Hans Wennborg's avatar
      Merging r228464: · 768133b3
      Hans Wennborg authored
      ```---------------------------------------------------------------------
      r228464 | rsmith | 2015-02-06 15:20:21 -0800 (Fri, 06 Feb 2015) | 2 lines
      
      PR22405: don't lose implicit-deleted-ness across AST write / read.
      ```
      
      ---------------------------------------------------------------------
      
      llvm-svn: 228471
      768133b3
    • Hans Wennborg's avatar
      Merging r228444: · 0add565e
      Hans Wennborg authored
      ```---------------------------------------------------------------------
      r228444 | eugenis | 2015-02-06 13:47:39 -0800 (Fri, 06 Feb 2015) | 8 lines
      
      [msan] Fix "missing origin" in atomic store.
      
      An atomic store always make the target location fully initialized (in the
      current implementation). It should not store origin. Initialized memory can't
      have meaningful origin, and, due to origin granularity (4 bytes) there is a
      chance that this extra store would overwrite meaningfull origin for an adjacent
      location.
      ```
      
      ---------------------------------------------------------------------
      
      llvm-svn: 228445
      0add565e
  8. 05 Feb, 2015 7 commits
    • Tobias Grosser's avatar
      Make Polly 3.6 compile with isl 0.14 · 7e828334
      Tobias Grosser authored
      llvm-svn: 228339
      7e828334
    • Tobias Grosser's avatar
      Adjust to the new explicit debug metadata · c05e72d3
      Tobias Grosser authored
      This fixes the outfall of r226048
      
      [Cherry-picked r226134]
      
      llvm-svn: 228338
      c05e72d3
    • Hans Wennborg's avatar
      Merging r228331: · 87be7df4
      Hans Wennborg authored
      ```---------------------------------------------------------------------
      r228331 | sylvestre | 2015-02-05 10:57:02 -0800 (Thu, 05 Feb 2015) | 30 lines
      
      Fix an incorrect identifier
      
      Summary:
      EIEIO is not a correct declaration and breaks the build under Debian HURD.
      Instead, E_IEIO is used.
      
      //
      http://www.gnu.org/software/libc/manual/html_node/Reserved-Names.html
      Some additional classes of identifier names are reserved for future
      extensions to the C language or the POSIX.1 environment. While using
      these names for your own purposes right now might not cause a problem,
      they do raise the possibility of conflict with future versions of the C
      or POSIX standards, so you should avoid these names.
      ```
      
      Names beginning with a capital ?\226?\128?\152E?\226?\128?\153 followed a digit or uppercase letter
      may be used for additional error code names. See Error Reporting.//
      
      Reported here:
      https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=776965
      And patch wrote by Svante Signell 
      With this patch, LLVM, Clang & LLDB build under Debian HURD:
      https://buildd.debian.org/status/fetch.php?pkg=llvm-toolchain-3.6&arch=hurd-i386&ver=1%3A3.6~%2Brc2-2&stamp=1423040039
      
      Reviewers: hfinkel
      
      Reviewed By: hfinkel
      
      Subscribers: llvm-commits
      
      Differential Revision: http://reviews.llvm.org/D7437
      ------------------------------------------------------------------------
      
      llvm-svn: 228335
      87be7df4
    • Hans Wennborg's avatar
      Merge r227983 (along with r227815 and r227972 to make it apply cleanly) · f9fba13e
      Hans Wennborg authored
      ```---------------------------------------------------------------------
      r227815 | spatel | 2015-02-02 09:47:30 -0800 (Mon, 02 Feb 2015) | 2 lines
      
      fix typo
      ```
      
      ---------------------------------------------------------------------
      
      
      ------------------------------------------------------------------------
      r227972 | spatel | 2015-02-03 07:37:18 -0800 (Tue, 03 Feb 2015) | 10 lines
      
      Improve test to actually check for a folded load.
      
      This test was checking for lack of a "movaps" (an aligned load)
      rather than a "movups" (an unaligned load). It also included
      a store which complicated the checking.
      
      Add specific CPU runs to prevent subtarget feature flag overrides
      from inhibiting this optimization.
      ------------------------------------------------------------------------
      
      
      ------------------------------------------------------------------------
      r227983 | spatel | 2015-02-03 09:13:04 -0800 (Tue, 03 Feb 2015) | 22 lines
      
      Fix program crashes due to alignment exceptions generated for SSE memop instructions (PR22371).
      
      r224330 introduced a bug by misinterpreting the "FeatureVectorUAMem" bit.
      The commit log says that change did not affect anything, but that's not correct.
      That change allowed SSE instructions to have unaligned mem operands folded into
      math ops, and that's not allowed in the default specification for any SSE variant. 
      
      The bug is exposed when compiling for an AVX-capable CPU that had this feature
      flag but without enabling AVX codegen. Another mistake in r224330 was not adding
      the feature flag to all AVX CPUs; the AMD chips were excluded.
      
      This is part of the fix for PR22371 ( http://llvm.org/bugs/show_bug.cgi?id=22371 ).
      
      This feature bit is SSE-specific, so I've renamed it to "FeatureSSEUnalignedMem".
      Changed the existing test case for the feature bit to reflect the new name and
      renamed the test file itself to better reflect the feature.
      Added runs to fold-vex.ll to check for the failing codegen.
      
      Note that the feature bit is not set by default on any CPU because it may require a
      configuration register setting to enable the enhanced unaligned behavior.
      ------------------------------------------------------------------------
      
      llvm-svn: 228323
      f9fba13e
    • Tom Stellard's avatar
      Merging r228303: · 64cff254
      Tom Stellard authored
      ```---------------------------------------------------------------------
      r228303 | thomas.stellard | 2015-02-05 10:32:18 -0500 (Thu, 05 Feb 2015) | 11 lines
      
      R600/SI: Fix bug in TTI loop unrolling preferences
      
      We should be setting UnrollingPreferences::MaxCount to MAX_UINT instead
      of UnrollingPreferences::Count.
      
      Count is a 'forced unrolling factor', while MaxCount sets an upper
      limit to the unrolling factor.
      
      Setting Count to MAX_UINT was causing the loop in the testcase to be
      unrolled 15 times, when it only had a maximum of 4 iterations.
      ```
      
      ---------------------------------------------------------------------
      
      llvm-svn: 228320
      64cff254
    • Tom Stellard's avatar
      Merging r228302: · 983569ce
      Tom Stellard authored
      ```---------------------------------------------------------------------
      r228302 | thomas.stellard | 2015-02-05 10:32:15 -0500 (Thu, 05 Feb 2015) | 34 lines
      
      R600/SI: Fix bug from insertion of llvm.SI.end.cf into loop headers
      
      The llvm.SI.end.cf intrinsic is used to mark the end of if-then blocks,
      if-then-else blocks, and loops.  It is responsible for updating the
      exec mask to re-enable threads that had been masked during the preceding
      control flow block.  For example:
      
      s_mov_b64 exec, 0x3                 ; Initial exec mask
      s_mov_b64 s[0:1], exec              ; Saved exec mask
      v_cmpx_gt_u32 exec, s[2:3], v0, 0   ; llvm.SI.if
      do_stuff()
      s_or_b64 exec, exec, s[0:1]         ; llvm.SI.end.cf
      
      The bug fixed by this patch was one where the llvm.SI.end.cf intrinsic
      was being inserted into the header of loops.  This would happen when
      an if block terminated in a loop header and we would end up with
      code like this:
      
      s_mov_b64 exec, 0x3                 ; Initial exec mask
      s_mov_b64 s[0:1], exec              ; Saved exec mask
      v_cmpx_gt_u32 exec, s[2:3], v0, 0   ; llvm.SI.if
      do_stuff()
      
      LOOP:                       ; Start of loop header
      s_or_b64 exec, exec, s[0:1] ; llvm.SI.end.cf <-BUG: The exec mask has the
                                    same value at the beginning of each loop
      			      iteration.
      do_stuff();
      s_cbranch_execnz LOOP
      
      The fix is to create a new basic block before the loop and insert the
      llvm.SI.end.cf there.  This way the exec mask is restored before the
      start of the loop instead of at the beginning of each iteration.
      ```
      
      ---------------------------------------------------------------------
      
      llvm-svn: 228319
      983569ce
    • Daniel Sanders's avatar
      Add microMIPS codegen to the release notes. · aba47124
      Daniel Sanders authored
      It only fails bullet, and smallpt now.
      
      llvm-svn: 228287
      aba47124
  9. 04 Feb, 2015 3 commits
    • Hans Wennborg's avatar
      Release notes: add blurb about C++17 support · 7caa7f79
      Hans Wennborg authored
      llvm-svn: 228233
      7caa7f79
    • Duncan P. N. Exon Smith's avatar
      Utils: Resolve cycles under distinct MDNodes · 39939e60
      Duncan P. N. Exon Smith authored
      Track unresolved nodes under distinct `MDNode`s during `MapMetadata()`,
      and resolve them at the end.  Previously, these cycles wouldn't get
      resolved.
      
      Conflicts:
      	lib/Transforms/Utils/ValueMapper.cpp
      
      (This is a reimplementation of r228180 for the 3.6 release branch.)
      
      llvm-svn: 228199
      39939e60
    • Hans Wennborg's avatar
      Merging r228168: · 3ae4f777
      Hans Wennborg authored
      ```---------------------------------------------------------------------
      r228168 | mkuper | 2015-02-04 10:54:01 -0800 (Wed, 04 Feb 2015) | 3 lines
      
      Fixes a bug in vector load legalization that confused bits and bytes.
      
      Differential Revision: http://reviews.llvm.org/D7400
      ```
      
      ---------------------------------------------------------------------
      
      llvm-svn: 228197
      3ae4f777