summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* [Headers] Add #include_next for tgmath.h on DarwinBruno Cardoso Lopes2016-12-093-0/+25
| | | | | | | | | Allow darwin to provide additional definitions and implementation specifc values for tgmath.h on Apple platforms. rdar://problem/19019845 llvm-svn: 289181
* Reverting rL289088 while investigating some test issue on the build serversKostya Kortchinsky2016-12-092-18/+4
| | | | | | | | Subscribers: kubabrecka Differential Revision: https://reviews.llvm.org/D27605 llvm-svn: 289180
* [OpenMP] Sema and parsing for 'teams distribute parallel for' pragmaKelvin Li2016-12-0938-13/+4132
| | | | | | | | This patch is to implement sema and parsing for 'teams distribute parallel for' pragma. Differential Revision: https://reviews.llvm.org/D27345 llvm-svn: 289179
* fix misspelling in .clang-formatEric Fiselier2016-12-091-1/+1
| | | | llvm-svn: 289178
* Turn off header sorting and comment formattingEric Fiselier2016-12-091-0/+4
| | | | llvm-svn: 289177
* [CrashReproducer] Provide a clean dir path for -fmodules-cache-pathBruno Cardoso Lopes2016-12-098-12/+13
| | | | | | | | | | | | The most common workflow with module reproducers involves deleting the module cache before running the script. This happens because leftovers from the crash are present in the cache and could trigger unrelated and confusing errors, misleading from the initial reproduction intent. Change this to point to a clean path but leave the leftovers untouched. rdar://problem/28655070 llvm-svn: 289176
* [SCCP] Teach the pass about `mul %x 0` even if %x is overdefined.Davide Italiano2016-12-092-3/+13
| | | | | | | | | | | | | | | | | | | | | | | The motivating example is: extern int patatino; int goo() { int x = 0; for (int i = 0; i < 1000000; ++i) { x *= patatino; } return x; } Currently SCCP will not realize that this function returns always zero, therefore will try to unroll and vectorize the loop at -O3 producing an awful lot of (useless) code. With this change, it will just produce: 0000000000000000 <g>: xor %eax,%eax retq llvm-svn: 289175
* [CrashReproducer] Rewrite relative include pathsBruno Cardoso Lopes2016-12-092-24/+152
| | | | | | | | | | | | | | | | | When -fmodules is on, the reproducer invocation currently leave paths for include-like flags as is. If the path is relative, the reproducer doesn't know how to access that file during reproduction time because the VFS cannot reason about relative paths. Expand relative paths to absolute ones when creating the reproducer command line. This allows, for example, the reproducer to work for crashes while building clang with modules; this wasn't possible before because building clang requires using relative inc dir from within the build directory. rdar://problem/28655070 llvm-svn: 289174
* [AVX-512] Add vpermilps/pd to load folding tables.Craig Topper2016-12-093-0/+236
| | | | llvm-svn: 289173
* [AVX-512] Move some floating point stack folding test cases out of the ↵Craig Topper2016-12-094-192/+192
| | | | | | integer test. llvm-svn: 289172
* [Analysis] Fix typo in comment. NFCCraig Topper2016-12-091-1/+1
| | | | llvm-svn: 289171
* COFF: Use make() in SymbolTable and Writer.Rui Ueyama2016-12-093-15/+11
| | | | llvm-svn: 289170
* Calling SBDebugger::CeeateTarget being called on multiple threads was ↵Greg Clayton2016-12-095-9/+88
| | | | | | | | | | | | | | | | crashing LLDB. I found the race condition in: ScriptInterpreter *CommandInterpreter::GetScriptInterpreter(bool can_create); More than one "ScriptInterpreter *" was being returned due to the race which caused any clients with the first one to now be pointing to freed memory and we would quickly crash. Added a test to catch this so we don't regress. <rdar://problem/28356584> llvm-svn: 289169
* Fix some occurrences of passing StringRef to Printf.Zachary Turner2016-12-093-15/+15
| | | | | | | Hopefully these will all disappear in the future once we move to formatv. llvm-svn: 289168
* Specify -std=gnu++98 on some Rewriter tests. NFC.Paul Robinson2016-12-0932-40/+40
| | | | | | | | | Rewriter tests rewrite Objective-C++ to C++, and then compile the result. The rewritten result sometimes doesn't work with C++11. As we want to allow Clang's default dialect to become C++11, we need to make sure the tests will still pass. llvm-svn: 289167
* [libFuzzer] implement crash-resistant merge ↵Kostya Serebryany2016-12-098-8/+488
| | | | | | (https://github.com/google/sanitizers/issues/722). This is a first experimental variant that needs some more testing, thus not yet adding a lit test (but there are unit tests). llvm-svn: 289166
* WholeProgramDevirt: Teach the pass to handle structs of arrays.Peter Collingbourne2016-12-094-27/+96
| | | | | | This will become necessary in some cases once D22296 lands. llvm-svn: 289165
* Modernize the Args access pattern in a few more commands.Zachary Turner2016-12-095-105/+66
| | | | llvm-svn: 289164
* [LCG] Minor cleanup to the LCG walk over a function, NFC.Chandler Carruth2016-12-092-22/+33
| | | | | | | | This just hoists the check for declarations up a layer which allows various sets used in the walk to be smaller. Also moves the relevant comments to match, and catches a few other cleanups in this code. llvm-svn: 289163
* Make WholeProgramDevirt understand ConstStruct vtables.Peter Collingbourne2016-12-093-13/+100
| | | | | | | | Based on a patch by LemonBoy! Differential Revision: https://reviews.llvm.org/D26581 llvm-svn: 289162
* [ObjectYAML] Support for DWARF debug_arangesChris Bieneman2016-12-098-0/+436
| | | | | | This patch adds support for round tripping DWARF debug_aranges in and out of YAML. llvm-svn: 289161
* [AST, ASTMatchers, Basic] Fix some Clang-tidy modernize and Include What You ↵Eugene Zelenko2016-12-099-166/+305
| | | | | | Use warnings; other minor fixes (NFC). llvm-svn: 289160
* [DOXYGEN] Improved doxygen comments for xmmintrin.h intrinsics.Ekaterina Romanova2016-12-081-26/+26
| | | | | | | Tagged parameter names with \a doxygen command to display parameters in italics. Formatted comments to fit into 80 chars. llvm-svn: 289159
* Fix PR27374 - Remove the implicit reduced-arity-extension in tuple.Eric Fiselier2016-12-085-10/+286
| | | | | | | | | | | | | | | | | | | This patch removes libc++'s tuple extension which allowed it to be constructed from fewer initializers than elements; with the remaining elements being default constructed. However the implicit version of this extension breaks conforming code. For example: int fun(std::string); int fun(std::tuple<std::string, int>); int x = fun("hello"); // ambigious Because existing code may already depend on this extension it can be re-enabled by defining _LIBCPP_ENABLE_TUPLE_IMPLICIT_REDUCED_ARITY_EXTENSION. Note that the explicit version of this extension is still supported, although it's somewhat less useful than the implicit one. llvm-svn: 289158
* [InstCombine] add tests for umin+icmp; NFCSanjay Patel2016-12-081-0/+258
| | | | llvm-svn: 289157
* [InstCombine] add tests for umax+icmp; NFCSanjay Patel2016-12-081-0/+258
| | | | llvm-svn: 289156
* Clean up the new TestInterruptThreadNames test a bit.Jason Molenda2016-12-081-23/+39
| | | | llvm-svn: 289155
* [DOXYGEN] Improved doxygen comments.Ekaterina Romanova2016-12-082-14/+18
| | | | | | | | Improved doxygen comments for fxsrintrin.h and mmintrin.h intrinsics by taagging parameter names with \a doxygen command to display parameters in italics. Formatted comments to fit into 80 chars. llvm-svn: 289154
* [InstSimplify] Add "X / 1.0" to SimplifyFDivInst.Zia Ansari2016-12-082-3/+7
| | | | | | Differential Revision: https://reviews.llvm.org/D27587 llvm-svn: 289153
* [ELF] Allow output section data commands to take expressionsMeador Inge2016-12-083-12/+51
| | | | | | | | | | | | The current implementation of the output section data store commands can only handle integer literals, but it should really handle arbitrary expressions [1]. This commit fixes that. [1] https://sourceware.org/binutils/docs-2.27/ld/Output-Section-Data.html#Output-Section-Data Differential Revision: https://reviews.llvm.org/D27561 llvm-svn: 289152
* [InstCombine] add tests for smax+icmp; NFCSanjay Patel2016-12-081-0/+258
| | | | llvm-svn: 289151
* GlobalISel: fall back gracefully for debug intrinsics.Tim Northover2016-12-082-0/+39
| | | | | | | Supporting them properly is a reasonably complex chunk of work, so to allow bot testing before then we should at least be able to fall back to DAG ISel. llvm-svn: 289150
* GlobalISel: factor overflow handling into separate function. NFC.Tim Northover2016-12-082-28/+41
| | | | llvm-svn: 289149
* Split linkerscript.s into small test files.Rui Ueyama2016-12-084-85/+101
| | | | | | | | | | linkerscript.s is the first test file for linker script, and at the moment it contains all tests for linker scripts. Now that test file doesn't make sense. linkerscript2.s was just badly named. Renamed searchdir.s. llvm-svn: 289148
* [SCCP] Make sure SCCP and ConstantFolding agree on undef >> a.Davide Italiano2016-12-082-4/+4
| | | | | | | Currently SCCP folds the value to -1, while ConstantProp folds to 0. This changes SCCP to do what ConstantFolding does. llvm-svn: 289147
* Print a warning message if ENTRY() symbol is not found.Rui Ueyama2016-12-082-1/+7
| | | | llvm-svn: 289146
* [sanitizer] Add workaround for empty stringsVitaly Buka2016-12-081-18/+14
| | | | | | | | | | | | Summary: I see crashes on this check when some reports are being generated. Reviewers: eugenis Subscribers: kubabrecka, llvm-commits Differential Revision: https://reviews.llvm.org/D27574 llvm-svn: 289145
* [sanitizers] lsan+sancov doesn't need ubsanrt (multi def error)Mike Aizatsky2016-12-082-1/+16
| | | | | | | | Reviewers: eugenis Differential Revision: https://reviews.llvm.org/D27594 llvm-svn: 289144
* [mips] Make the test case more specific and provide OS component of a ↵Simon Atanasyan2016-12-081-3/+3
| | | | | | triple. NFC llvm-svn: 289117
* [DOXYGEN] Improved doxygen comments for emmintrin.h intrinsics.Ekaterina Romanova2016-12-081-100/+100
| | | | | | | Tagged parameter names with \a doxygen command to display parameters in italics. Formatted comments to fit into 80 chars. llvm-svn: 289116
* [mips] Change instruction s/daddiu/addiu/ since O32 prohibits the use of ↵Simon Atanasyan2016-12-081-34/+34
| | | | | | 64-bit GPRs. NFC llvm-svn: 289115
* [mips] Change gnueabi to gnu in the triple because EABI has been removed ↵Simon Atanasyan2016-12-081-1/+1
| | | | | | recently. NFC llvm-svn: 289114
* [mips] Remove N32 Android test because Android does not support N32 ABI. NFCSimon Atanasyan2016-12-081-2/+0
| | | | llvm-svn: 289113
* Fix -Wunused-private-field.Rui Ueyama2016-12-081-1/+0
| | | | llvm-svn: 289112
* [libcxx] [test] Fix MSVC warning C4244 "conversion from 'X' to 'Y', possible ↵Stephan T. Lavavej2016-12-0814-24/+28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | loss of data", part 7/7. test/std/input.output/iostream.format/input.streams/istream.unformatted/get.pass.cpp Add static_cast<char> because basic_istream::get() returns int_type (N4606 27.7.2.3 [istream.unformatted]/4). test/std/input.output/iostream.format/output.streams/ostream.formatted/ostream.inserters.arithmetic/minus1.pass.cpp Add static_cast<char> because toupper() returns int (C11 7.4.2.2/1). test/std/iterators/stream.iterators/ostream.iterator/ostream.iterator.ops/assign_t.pass.cpp This test is intentionally writing doubles to ostream_iterator<int>. It's silencing -Wliteral-conversion for Clang, so I'm adding C4244 silencing for MSVC. test/std/language.support/support.limits/limits/numeric.limits.members/infinity.pass.cpp Given `extern float zero;`, the expression `1./zero` has type double, which emits a truncation warning when being passed to test<float>() taking float. The fix is to say `1.f/zero` which has type float. test/std/numerics/complex.number/cmplx.over/arg.pass.cpp test/std/numerics/complex.number/cmplx.over/norm.pass.cpp These tests were constructing std::complex<double>(x, 0), emitting truncation warnings when x is long long. Saying static_cast<double>(x) avoids this. test/std/numerics/rand/rand.eng/rand.eng.lcong/seed_result_type.pass.cpp This was using `int s` to construct and seed a linear_congruential_engine<T, stuff>, where T is unsigned short/unsigned int/unsigned long/unsigned long long. That emits a truncation warning in the unsigned short case. Because the range [0, 20) is tiny and we aren't doing anything else with the index, we can just iterate with `T s`. test/std/re/re.traits/value.pass.cpp regex_traits<wchar_t>::value()'s first parameter is wchar_t (N4606 28.7 [re.traits]/13). This loop is using int to iterate through ['g', 0xFFFF), emitting a truncation warning from int to wchar_t (which is 16-bit for some of us). Because the bound is exclusive, we can just iterate with wchar_t. test/std/strings/basic.string/string.cons/size_char_alloc.pass.cpp This test is a little strange. It's trying to verify that basic_string's (InIt, InIt) range constructor isn't confused by "N copies of C" when N and C have the same integral type. To do this, it was testing (100, 65), but that eventually emits truncation warnings from int to char. There's a simple way to avoid this - passing (static_cast<char>(100), static_cast<char>(65)) also exercises the disambiguation. (And 100 is representable even when char has a signed range.) test/std/strings/string.view/string.view.hash/string_view.pass.cpp Add static_cast<char_type> because `'0' + i` has type int. test/std/utilities/function.objects/bind/func.bind/func.bind.bind/nested.pass.cpp What's more horrible than nested bind()? pow() overloads! This operator()(T a, T b) was assuming that std::pow(a, b) can be returned as T. (In this case, T is int.) However, N4606 26.9.1 [cmath.syn]/2 says that pow(int, int) returns double, so this was truncating double to int. Adding static_cast<T> silences this. test/std/utilities/function.objects/unord.hash/integral.pass.cpp This was iterating `for (int i = 0; i <= 5; ++i)` and constructing `T t(i);` but that's truncating when T is short. (And super truncating when T is bool.) Adding static_cast<T> silences this. test/std/utilities/utility/exchange/exchange.pass.cpp First, this was exchanging 67.2 into an int, but that's inherently truncating. Changing this to static_cast<short>(67) avoids the truncation while preserving the "what if T and U are different" test coverage. Second, this was exchanging {} with the explicit type float into an int, and that's also inherently truncating. Specifying short is just as good. test/std/utilities/utility/pairs/pairs.spec/make_pair.pass.cpp Add static_cast<short>. Note that this affects template argument deduction for make_pair(), better fulfilling the test's intent. For example, this was saying `typedef std::pair<int, short> P1; P1 p1 = std::make_pair(3, 4);` but that was asking make_pair() to return pair<int, int>, which was then being converted to pair<int, short>. (pair's converting constructors are tested elsewhere.) Now, std::make_pair(3, static_cast<short>(4)) actually returns pair<int, short>. (There's still a conversion from pair<nullptr_t, short> to pair<unique_ptr<int>, short>.) Fixes D27544. llvm-svn: 289111
* [libcxx] [test] Fix MSVC warning C4244 "conversion from 'X' to 'Y', possible ↵Stephan T. Lavavej2016-12-086-9/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | loss of data", part 6/7. test/std/algorithms/alg.modifying.operations/alg.random.shuffle/random_shuffle_rand.pass.cpp (Affects 64-bit architectures.) Include <cstddef> so we can take/return std::ptrdiff_t (instead of int) in random_shuffle()'s RNG. (C++14 D.12 [depr.alg.random.shuffle]/2 says that difference_type is used, and we're shuffling a plain array.) test/std/algorithms/alg.sorting/alg.sort/sort/sort.pass.cpp test/std/algorithms/alg.sorting/alg.sort/stable.sort/stable_sort.pass.cpp (Affects 64-bit architectures.) Include <iterator> because we're already using iterator_traits. Then, store the result of subtracting two RanIts as difference_type instead of long (which truncates on LLP64 architectures like MSVC x64). test/std/containers/sequences/forwardlist/forwardlist.ops/splice_after_flist.pass.cpp test/std/containers/sequences/forwardlist/forwardlist.ops/splice_after_one.pass.cpp (Affects 64-bit architectures.) Include <cstddef> so we can store the result of subtracting two pointers as std::ptrdiff_t (instead of int). test/std/input.output/iostream.format/input.streams/istream.unformatted/ignore_0xff.pass.cpp (Affects 32-bit architectures.) Sometimes, size_t is too small. That's the case here, where tellg() returns pos_type (N4606 27.7.2.3 [istream.unformatted]/39). Implementations can have 64-bit pos_type (to handle large files) even when they have 32-bit size_t. Fixes D27543. llvm-svn: 289110
* [libcxx] [test] Fix MSVC warning C4244 "conversion from 'X' to 'Y', possible ↵Stephan T. Lavavej2016-12-0810-85/+85
| | | | | | | | | | | | | | | | | | | | | loss of data", part 5/7. Instead of storing double in double and then truncating to int, store int in long and then widen to long long. This preserves test coverage (as these tests are interested in various tuple conversions) while avoiding truncation warnings. test/std/utilities/tuple/tuple.tuple/tuple.cnstr/const_pair.pass.cpp Since we aren't physically truncating anymore, t1 is equal to p0. test/std/utilities/tuple/tuple.tuple/tuple.cnstr/convert_copy.pass.cpp One edit is different from the usual pattern. Previously, we were storing double in double and then converting to A, which has an implicitly converting constructor from int. Now, we're storing int in int and then converting to A, avoiding the truncation. Fixes D27542. llvm-svn: 289109
* [libcxx] [test] Fix MSVC warning C4244 "conversion from 'X' to 'Y', possible ↵Stephan T. Lavavej2016-12-082-55/+55
| | | | | | | | | | | loss of data", part 4/7. Change char to long and remove some char casts. This preserves test coverage for tuple's heterogeneous comparisons, while avoiding int-to-char truncation warnings. Fixes D27541. llvm-svn: 289108
* [libcxx] [test] Fix MSVC warning C4244 "conversion from 'X' to 'Y', possible ↵Stephan T. Lavavej2016-12-0816-60/+60
| | | | | | | | | | loss of data", part 3/7. Add static_cast<short> when constructing pair<Whatever, short> from (Something, int). Fixes D27540. llvm-svn: 289107
* [libcxx] [test] Fix MSVC warning C4244 "conversion from 'X' to 'Y', possible ↵Stephan T. Lavavej2016-12-085-10/+10
| | | | | | | | | | | | | loss of data", part 2/7. These tests for some guy's transparent operator functors were needlessly truncating their double results to int. Preserving the doubleness makes compilers happier. I'm following existing practice by adding an "// exact in binary" comment when the result isn't a whole number. (The changes from 6 to 6.0 and so forth are stylistic, not critical.) Fixes D27539. llvm-svn: 289106
OpenPOWER on IntegriCloud