summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* [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
* Handle C++ names in anon scripts.Rafael Espindola2016-12-082-2/+64
| | | | llvm-svn: 289066
* Inline two functions called only once. NFC.Rafael Espindola2016-12-082-28/+19
| | | | llvm-svn: 289065
* Add two helper functions. NFC.Rafael Espindola2016-12-082-7/+18
| | | | llvm-svn: 289064
* [compiler-rt][asan] Fix overlaping parameters for memmove/memcpy on windows.Etienne Bergeron2016-12-081-11/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: On windows, memmove and memcpy may be the same functions (on 64-bits). ``` -- f:\dd\vctools\crt\vcruntime\src\string\amd64\memcpy.asm -------------------- OPTION PROLOGUE:NONE, EPILOGUE:NONE memmove = memcpy mov r11, rcx ; save destination address ``` This is causing ASAN to report overlaping parameters when instrumenting chromium. ``` D:\src\chromium\src>out\asan64\chrome.exe --no-sandbox [8956:6208:1121/162511:ERROR:entry.cc(167)] Entry::Deserialize: dictionary has no interface_provider_specs key [8956:11560:1121/162511:ERROR:external_registry_loader_win.cc(130)] Missing value path for key Software\Google\Chrome\Ex tensions\doeiiacdhfmpdeckdaifnjaemmkkdlkf. ================================================================= ==5132==ERROR: AddressSanitizer: memcpy-param-overlap: memory ranges [0x000000237ee8,0x000000237eea) and [0x000000237ee9 , 0x000000237eeb) overlap ``` The error triggered on chromium: ``` Child-SP RetAddr Call Site 00000000`00166520 00000001`400a4886 chrome!__asan::ReportStringFunctionMemoryRangesOverlap+0x23 [d:\src\llvm\llvm\projects\compiler-rt\lib\asan\asan_report.cc @ 305] *** WARNING: Unable to verify checksum for D:\src\chromium\src\out\asan64dynamic\libglesv2.dll 00000000`001672a0 000007fe`e1859607 chrome!__asan_wrap_memcpy+0xf6 [d:\src\llvm\llvm\projects\compiler-rt\lib\asan\asan_interceptors.cc @ 458] 00000000`00167b30 000007fe`e184bcbc libglesv2!__acrt_fp_strflt_to_string+0xb7 [d:\th\minkernel\crts\ucrt\src\appcrt\convert\_fptostr.cpp @ 86] (Inline Function) --------`-------- libglesv2!fp_format_f+0x57 [d:\th\minkernel\crts\ucrt\src\appcrt\convert\cvt.cpp @ 578] 00000000`00167b60 000007fe`e182e2a2 libglesv2!__acrt_fp_format+0x180 [d:\th\minkernel\crts\ucrt\src\appcrt\convert\cvt.cpp @ 722] 00000000`00167bf0 000007fe`e182ce80 libglesv2!__crt_stdio_output::output_processor<char,__crt_stdio_output::stream_output_adapter<char>,__crt_stdio_output::format_validation_ ``` This bug is similar to: https://llvm.org/bugs/show_bug.cgi?id=16362 Reviewers: rnk, zaks.anna, filcab Subscribers: filcab, kubabrecka, chrisha, llvm-commits, dberris Differential Revision: https://reviews.llvm.org/D27052 llvm-svn: 289063
* Simplify. NFC.Rafael Espindola2016-12-081-1/+1
| | | | llvm-svn: 289062
* [ELF] Correct addAbsolute function argument nameSimon Atanasyan2016-12-082-3/+3
| | | | | | Follow-up to r289025. llvm-svn: 289061
* Prune unused libdeps.NAKAMURA Takumi2016-12-084-4/+2
| | | | llvm-svn: 289060
* [CodeCompletion] Provide Objective-C class property completion resultsAlex Lorenz2016-12-085-34/+187
| | | | | | | | | | | | This commit provides class property code completion results. It supports explicit and implicit class properties, but the special block completion is done only for explicit properties right now. rdar://25636195 Differential Revision: https://reviews.llvm.org/D27053 llvm-svn: 289058
* Prune unused \param(s) in r289050. [-Wdocumentation]NAKAMURA Takumi2016-12-081-3/+0
| | | | llvm-svn: 289057
* DIE::addAttribute(): Prune a redundant \param. [-Wdocumentation]NAKAMURA Takumi2016-12-081-1/+1
| | | | llvm-svn: 289056
* [Sema] Avoid "case value not in enumerated type" warning for C++11 opaque enumsAlex Lorenz2016-12-082-1/+32
| | | | | | | | | | | | This commit ensures that the switch warning "case value not in enumerated type" isn't shown for opaque enums. We don't know the actual list of values in opaque enums, so that warning is incorrect. rdar://29230764 Differential Revision: https://reviews.llvm.org/D27299 llvm-svn: 289055
* LanaiInstPrinter: Prune unused libdeps.NAKAMURA Takumi2016-12-081-1/+1
| | | | llvm-svn: 289054
* DebugInfoDWARFTests: Prune unused libdeps.NAKAMURA Takumi2016-12-081-4/+0
| | | | llvm-svn: 289053
* DebugInfoDWARFTests: Add missing deps, AsmPrinter and Object.NAKAMURA Takumi2016-12-081-0/+2
| | | | llvm-svn: 289052
* DebugInfoDWARFTests: Reorder LLVM_LINK_COMPONENTS.NAKAMURA Takumi2016-12-081-1/+1
| | | | llvm-svn: 289051
* [SelectionDAG] Add expansion and promotion of [US]MUL_LOHINicolai Haehnle2016-12-085-30/+208
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: Most targets set the action for these nodes to Expand even though there isn't actually any code for them in ExpandNode. Instead, targets simply relied on the fact that no code generates these nodes as long as the nodes aren't legal or custom. However, generating these nodes can be useful e.g. for divide-by-constant in wider integer types. Expand of [US]MUL_LOHI will use MULH[US] when legal or custom, and a sequence of half-width multiplications otherwise. Promote uses a wider multiply. This patch intends to not change the generated code, but indirect effects are possible since expansions/promotions that were previously done in DAGCombine may now be done in LegalizeDAG. See D24822 for a change that actually uses the new expansion. Reviewers: spatel, bkramer, venkatra, efriedma, hfinkel, ast, nadav, tstellarAMD Subscribers: arsenm, jyknight, nemanjai, wdng, nhaehnle, llvm-commits Differential Revision: https://reviews.llvm.org/D24956 llvm-svn: 289050
* X86: Add checks for fma_patterns[_wide].ll with -enable-no-infs-fp-mathNicolai Haehnle2016-12-082-701/+1244
| | | | | | | | | | | | This re-adds checks for the patterns that were disabled with r288506. Reviewers: spatel, delena, craig.topper Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D27346 llvm-svn: 289049
* AMDGPU: Properly implement SIRegisterInfo::isFrameOffsetLegal and ↵Nicolai Haehnle2016-12-089-103/+145
| | | | | | | | | | | | | | | | | | | | | | | | | needsFrameBaseReg Summary: Without the fix to isFrameOffsetLegal to consider the instruction's immediate offset, the new test case hits the corresponding assertion in resolveFrameIndex, because the LocalStackSlotAllocation pass re-uses a different base register. With only the fix to isFrameOffsetLegal, code quality reduces in a bunch of places because frame base registers are added where they're not needed. This is addressed by properly implementing needsFrameBaseReg, which also helps to avoid unnecessary zero frame indices in a bunch of other places. Fixes piglit glsl-1.50/execution/variable-indexing/gs-output-array-vec4-index-wr.shader_test Reviewers: arsenm, tstellarAMD Subscribers: qcolombet, kzhuravl, wdng, yaxunl, tony-tye, llvm-commits Differential Revision: https://reviews.llvm.org/D27344 llvm-svn: 289048
OpenPOWER on IntegriCloud