- 13 Feb, 2015 1 commit
-
-
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
-
- 12 Feb, 2015 8 commits
-
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
- 11 Feb, 2015 7 commits
-
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
- 10 Feb, 2015 4 commits
-
-
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
-
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
-
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
-
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
-
- 09 Feb, 2015 3 commits
-
-
Michael Wong authored
llvm-svn: 228569
-
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
-
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
-
- 07 Feb, 2015 5 commits
-
-
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
-
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
-
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
-
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
-
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
-
- 06 Feb, 2015 2 commits
-
-
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
-
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
-
- 05 Feb, 2015 7 commits
-
-
Tobias Grosser authored
llvm-svn: 228339
-
Tobias Grosser authored
This fixes the outfall of r226048 [Cherry-picked r226134] llvm-svn: 228338
-
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
-
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
-
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
-
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 -
Daniel Sanders authored
It only fails bullet, and smallpt now. llvm-svn: 228287
-
- 04 Feb, 2015 3 commits
-
-
Hans Wennborg authored
llvm-svn: 228233
-
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
-
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
-