summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
* cc1as: invert return bool to indicate failureAlp Toker2014-05-311-20/+13
| | | | | | | | This simplifies code flow and matches the convention used in surrounding code. No functional change. llvm-svn: 209936
* cc1as: fix a potential leak and unremoved output file in error conditionsAlp Toker2014-05-311-13/+17
| | | | llvm-svn: 209935
* [X86] Add two combine rules to simplify dag nodes introduced during type ↵Andrea Di Biagio2014-05-304-27/+355
| | | | | | | | | | | | | | | | | | | | | | | legalization when promoting nodes with illegal vector type. This patch teaches the backend how to simplify/canonicalize dag node sequences normally introduced by the backend when promoting certain dag nodes with illegal vector type. This patch adds two new combine rules: 1) fold (shuffle (bitcast (BINOP A, B)), Undef, <Mask>) -> (shuffle (BINOP (bitcast A), (bitcast B)), Undef, <Mask>) 2) fold (BINOP (shuffle (A, Undef, <Mask>)), (shuffle (B, Undef, <Mask>))) -> (shuffle (BINOP A, B), Undef, <Mask>). Both rules are only triggered on the type-legalized DAG. In particular, rule 1. is a target specific combine rule that attempts to sink a bitconvert into the operands of a binary operation. Rule 2. is a target independet rule that attempts to move a shuffle immediately after a binary operation. llvm-svn: 209930
* Convert a vselect into a concat_vector if possibleFilipe Cabecinhas2014-05-303-1/+75
| | | | | | | | | | | | | | | | | | | | | Summary: If both vector args to vselect are concat_vectors and the condition is constant and picks half a vector from each argument, convert the vselect into a concat_vectors. Added a test. The ConvertSelectToConcatVector is assuming it doesn't get vselects with arguments of, for example, <undef, undef, true, true>. Those get taken care of in the checks above its call. Reviewers: nadav, delena, grosbach, hfinkel Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D3916 llvm-svn: 209929
* [mach-o] Add support for custom sectionsNick Kledzik2014-05-305-19/+143
| | | | llvm-svn: 209928
* isSVR4ABI() returned !isDarwin() so just move that to the elseEric Christopher2014-05-301-4/+1
| | | | | | block and remove the unreachable code. llvm-svn: 209927
* Rename CreateTLOF->createTLOF to match the rest of the file and theEric Christopher2014-05-301-4/+4
| | | | | | rest of the targets with a similar function name. llvm-svn: 209926
* Disable stack-overflow test on ARMGreg Fitzgerald2014-05-301-0/+1
| | | | llvm-svn: 209925
* Take PrintingPolicy::SuppressUnwrittenScope into account when printing theRichard Smith2014-05-303-0/+137
| | | | | | qualified name of a NamedDecl. Patch by Volodymyr Sapsai! llvm-svn: 209924
* Separate the check for blend shuffle_vector masksFilipe Cabecinhas2014-05-302-27/+44
| | | | | | | | | | | | | | | | | Summary: Separate the check for blend shuffle_vector masks into isBlendMask. This function will also be used to check if a vector shuffle is legal. No change in functionality was intended, but we ended up improving codegen on two tests, which were being (more) optimized only if the resulting shuffle was legal. Reviewers: nadav, delena, andreadb Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D3964 llvm-svn: 209923
* Invalidate the file system cache entries for files that may rebuildBen Langmuir2014-05-301-5/+21
| | | | | | | | | | | | | | | | | | | | | | This reapplies r209910 with a fix for the assertion failures hit on the buildbots. original commit message: I thought we could get away without this, but it means that the FileEntry objects actually refer to the wrong files, since pcms are not updated inplace, they are atomically renamed into place after compiling a module. So we are close to the original behaviour of invalidating the cache for all modules being removed, but now we should only invalidate the ones that depend on whichever module failed to load. Unfortunately I haven't come up with a new test that didn't require a race between parallel invocations of clang. <rdar://problem/17038180> llvm-svn: 209922
* fixed more typosSanjay Patel2014-05-301-2/+2
| | | | llvm-svn: 209921
* Roll DbgVariable::setMInsn into the constructor. No functional changes.Adrian Prantl2014-05-302-8/+15
| | | | llvm-svn: 209920
* Remove unused struct from testAlp Toker2014-05-301-11/+0
| | | | | | This presumably got inadvertently copied from dllimport-members.cpp. llvm-svn: 209919
* added link to CMake pageSanjay Patel2014-05-301-3/+4
| | | | llvm-svn: 209918
* Don't use libc's "char *basename(char *)" or "char *dirname(char *)" as they ↵Greg Clayton2014-05-301-35/+8
| | | | | | | | | | are not thread safe. I switched the lldb_private::FileSpec code over to use "llvm::StringRef llvm::sys::path::filename(llvm::StringRef)" for basename() and "llvm::StringRef llvm::sys::path::parent_path(llvm::StringRef)" for dirname(). <rdar://problem/16870083> llvm-svn: 209917
* fixed typoSanjay Patel2014-05-301-1/+1
| | | | llvm-svn: 209916
* Add a FIXME for a bug Doug pointed out in code review.Richard Smith2014-05-301-0/+4
| | | | llvm-svn: 209915
* Make bitcast, extractelement, and insertelement considered cheap for ↵Matt Arsenault2014-05-302-0/+63
| | | | | | | | | | speculation. This helps more branches into selects. On R600, vectors are cheap and anything that helps remove branches is very good. llvm-svn: 209914
* Thread Safety Analysis: fix handling of string and char literals.DeLesley Hutchins2014-05-302-1/+5
| | | | llvm-svn: 209913
* gdb-remote signal delivery test cleanup.Todd Fiala2014-05-303-49/+199
| | | | | | | | | | | | | | | | Learned that MacOSX only accepts signal delivery on a thread that is already signal handling. Reworked the test exe to cause a SIGSEGV and recover if either nothing intercepts the SIGSEGV handler, or if a SIGUSR1 is inserted. The test uses the latter part to test signal delivery on continue using the SIGUSR1. I still don't have this working on MacOSX. I'm seeing the signal get delivered to a different thread than the one I'm specifying with $Hc{thread-id} + $C{signo}, or with $vCont;C{signo}:{thread-id};c. I'll come back to this after getting it working on the llgs branch on Linux x86_64. llvm-svn: 209912
* Revert "Invalidate the file system cache entries for files that may rebuild"Ben Langmuir2014-05-301-18/+5
| | | | | | This reverts commit r209910, which is breaking some of the bots. llvm-svn: 209911
* Invalidate the file system cache entries for files that may rebuildBen Langmuir2014-05-301-5/+18
| | | | | | | | | | | | | | | | | | I thought we could get away without this, but it means that the FileEntry objects actually refer to the wrong files, since pcms are not updated inplace, they are atomically renamed into place after compiling a module. So we are close to the original behaviour of invalidating the cache for all modules being removed, but now we should only invalidate the ones that depend on whichever module failed to load. Unfortunately I haven't come up with a new test that didn't require a race between parallel invocations of clang. <rdar://problem/17038180> llvm-svn: 209910
* Let libc++abi compile with gcc.Nico Weber2014-05-301-11/+12
| | | | | | | | | | | | | | There was a single problem in cxa_demangle.cpp, where gcc would complain `error: changes meaning of 'String'` about the line `typedef String String;`. According to 3.3.7p2, this diagnostic is allowed (but not required, so clang does not have to report this). As a fix, make string_pair a template and pass String as template parameter. This fixes the error with gcc and also removes some repetition from the code. No behavior change. llvm-svn: 209909
* Start adding support for dllimport/dllexport on classes (PR11170)Hans Wennborg2014-05-3011-33/+296
| | | | | | | | | | | | | | | | This implements the central part of support for dllimport/dllexport on classes: allowing the attribute on class declarations, inheriting it to class members, and forcing emission of exported members. It's based on Nico Rieck's patch from http://reviews.llvm.org/D1099. This patch doesn't propagate dllexport to bases that are template specializations, which is an interesting problem. It also doesn't look at the rules when redeclaring classes with different attributes, I'd like to do that separately. Differential Revision: http://reviews.llvm.org/D3877 llvm-svn: 209908
* Fix MIPS exception personality encoding.Logan Chien2014-05-304-9/+46
| | | | | | | | | For MIPS, we have to encode the personality routine with an indirect pointer to absptr; otherwise, some link warning warning will be raised, and the program might crash in some early MIPS Android device. llvm-svn: 209907
* Objective-C. Diagnose assigning a block pointer type toFariborz Jahanian2014-05-302-2/+24
| | | | | | | an Objective-C object type other than 'id'. // rdar://16739120 llvm-svn: 209906
* MachO: move test to ARM directory.Tim Northover2014-05-301-0/+0
| | | | | | | This test specifies an ARM triple, so it needs ARM as a registered target. llvm-svn: 209905
* Thread Safety Analysis: fix uninitialized member in TIL Literal.DeLesley Hutchins2014-05-302-15/+17
| | | | llvm-svn: 209904
* PR19753: Optimize comparisons with "ashr exact" of a constanst.Rafael Espindola2014-05-302-0/+25
| | | | | | Patch by suyog sarda. llvm-svn: 209903
* [pr19636] Fix known bit computation in urem instruction with power of two.Rafael Espindola2014-05-302-2/+19
| | | | | | Patch by Andrey Kuharev. llvm-svn: 209902
* SelectionDAG: skip barriers for unordered atomic operationsTim Northover2014-05-302-14/+27
| | | | | | | | | Unordered is strictly weaker than monotonic, so if the latter doesn't have any barriers then the former certainly shouldn't. rdar://problem/16548260 llvm-svn: 209901
* tsan: add a test from data-race-test suite:Dmitry Vyukov2014-05-301-0/+29
| | | | | | https://code.google.com/p/data-race-test/source/browse/trunk/unittest/racecheck_unittest.cc llvm-svn: 209900
* AArch64: combine arm64 & aarch64 cases in switchTim Northover2014-05-301-23/+5
| | | | | | | | There shouldn't be any difference in behaviour here, at least not in any configurations people care about and possibly not in any reachable configurations. llvm-svn: 209899
* tsan: make positive tests more robustDmitry Vyukov2014-05-3089-127/+206
| | | | | | | | | | Add a script that is used to deflake inherently flaky tsan tests. It is invoked from lit tests as: %deflake %run %t The script runs the target program up to 10 times, until it produces a tsan warning. llvm-svn: 209898
* tsan: optimize memory access functionsDmitry Vyukov2014-05-3010-83/+202
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The optimization is two-fold: First, the algorithm now uses SSE instructions to handle all 4 shadow slots at once. This makes processing faster. Second, if shadow contains the same access, we do not store the event into trace. This increases effective trace size, that is, tsan can remember up to 10x more previous memory accesses. Perofrmance impact: Before: [ OK ] DISABLED_BENCH.Mop8Read (2461 ms) [ OK ] DISABLED_BENCH.Mop8Write (1836 ms) After: [ OK ] DISABLED_BENCH.Mop8Read (1204 ms) [ OK ] DISABLED_BENCH.Mop8Write (976 ms) But this measures only fast-path. On large real applications the speedup is ~20%. Trace size impact: On app1: Memory accesses : 1163265870 Including same : 791312905 (68%) on app2: Memory accesses : 166875345 Including same : 150449689 (90%) 90% of filtered events means that trace size is effectively 10x larger. llvm-svn: 209897
* Revert "Remove redundant check discovered in post-commit review of r209505."Daniel Jasper2014-05-301-1/+3
| | | | | | | | | This breaks with MSVC. With IsLateTemplateParsed, FunctionDecl::doesThisDeclarationHaveABody() returns true regardless of Body. This reinstates what was fixed in r208985. llvm-svn: 209896
* ARM: use AAPCS-style prologues for embedded MachO.Tim Northover2014-05-305-28/+29
| | | | | | | | | | | | | | | Darwin prologues save their GPRs in two stages: a narrow push of r0-r7 & lr, followed by a wide push of the remaining registers if there are any. AAPCS uses a single push.w instruction. It turns out that, on average, enough registers get pushed that code is smaller in the AAPCS prologue, which is a nice property for M-class programmers. They also have other options available for back-traces, so can hopefully deal with the fact that FP & LR aren't adjacent in memory. rdar://problem/15909583 llvm-svn: 209895
* MachO: support N_INDR aliases in assembly files.Tim Northover2014-05-307-13/+168
| | | | | | | | | This makes LLVM create N_INDR aliases (to be resolved by the linker) when appropriate. rdar://problem/15125513 llvm-svn: 209894
* Remove unnecessary test.Diego Novillo2014-05-301-28/+0
| | | | llvm-svn: 209893
* This test is no longer relevant. It is covered already by ↵Aaron Ballman2014-05-301-5/+0
| | | | | | [basic.scope.pdecl]p10, and our current test for that is more thorough (though our test is named p9.cpp). llvm-svn: 209892
* This test should no longer be XFAILed; the standard has stabilized, and the ↵Aaron Ballman2014-05-301-13/+12
| | | | | | test contents are acceptable. No diagnostics expected from this test. llvm-svn: 209891
* Setting a heading for the section/allocate attribute so that the attribute ↵Aaron Ballman2014-05-301-0/+1
| | | | | | documentation can be properly generated. llvm-svn: 209890
* [Sanitizers Win] Move duplicate Windows-specific compiler flags to a common ↵Timur Iskhodzhanov2014-05-303-30/+14
| | | | | | | | CMake variable Reviewed at http://reviews.llvm.org/D3952 llvm-svn: 209889
* Add a _LIBCPP_CONSTEXPR that was missed in r170026.Nico Weber2014-05-301-1/+1
| | | | | | | (clang doesn't complain about this, but gcc does. This is necessary for a follow-up patch that will enable _LIBCPP_CONSTEXPR for gcc.) llvm-svn: 209888
* [ASan Win] Fix a couple of warnings in tests and enable -WXTimur Iskhodzhanov2014-05-304-0/+4
| | | | llvm-svn: 209887
* Implement __divtf3 for IEEE quad precision.Joerg Sonnenberger2014-05-302-0/+297
| | | | | | | Patch by: GuanHong Liu Differential Revision: http://reviews.llvm.org/D2800 llvm-svn: 209886
* AArch64 & ARM: disable generic test that relies on no CFG changes.Tim Northover2014-05-301-0/+3
| | | | llvm-svn: 209885
* [sanitizer] Fix build on ARM.Evgeniy Stepanov2014-05-301-1/+2
| | | | llvm-svn: 209884
* ARM & AArch64: make use of common cmpxchg idioms after expansionTim Northover2014-05-3059-87/+347
| | | | | | | | | | | | | | | | | | | | | | | | The C and C++ semantics for compare_exchange require it to return a bool indicating success. This gets mapped to LLVM IR which follows each cmpxchg with an icmp of the value loaded against the desired value. When lowered to ldxr/stxr loops, this extra comparison is redundant: its results are implicit in the control-flow of the function. This commit makes two changes: it replaces that icmp with appropriate PHI nodes, and then makes sure earlyCSE is called after expansion to actually make use of the opportunities revealed. I've also added -{arm,aarch64}-enable-atomic-tidy options, so that existing fragile tests aren't perturbed too much by the change. Many of them either rely on undef/unreachable too pervasively to be restored to something well-defined (particularly while making sure they test the same obscure assert from many years ago), or depend on a particular CFG shape, which is disrupted by SimplifyCFG. rdar://problem/16227836 llvm-svn: 209883
OpenPOWER on IntegriCloud