summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
* [Orc] Qualify captured variable to work around GCC ICE.Lang Hames2016-01-201-1/+1
| | | | llvm-svn: 258278
* Fix link flags order in RUN command.Eric Fiselier2016-01-201-1/+1
| | | | llvm-svn: 258277
* Fix a bug in testXinliang David Li2016-01-201-2/+2
| | | | llvm-svn: 258276
* [test] Add a short explanation to instrprof-comdat.hVedant Kumar2016-01-201-0/+4
| | | | llvm-svn: 258274
* [Inliner/WinEH] Honor implicit nounwindsJoseph Tremoulet2016-01-202-17/+769
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: Funclet EH tables require that a given funclet have only one unwind destination for exceptional exits. The verifier will therefore reject e.g. two cleanuprets with different unwind dests for the same cleanup, or two invokes exiting the same funclet but to different unwind dests. Because catchswitch has no 'nounwind' variant, and because IR producers are not *required* to annotate calls which will not unwind as 'nounwind', it is legal to nest a call or an "unwind to caller" catchswitch within a funclet pad that has an unwind destination other than caller; it is undefined behavior for such a call or catchswitch to unwind. Normally when inlining an invoke, calls in the inlined sequence are rewritten to invokes that unwind to the callsite invoke's unwind destination, and "unwind to caller" catchswitches in the inlined sequence are rewritten to unwind to the callsite invoke's unwind destination. However, if such a call or "unwind to caller" catchswitch is located in a callee funclet that has another exceptional exit with an unwind destination within the callee, applying the normal transformation would give that callee funclet multiple unwind destinations for its exceptional exits. There would be no way for EH table generation to determine which is the "true" exit, and the verifier would reject the function accordingly. Add logic to the inliner to detect these cases and leave such calls and "unwind to caller" catchswitches as calls and "unwind to caller" catchswitches in the inlined sequence. This fixes PR26147. Reviewers: rnk, andrew.w.kaylor, majnemer Subscribers: alexcrichton, llvm-commits Differential Revision: http://reviews.llvm.org/D16319 llvm-svn: 258273
* Module Debugging: Fine-tune the condition that determines whether a typeAdrian Prantl2016-01-204-2/+20
| | | | | | | | | | | | | can be found in a module. There are externally visible anonymous types that can be found: typedef struct { } s; // I can be found via the typedef. There are anonymous internal types that can be found: namespace { struct s {}; } // I can be found by name. rdar://problem/24199640 llvm-svn: 258272
* [PGO] Add a new interface to be used by Indirect Call PromotionXinliang David Li2016-01-203-0/+47
| | | | llvm-svn: 258271
* Add link to 3rd party GDB pretty-printersEric Fiselier2016-01-201-0/+13
| | | | llvm-svn: 258270
* [CUDA] Bail, rather than crash, on va_arg in device code.Justin Lebar2016-01-203-3/+41
| | | | | | | | | | Reviewers: tra Subscribers: echristo, jhen, cfe-commits Differential Revision: http://reviews.llvm.org/D16331 llvm-svn: 258264
* [CUDA] Only allow __global__ on free functions and static member functions.Justin Lebar2016-01-204-9/+36
| | | | | | | | | | | | | | Summary: Warn for NVCC compatibility if you declare a static member function or inline function as __global__. Reviewers: tra Subscribers: jhen, echristo, cfe-commits Differential Revision: http://reviews.llvm.org/D16261 llvm-svn: 258263
* [NFC] Replace several manual GEP loops with gep_type_iterator.Eduard Burtescu2016-01-203-47/+22
| | | | | | | | | | Reviewers: dblaikie Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D16335 llvm-svn: 258262
* Reference the updated function name /NFCXinliang David Li2016-01-201-1/+1
| | | | llvm-svn: 258261
* Function name change /NFCXinliang David Li2016-01-202-3/+5
| | | | llvm-svn: 258260
* MachineScheduler: Allow independent scheduling of sub register defsMatthias Braun2016-01-206-61/+226
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Note that this is disabled by default and still requires a patch to handleMove() which is not upstreamed yet. If the TrackLaneMasks policy/strategy is enabled the MachineScheduler will build a schedule graph where definitions of independent subregisters are no longer serialised. Implementation comments: - Without lane mask tracking a sub register def also counts as a use (except for the first one with the read-undef flag set), with lane mask tracking enabled this is no longer the case. - Pressure Diffs where previously maintained per definition of a vreg with the help of the SSA information contained in the LiveIntervals. With lanemask tracking enabled we cannot do this anymore and instead change the pressure diffs for all uses of the vreg as it becomes live/dead. For this changed style to work correctly we ignore uses of instructions that define the same register again: They won't affect register pressure. - With lanemask tracking we remove all read-undef flags from sub register defs when building the graph and re-add them later when all vreg lanes have become dead. Differential Revision: http://reviews.llvm.org/D14969 llvm-svn: 258259
* RegisterPressure: Make liveness tracking subregister awareMatthias Braun2016-01-207-219/+540
| | | | | | Differential Revision: http://reviews.llvm.org/D14968 llvm-svn: 258258
* LiveInterval: Add utility class to rename independent subregister usageMatthias Braun2016-01-204-0/+273
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This renaming is necessary to avoid a subregister aware scheduler accidentally creating liveness "holes" which are rejected by the MachineVerifier. Explanation as found in this patch: Helper class that can divide MachineOperands of a virtual register into equivalence classes of connected components. MachineOperands belong to the same equivalence class when they are part of the same SubRange segment or adjacent segments (adjacent in control flow); Different subranges affected by the same MachineOperand belong to the same equivalence class. Example: vreg0:sub0 = ... vreg0:sub1 = ... vreg0:sub2 = ... ... xxx = op vreg0:sub1 vreg0:sub1 = ... store vreg0:sub0_sub1 The example contains 3 different equivalence classes: - One for the (dead) vreg0:sub2 definition - One containing the first vreg0:sub1 definition and its use, but not the second definition! - The remaining class contains all other operands involving vreg0. We provide a utility function here to rename disjunct classes to different virtual registers. Differential Revision: http://reviews.llvm.org/D16126 llvm-svn: 258257
* AMDGPU/SI: Prevent the DAGCombiner from creating setcc with i1 inputsTom Stellard2016-01-205-2/+81
| | | | | | | | | | Reviewers: arsenm Subscribers: arsenm, llvm-commits Differential Revision: http://reviews.llvm.org/D15035 llvm-svn: 258256
* [coverage] Add a test case to cover coverage testing with comdatXinliang David Li2016-01-204-0/+54
| | | | llvm-svn: 258255
* [MachineSink] Don't break ImplicitNullsSanjoy Das2016-01-202-0/+98
| | | | | | | | | | | | | | | Summary: This teaches MachineSink to not sink instructions that might break the implicit null check optimization that runs later. This should not affect frontends that do not use implicit null checks. Reviewers: aadg, reames, hfinkel, atrick Subscribers: majnemer, llvm-commits Differential Revision: http://reviews.llvm.org/D14632 llvm-svn: 258254
* using const instead of constexpr: MSVC troublesMike Aizatsky2016-01-191-2/+2
| | | | llvm-svn: 258253
* Module Debugging: Add Objective-C testcases for anonymous tag decls. (NFC)Adrian Prantl2016-01-193-0/+75
| | | | | | rdar://problem/24199640 llvm-svn: 258252
* Module Debugging: Don't emit external type references to anonymous types.Adrian Prantl2016-01-192-2/+12
| | | | | | | | Even if they exist in the module, they can't be matched with the forward declaration in the object file. <rdar://problem/24199640> llvm-svn: 258251
* Module Debugging: Make sure that anonymous tag decls that define globalAdrian Prantl2016-01-194-7/+30
| | | | | | | | | variables are visited. This shouldn't encourage anyone to put global variables into clang modules. rdar://problem/24199640 llvm-svn: 258250
* Recommit r256322: Fix PR25898 - Check for incomplete pointers types in ↵Eric Fiselier2016-01-192-17/+189
| | | | | | | | | | | can_catch(...) This patch re-commits r256322 and r256323. They were reverted due to a OS X test failure. The test failure has been fixed by libc++ commit r258217. This patch also adds some additional tests. llvm-svn: 258249
* Revert r258222 because it's missing files. Will re-commit complete patchEric Fiselier2016-01-191-17/+17
| | | | llvm-svn: 258228
* Reinstate the second part of a comment. NFC.Davide Italiano2016-01-191-0/+1
| | | | | | | Reported by: Filipe Cabecinhas Pointy-hat to: me llvm-svn: 258223
* Recommit r256322: Fix PR25898 - Check for incomplete pointers types in ↵Eric Fiselier2016-01-191-17/+17
| | | | | | | | | | | can_catch(...) This patch re-commits r256322 and r256323. They were reverted due to a OS X test failure. The test failure has been fixed by libc++ commit r258217. This patch also adds some additional tests. llvm-svn: 258222
* [X86] Do not run shrink-wrapping on function with split-stack attribute or HiPEQuentin Colombet2016-01-192-7/+94
| | | | | | | | | | | calling convention. The implementation of the related callbacks in the x86 backend for such functions are not ready to deal with a prologue block that is not the entry block of the function. This fixes PR26107, but the longer term solution would be to fix those callbacks. llvm-svn: 258221
* StmtOpenMP.h: Fix a warning in r258177. [-Wdocumentation]NAKAMURA Takumi2016-01-191-1/+0
| | | | llvm-svn: 258220
* StmtOpenMP.h: Fix a warning in r258165. [-Wdocumentation]NAKAMURA Takumi2016-01-191-1/+0
| | | | llvm-svn: 258219
* add tests to show missing memset/malloc optimizations (PR25892)Sanjay Patel2016-01-192-0/+75
| | | | llvm-svn: 258218
* Fix enviroment variables when running shell scriptsEric Fiselier2016-01-191-1/+1
| | | | llvm-svn: 258217
* [MC, COFF] Add .reloc support for WinCOFFDavid Majnemer2016-01-1910-23/+84
| | | | | | | This adds rudimentary support for a few relocations that we will use for the CodeView debug format. llvm-svn: 258216
* [X86][SSE] Add VZEXT_MOVL target shuffle decoding.Simon Pilgrim2016-01-193-12/+9
| | | | | | Add support for decoding VZEXT_MOVL target shuffle masks, allowing it to be used as a source in target shuffle combines. llvm-svn: 258215
* [CMake] Don't apply Export set to clang toolsChris Bieneman2016-01-191-1/+0
| | | | | | | | I can't apply export to tools without getting some strange CMake spew. The behavior here is a bit unexpected. CMake is complaining about static link dependencies not being in the same export set, which shouldn't matter. In the short term it is easier to just remove the export set (which was just added in r258209) while I sort this out. llvm-svn: 258214
* Allow __attribute__((mode)) to appertain to field declarations again. ↵Aaron Ballman2016-01-195-8/+14
| | | | | | | | Corrects compile issues with LibreOffice. Patch by Stephan Bergmann llvm-svn: 258213
* Placate MVSC after my last commit.Davide Italiano2016-01-192-8/+4
| | | | | | | | Zachary introduced the 'default' case explicitly to placate a warning in the Microsoft compiler but that broke clang with -Werror. The new code should keep both compilers happy. llvm-svn: 258212
* [sancov] NFC: simplifying DumpOffsets.Mike Aizatsky2016-01-191-29/+38
| | | | | | | | | Summary: Extracting GetRangeOffset function before report-on-dump functionality. Differential Revision: http://reviews.llvm.org/D16332 llvm-svn: 258211
* Reenable -Wexpansion-to-defined.Nico Weber2016-01-191-3/+0
| | | | | | | | | I think I fixed all instances of this in the codebase (r258202, 258200, 258190). Also, the suppression didn't have an effect on bots using make anyways, and it looks like many bots still use configure/make bots. llvm-svn: 258210
* [CMake] Creating add_clang_tool macro to wrap add_clang_executable and ↵Chris Bieneman2016-01-192-13/+17
| | | | | | | | | | generate install actions and targets. This change brings forward the LLVM convention that "executables" are just runnable binaries, and "tools" are executables that are part of the project's install. Having this abstraction will allow us to simplify some of the tool CMakeLists files, and it will standardize some of the install behaviors. llvm-svn: 258209
* [Orc] Oops - lambda capture changed in r258206 was correct.Lang Hames2016-01-191-2/+2
| | | | | | | Fully qualify reference to Finalized in the body of the lambda instead to work around GCC ICE. llvm-svn: 258208
* [MachineFunction] Constify getter. NFC.Quentin Colombet2016-01-192-2/+2
| | | | llvm-svn: 258207
* [Orc] Add missing capture to lambda.Lang Hames2016-01-191-1/+1
| | | | llvm-svn: 258206
* [X86][SSE] Add INSERTPS target shuffle combines.Simon Pilgrim2016-01-194-28/+145
| | | | | | | | | | As vector shuffles can only reference two inputs many (V)INSERTPS patterns end up being split over two targets shuffles. This patch adds combines to attempt to combine (V)INSERTPS nodes with input/output nodes that are just zeroing out these additional vector elements. Differential Revision: http://reviews.llvm.org/D16072 llvm-svn: 258205
* [Orc] Qualify call to make_unique to avoid ambiguity with std::make_unique.Lang Hames2016-01-191-4/+4
| | | | | | This should fix some of the bot failures associated with r258185. llvm-svn: 258204
* [Orc] #undef a MACRO after I'm done with it.Lang Hames2016-01-191-7/+10
| | | | | | | | Suggested by Philip Reames in review of r257951. Thanks Philip! llvm-svn: 258203
* Fix another -Wexpansion-to-defined warning in compiler-rt.Nico Weber2016-01-191-1/+5
| | | | llvm-svn: 258202
* Add missing license headersEric Fiselier2016-01-192-1/+18
| | | | llvm-svn: 258201
* Fix -Wexpansion-to-defined warnings in compiler-rt.Nico Weber2016-01-192-3/+15
| | | | llvm-svn: 258200
* [Process] Remove dead code. All the switch cases are already covered.Davide Italiano2016-01-192-4/+0
| | | | llvm-svn: 258199
OpenPOWER on IntegriCloud