summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* [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
* [libcxx] [test] Fix MSVC warning C4244 "conversion from 'X' to 'Y', possible ↵Stephan T. Lavavej2016-12-0831-31/+31
| | | | | | | | | | | | | loss of data", part 1/7. Given `std::basic_streambuf<CharT>::int_type __c`, `std::basic_string<CharT> str_`, and having checked `__c != std::basic_streambuf<CharT>::traits_type::eof()` (substituting typedefs for clarity), the line `str_.push_back(__c);` is safe according to humans, but truncates according to compilers. `str_.push_back(static_cast<CharT>(__c));` avoids that problem. Fixes D27538. llvm-svn: 289105
* COFF: Use a string saver in Memory.h in Driver.Rui Ueyama2016-12-084-25/+15
| | | | llvm-svn: 289104
* [DebugInfo] Relax test case for long double constants.David Gross2016-12-081-1/+5
| | | | | | | | | | | | | | | | | | | | Summary: D27549 (partial fix for PR26619) emits a constant value in the debug metadata for a floating-point static const that does not exceed 64 bits in size. The regression test accompanying that fix assumes that a long double exceeds 64 bits in size and hence does not get a constant value in the debug metadata. However, for some targets -- such as "--target=hexagon-unknown-elf" -- a long double does not exceed 64 bits in size, and hence the test fails. As a temporary fix, modify the regression test to no longer inspect the debug metadata for a long double. Reviewers: cfe-commits, probinson Differential Revision: https://reviews.llvm.org/D27589 llvm-svn: 289103
* Remove unnecessary `llvm::`.Rui Ueyama2016-12-087-61/+59
| | | | llvm-svn: 289102
* Don't emit .seh_handler directives for any cleanup funcletsReid Kleckner2016-12-082-7/+7
| | | | | | | | | | | | | | | | We were falsely claiming that we had an LSDA for the relevant EH personality before this change, which could lead to the EH machinery interpreting random adjacent data as an LSDA. Fixes PR31317 This change is safe because cleanups can't contain exception handlers today. We do these things to maintain that invariant: - C++ destructors are naturally out-of-line - __finally blocks are outlined in clang - LLVM's inliner will not inline EH constructs into cleanups llvm-svn: 289101
* Fixed a crasher that has been borking out heap for a long time. Greg Clayton2016-12-083-4/+5
| | | | | | | | | | ThreadList had an assignment operator that didn't lock the "rhs" thread list object. This means a thread list can be mutated while it is being copied. The copy constructor calls the assignment operator as well. So this fixes the unsafe threaded access to ThreadList which we believe is responsible for a lot of crashes. <rdar://problem/28075793> llvm-svn: 289100
* [RDF] Fix incorrect lane mask calculationKrzysztof Parzyszek2016-12-081-7/+31
| | | | | | | | This was exposed by some code that used more than one level of sub- registers. There is no testcase, because there is no such code in the Hexagon backend. llvm-svn: 289099
* [InstSimplify] add fdiv x/1.0 test and update checks; NFCSanjay Patel2016-12-081-8/+25
| | | | llvm-svn: 289098
* COFF: Use make() to create a new file object in createFile.Rui Ueyama2016-12-085-27/+30
| | | | llvm-svn: 289097
* AMDGPU: Make f16 ConstantFP legalMatt Arsenault2016-12-084-18/+17
| | | | | | | | | | | | | | Not having this legal led to combine failures, resulting in dumb things like bitcasts of constants not being folded away. The only reason I'm leaving the v_mov_b32 hack that f32 already uses is to avoid madak formation test regressions. PeepholeOptimizer has an ordering issue where the immediate fold attempt is into the sgpr->vgpr copy instead of the actual use. Running it twice avoids that problem. llvm-svn: 289096
* [AMDGPU] Fix number of reserved SGPRs on CI to reflect flat scratch useStanislav Mekhanoshin2016-12-081-0/+2
| | | | | | Differential Revision: https://reviews.llvm.org/D27225 llvm-svn: 289095
* [DebugInfo] Add support for __fp16, float, and double constants.David Gross2016-12-082-0/+30
| | | | | | | | | | | | | | | | | | | Summary: Partial fix for PR26619. Prior to this change, a DIGlobalVariable corresponding to a static const was marked with an expression corresponding to its constant value only if it is of integral type. With this change, we now do the same if it is of __fp16, float, or double type (that is, floating-point types that do not exceed 64 bits in size, and hence are supported easily by the existing LLVM machinery for creating constant expressions in debug info). Reviewers: llvm-commits Differential Revision: https://reviews.llvm.org/D27549 llvm-svn: 289094
* AMDGPU: Fix commuting v_sub_u16Matt Arsenault2016-12-082-1/+170
| | | | | | | | The correct commutable opcode was set to itself, so this was simply swapping the operands to commute instead of also changing the opcode to v_subrev_u16. llvm-svn: 289093
* [AMDGPU] Add amdgpu-unify-metadata passStanislav Mekhanoshin2016-12-086-0/+185
| | | | | | | | | | | | | | | | | | Multiple metadata values for records such as opencl.ocl.version, llvm.ident and similar are created after linking several modules. For some of them, notably opencl.ocl.version, this creates semantic problem because we cannot tell which version of OpenCL the composite module conforms. Moreover, such repetitions of identical values often create a huge list of unneeded metadata, which grows bitcode size both in memory and stored on disk. It can go up to several Mb when linked against our OpenCL library. Lastly, such long lists obscure reading of dumped IR. The pass unifies metadata after linking. Differential Revision: https://reviews.llvm.org/D25381 llvm-svn: 289092
* [CUDA] Ignore implicit target attributes during function template instantiation.Artem Belevich2016-12-085-40/+113
| | | | | | | | | | | | | | | | | | | | | | | Some functions and templates are treated as __host__ __device__ even when they don't have explicitly specified target attributes. What's worse, this treatment may change depending on command line options (-fno-cuda-host-device-constexpr) or #pragma clang force_cuda_host_device. Combined with strict checking for matching function target that comes with D25809(r288962), it makes it hard to write code which would explicitly instantiate or specialize some functions regardless of pragmas or command line options in effect. This patch changes the way we match target attributes of base template vs attributes used in explicit instantiation or specialization so that only explicitly specified attributes are considered. This makes base template selection behave consistently regardless of pragma of command line options that may affect CUDA target. Differential Revision: https://reviews.llvm.org/D25845 llvm-svn: 289091
* [asan] Add test which detects bugs undetectable before r288563Vitaly Buka2016-12-081-0/+20
| | | | | | | | | | Reviewers: kcc, eugenis Subscribers: llvm-commits, kubabrecka Differential Revision: https://reviews.llvm.org/D27583 llvm-svn: 289090
* Start using make() in COFF (with a smaller change.)Rui Ueyama2016-12-082-6/+11
| | | | llvm-svn: 289089
* [sanitizer] Do not use the alignment-rounded-up size when using the secondaryKostya Kortchinsky2016-12-083-6/+22
| | | | | | | | | | | | | | | | | | Summary: The combined allocator rounds up the requested size with regard to the alignment, which makes sense when being serviced by the primary as it comes with alignment guarantees, but not with the secondary. For the rare case of large alignments, it wastes memory, and entices unnecessarily large fields for the Scudo header. With this patch, we pass the non-alignement-rounded-up size to the secondary, and adapt the Scudo code for this change. Reviewers: alekseyshl, kcc Subscribers: llvm-commits, kubabrecka Differential Revision: https://reviews.llvm.org/D27428 llvm-svn: 289088
* IR, X86: Understand !absolute_symbol metadata on global variables.Peter Collingbourne2016-12-0817-15/+289
| | | | | | | | | | | | | | | | | Summary: Attaching !absolute_symbol to a global variable does two things: 1) Marks it as an absolute symbol reference. 2) Specifies the value range of that symbol's address. Teach the X86 backend to allow absolute symbols to appear in place of immediates by extending the relocImm and mov64imm32 matchers. Start using relocImm in more places where it is legal. As previously proposed on llvm-dev: http://lists.llvm.org/pipermail/llvm-dev/2016-October/105800.html Differential Revision: https://reviews.llvm.org/D25878 llvm-svn: 289087
* Revert r289084: Start using make() in COFF.Rui Ueyama2016-12-088-46/+43
| | | | | | This reverts commit r289084 to appease buildbots. llvm-svn: 289086
* Start using make() in COFF.Rui Ueyama2016-12-088-43/+46
| | | | | | We don't want ELF and COFF to diverge too much. llvm-svn: 289085
* Move Memory.{h,cpp} to lld/Support so that we can use them from COFF.Rui Ueyama2016-12-0816-27/+29
| | | | llvm-svn: 289084
* [DOXYGEN] Improved doxygen comments.Ekaterina Romanova2016-12-082-37/+38
| | | | | | | | Improved doxygen comments for __wmmintrin_pclmul.h and ammintrin.h intrinsics by taagging parameter names with \a doxygen command to display parameters in italics. Formatted comments to fit into 80 chars. llvm-svn: 289083
* Change the implementation of --dynamic-list to use linker script parsing.Rafael Espindola2016-12-0812-86/+30
| | | | | | | | | | | | | | | | | | | | | | | | | The feature is documented as ----------------------------- The format of the dynamic list is the same as the version node without scope and node name. See *note VERSION:: for more information. -------------------------------- And indeed qt uses a dynamic list with an 'extern "C++"' in it. With this patch we support that The change to gc-sections-shared makes us match bfd. Just because we kept bar doesn't mean it has to be in the dynamic symbol table. The changes to invalid-dynamic-list.test and reproduce.s are because of the new parser. The changes to version-script.s are the only case where we change behavior with regards to bfd, but I would like to see a mix of --version-script and --dynamic-list used in the wild before complicating the code. llvm-svn: 289082
* Use `make` to simplify. NFC.Rui Ueyama2016-12-081-6/+3
| | | | llvm-svn: 289081
* [ObjectYAML] Remove DWARF from class namesChris Bieneman2016-12-087-36/+36
| | | | | | Since all the DWARF classes are in a DWARFYAML namespace having every class start with DWARF seems like a bit of overkill. llvm-svn: 289080
* Use make to instantiate Target and LinkerScript. NFC.Rui Ueyama2016-12-082-17/+15
| | | | llvm-svn: 289079
* Split LinkerDriver::link. NFC.Rui Ueyama2016-12-081-8/+11
| | | | llvm-svn: 289078
* Remove a special handling of AMDGPU entry points.Rui Ueyama2016-12-082-23/+3
| | | | | | | | | This is the last peculiar semantics left in the linker. If you want to always set an entry point to 0, you can pass `-e 0` to the linker. Differential Revision: https://reviews.llvm.org/D27532 llvm-svn: 289077
* [AMDGPU] Scalarization of global uniform loads.Alexander Timofeev2016-12-089-9/+334
| | | | | | | | | | | | | | | | | | Summary: LC can currently select scalar load for uniform memory access basing on readonly memory address space only. This restriction originated from the fact that in HW prior to VI vector and scalar caches are not coherent. With MemoryDependenceAnalysis we can check that the memory location corresponding to the memory operand of the LOAD is not clobbered along the all paths from the function entry. Reviewers: rampitec, tstellarAMD, arsenm Subscribers: wdng, arsenm, nhaehnle Differential Revision: https://reviews.llvm.org/D26917 llvm-svn: 289076
* Fixing test to work when the compiler defaults to a different C++ standard ↵Douglas Yung2016-12-081-8/+30
| | | | | | | | version. Differential Revision: https://reviews.llvm.org/D27488 llvm-svn: 289075
* Add support for 'extern "C"'.Rafael Espindola2016-12-082-3/+6
| | | | | | It is used by Qt. llvm-svn: 289074
* ConstantFolding: Don't crash when encountering vector GEPKeno Fischer2016-12-082-3/+23
| | | | | | | | | | | | | | ConstantFolding tried to cast one of the scalar indices to a vector type. Instead, use the vector type only for the first index (which is the only one allowed to be a vector) and use its scalar type otherwise. Fixes PR31250. Reviewers: majnemer Differential Revision: https://reviews.llvm.org/D27389 llvm-svn: 289073
* Make function names shorter. NFC.Rui Ueyama2016-12-081-13/+13
| | | | llvm-svn: 289072
* Do not use template where template is not needed.Rui Ueyama2016-12-081-8/+8
| | | | | | Compilers can inline and optimize this code in the same way as template. llvm-svn: 289071
* Fix ASAN buildbots by fixing a double free crash.Greg Clayton2016-12-082-3/+5
| | | | | | The dwarfgen::Generator::StringPool was in a unique_ptr but it was owned by the Allocator member variable so it was being free twice. llvm-svn: 289070
* Make this test more strict. NFC.Rafael Espindola2016-12-081-4/+38
| | | | llvm-svn: 289069
* [CodeCompletion][ObjC] Use a parameterized NSSet return type forAlex Lorenz2016-12-082-2/+2
| | | | | | | | keyPathsForValuesAffecting* KVO completion results rdar://23791701 llvm-svn: 289068
* Inline function called only once.Rafael Espindola2016-12-082-18/+11
| | | | llvm-svn: 289067
OpenPOWER on IntegriCloud