summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* [X86] Remove MMX_MASKMOVQ64 and VMASKMOVDQU from scheduler models.Craig Topper2018-03-185-26/+2
| | | | | | | | | | | | | | The information was so wildly inaccurate and incomplete its better to just remove it. MMX_MASKMOVQ64 showed up twice in several scheduler models. In Haswell and Broadwell they were on adjacent lines. On Skylake the copies had different information. MMX_MASKMOVQ and MASKMOVDQU were completely missing. MMX_MASKMOVQ64 was listed on Haswell/Broadwell as 1 cycle on port 1 despite it being a store instruction. Filed PR36780 to track fixing this right. llvm-svn: 327783
* [C++17] Allow an empty expression in an if init statementZhihao Yuan2018-03-172-5/+77
| | | | | | | | | | | | | | | | | | | Summary: This fixes [PR35381](https://llvm.org/pr35381) and an additional bug where clang didn't warn about the C++17 extension when having an expression in the init statement. Thanks Nicolas Lesser for contributing the patch. Reviewers: rsmith Reviewed By: rsmith Subscribers: erik.pilkington, cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D40445 llvm-svn: 327782
* Implement DR2229, which prohibits unnamed bit-fields from having qualifiers ↵Aaron Ballman2018-03-174-1/+27
| | | | | | in C++. llvm-svn: 327781
* Fix codegen for structured binding binding in conditionsZhihao Yuan2018-03-172-9/+35
| | | | | | | | | | | | | | | | | | | | | Summary: The codegen for conditions assumes that a normal variable declaration is used in a condition, but this is not the case when a structured binding is used. This fixes [PR36747](http://llvm.org/pr36747). Thanks Nicolas Lesser for contributing the patch. Reviewers: lichray, rsmith Reviewed By: lichray Subscribers: cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D44534 llvm-svn: 327780
* [AArch64] Skip an unnecessary getCopyToReg in DYNAMIC_STACKALLOCMartin Storsjo2018-03-171-5/+2
| | | | | | Differential Revision: https://reviews.llvm.org/D44586 llvm-svn: 327779
* Revert "[DAG, X86] Revert r327197 "Revert r327170, r327171, r327172""Nirav Dave2018-03-1724-601/+667
| | | | | | as it times out building test-suite on PPC. llvm-svn: 327778
* [DAG, X86] Revert r327197 "Revert r327170, r327171, r327172"Nirav Dave2018-03-1724-667/+601
| | | | | | | Reland ISel cycle checking improvements after simplifying and reducing node id invariant traversal. llvm-svn: 327777
* Fix some user facing typosSylvestre Ledru2018-03-172-3/+3
| | | | llvm-svn: 327776
* [Driver] Fix the descriptions for -Tdata and -Ttext optionsAaron Smith2018-03-171-2/+2
| | | | | | | | | | Reviewers: llvm-commits Subscribers: cfe-commits Differential Revision: https://reviews.llvm.org/D44581 llvm-svn: 327775
* AMDGPU/GlobalISel: Cleanup constant legalityMatt Arsenault2018-03-172-64/+27
| | | | llvm-svn: 327774
* AMDGPU/GlobalISel: Basic G_GEP legalityMatt Arsenault2018-03-172-4/+110
| | | | llvm-svn: 327773
* AMDGPU/GlobalISel: Basic legality for load/storeMatt Arsenault2018-03-173-14/+292
| | | | llvm-svn: 327772
* [bindings/go] Add a missing `,` in the test code to fix a go compileChandler Carruth2018-03-171-1/+1
| | | | | | failure. llvm-svn: 327771
* [cxx_status] Add entry for the Reflection TS.Richard Smith2018-03-171-2/+0
| | | | llvm-svn: 327770
* [cxx_status] Update to match Jacksonville 2018 motions.Richard Smith2018-03-171-50/+97
| | | | | | | | Also rearrange how we list DR motions: rather than listing them as part of some later standard, list them against the feature they are a DR against. Explicitly add a description of how we handle DRs. llvm-svn: 327769
* Adding nocf_check attribute for cf-protection fine tuningOren Ben Simhon2018-03-1723-44/+193
| | | | | | | | | | The patch adds nocf_check target independent attribute for disabling checks that were enabled by cf-protection flag. The attribute can be appertained to functions and function pointers. Attribute name follows GCC's similar attribute name. Differential Revision: https://reviews.llvm.org/D41880 llvm-svn: 327768
* [X86] Added support for nocf_check attribute for indirect Branch TrackingOren Ben Simhon2018-03-1734-76/+302
| | | | | | | | | | | | | | | X86 Supports Indirect Branch Tracking (IBT) as part of Control-Flow Enforcement Technology (CET). IBT instruments ENDBR instructions used to specify valid targets of indirect call / jmp. The `nocf_check` attribute has two roles in the context of X86 IBT technology: 1. Appertains to a function - do not add ENDBR instruction at the beginning of the function. 2. Appertains to a function pointer - do not track the target function of this pointer by adding nocf_check prefix to the indirect-call instruction. This patch implements `nocf_check` context for Indirect Branch Tracking. It also auto generates `nocf_check` prefixes before indirect branchs to jump tables that are guarded by range checks. Differential Revision: https://reviews.llvm.org/D41879 llvm-svn: 327767
* [SystemZ] Add 'REQUIRES: asserts' to test case using debug output.Jonas Paulsson2018-03-171-0/+1
| | | | llvm-svn: 327766
* [SystemZ] computeKnownBitsForTargetNode() / ComputeNumSignBitsForTargetNode()Jonas Paulsson2018-03-179-21/+1560
| | | | | | | | | | | Improve/implement these methods to improve DAG combining. This mainly concerns intrinsics. Some constant operands to SystemZISD nodes have been marked Opaque to avoid transforming back and forth between generic and target nodes infinitely. Review: Ulrich Weigand llvm-svn: 327765
* [SelectionDAG] Handle big endian target BITCAST in computeKnownBits()Jonas Paulsson2018-03-172-6/+34
| | | | | | | | | | | | | | | The BITCAST handling in computeKnownBits() previously only worked for little endian. This patch reverses the iteration over elements for a big endian target which allows this to work in this case also. SystemZ test case. Review: Eli Friedman https://reviews.llvm.org/D44249 llvm-svn: 327764
* Bugfix, extern declarations for libomp functions are `extern "C"` declarationsGeorge Rokos2018-03-171-0/+6
| | | | llvm-svn: 327763
* Revert "Mmap interceptor new option, Write Exec runtime detector"Vitaly Buka2018-03-175-47/+0
| | | | | | | | Breaks Android bot. This reverts commit r327747. llvm-svn: 327762
* [GlobalsAA] Fix a pretty terrible bug that has been in GlobalsAA forChandler Carruth2018-03-161-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | a long time. The key thing is that we need to create value handles for every function that we create a `FunctionInfo` object around. Without this, when that function is deleted we can end up creating a new function that collides with its address and look up a stale AA result. With that AA result we can in turn miscompile code in ways that break. This is seriously one of the most absurd miscompiles I've seen. It only reproduced for us recently and only when building a very large server with both ThinLTO and PGO. A *HUGE* shout out to Wei Mi who tracked all of this down and came up with this patch. I'm just landing it because I happened to still by at a computer. He or I can work on crafting a test case to hit this (now that we know what to target) but it'll take a while, and we've been chasing this for a long time and need it fix Right Now. llvm-svn: 327761
* [MachineOutliner] Make KILLs invisibleJessica Paquette2018-03-163-0/+13
| | | | | | | | | At the point the outliner runs, KILLs don't impact anything, but they're still considered unique instructions. This commit makes them invisible like DebugValues so that they can still be outlined without impacting outlining decisions. llvm-svn: 327760
* [Fuzzer] Build the shared memory hooks for FuchsiaPetr Hosek2018-03-161-0/+1
| | | | | | | | | This is needed otherwise we'll get undefined references when trying to use the libFuzzer built for Fuchsia. Differential Revision: https://reviews.llvm.org/D44590 llvm-svn: 327759
* OpenBSD UBsan support final missing bitsVitaly Buka2018-03-162-5/+7
| | | | | | | | | | | | | | | Summary: One forgotten file change + reordering one header due to clang-format Patch by David CARLIER Reviewers: vitalybuka, vsk Subscribers: kubamracek, fedor.sergeev, llvm-commits, #sanitizers Differential Revision: https://reviews.llvm.org/D44556 llvm-svn: 327758
* [llvm-mca] Remove method getSchedModel() from the Backend.Andrea Di Biagio2018-03-163-7/+7
| | | | llvm-svn: 327756
* [MS] Fix bug in r327732 with devirtualized complete destructor callsReid Kleckner2018-03-162-0/+26
| | | | llvm-svn: 327754
* Fix the Windows build after r327750Frederic Riss2018-03-161-1/+1
| | | | llvm-svn: 327753
* [asan] Replace vfork with fork.Evgeniy Stepanov2018-03-163-0/+43
| | | | | | | | | | | | | | | | | | | | Summary: vfork is not ASan-friendly because it modifies stack shadow in the parent process address space. While it is possible to compensate for that with, for example, __asan_handle_no_return before each call to _exit or execve and friends, simply replacing vfork with fork looks like by far the easiest solution. Posix compliant programs can not detect the difference between vfork and fork. Fixes https://github.com/google/sanitizers/issues/925 Reviewers: kcc, vitalybuka Subscribers: kubamracek, llvm-commits Differential Revision: https://reviews.llvm.org/D44587 llvm-svn: 327752
* [DWARFASTParserClang] Complete external record types before using them as a ↵Frederic Riss2018-03-164-0/+68
| | | | | | | | | | | | | | | | | | decl context. Summary: When in a gmodules-like debugging scenario, you can have a parent decl context that gets imported from an external AST. When this happens, we must be careful to complete this type before adding children to it, otherwise it sometimes results in a crash. Reviewers: clayborg, jingham Subscribers: aprantl, JDevlieghere, lldb-commits Differential Revision: https://reviews.llvm.org/D43592 llvm-svn: 327750
* [llvm-mca] Remove unused methods from Backend. NFCAndrea Di Biagio2018-03-161-17/+0
| | | | llvm-svn: 327749
* [asan] Remove empty fork interceptor.Evgeniy Stepanov2018-03-162-14/+0
| | | | | | After a partial revert, ASan somehow ended up with an empty interceptor for fork(). llvm-svn: 327748
* Mmap interceptor new option, Write Exec runtime detectorVitaly Buka2018-03-165-0/+47
| | | | | | | | | | | | | | | | Summary: Following-up the refactoring of mmap interceptors, adding a new common option to detect PROT_WRITE|PROT_EXEC pages request. Patch by David CARLIER Reviewers: vitalybuka, vsk Reviewed By: vitalybuka Subscribers: krytarowski, #sanitizers Differential Revision: https://reviews.llvm.org/D44194 llvm-svn: 327747
* [Analysis] Fix some Clang-tidy modernize and Include What You Use warnings; ↵Eugene Zelenko2018-03-164-225/+266
| | | | | | other minor fixes (NFC). llvm-svn: 327746
* Quiet unused variable warnings. NFC.David L Kreitzer2018-03-161-0/+3
| | | | | | Differential revision: https://reviews.llvm.org/D44583 llvm-svn: 327745
* [X86] Pass SelectionDAG into X86ISelAddressMode::dump and on to SDNode::dump.Craig Topper2018-03-161-4/+4
| | | | | | This prevents a crash in SelectionDAGDumper with -debug when trying to print mem operands if one of the registers in the addressing mode comes from a load. llvm-svn: 327744
* [InstSimplify] add NaN constant diversity; NFCSanjay Patel2018-03-161-39/+75
| | | | llvm-svn: 327743
* [Hexagon] Avoid bank conflicts in post-RA schedulerKrzysztof Parzyszek2018-03-163-4/+170
| | | | | | | | | | Avoid scheduling two loads in such a way that they would end up in the same packet. If there is a load in a packet, try to schedule a non-load next. Patch by Brendon Cahoon. llvm-svn: 327742
* [MS] Fix tests after r327738 that only fail with a default Windows targetReid Kleckner2018-03-162-9/+9
| | | | llvm-svn: 327741
* Moved extern declarations to private header file, they are only used from ↵George Rokos2018-03-162-4/+4
| | | | | | within libomptarget, they don't need to be in omptarget.h. llvm-svn: 327740
* [MS] Commit some changes that were intended to be part of r327738Reid Kleckner2018-03-161-2/+2
| | | | llvm-svn: 327739
* [MS] Don't escape MS C++ names with \01Reid Kleckner2018-03-16145-3623/+3623
| | | | | | | It is not needed after LLVM r327734. Now it will be easier to copy-paste IR symbol names from Clang. llvm-svn: 327738
* [Hexagon] Add lit testcases for atomic intrinsicsKrzysztof Parzyszek2018-03-163-0/+177
| | | | | | Patch by Ben Craig. llvm-svn: 327737
* [COFF] Clarify comment. NFCShoaib Meenai2018-03-161-6/+8
| | | | | | | | | | | Reid pointed out the string table for supporting long section names is a BFD extension and the comments should reflect that. Explicitly spell out link.exe's and binutil's behavior around section names and the rationale for LLD's behavior. Differential Revision: https://reviews.llvm.org/D42659 llvm-svn: 327736
* [Parser] Remove hard-coded bracket depth limitJan Korous2018-03-162-3/+1
| | | | | | The diagnostics produced if assert fails are using proper limit from language definition already. llvm-svn: 327735
* [IR] Avoid the need to prefix MS C++ symbols with '\01'Reid Kleckner2018-03-168-24/+230
| | | | | | | | | | | | | | | | | | | | Now the Windows mangling modes ('w' and 'x') do not do any mangling for symbols starting with '?'. This means that clang can stop adding the hideous '\01' leading escape. This means LLVM debug logs are less likely to contain ASCII escape characters and it will be easier to copy and paste MS symbol names from IR. Finally. For non-Windows platforms, names starting with '?' still get IR mangling, so once clang stops escaping MS C++ names, we will get extra '_' prefixing on MachO. That's fine, since it is currently impossible to construct a triple that uses the MS C++ ABI in clang and emits macho object files. Differential Revision: https://reviews.llvm.org/D7775 llvm-svn: 327734
* Revert r327721 "This patch fixes the invalid usage of OptSize in Machine ↵Reid Kleckner2018-03-161-3/+3
| | | | | | | | | Combiner." It causes asserts when compiling Chromium on Win32 with optimizations. We compile many things with -Os. llvm-svn: 327733
* [MS] Always use base dtors in place of complete/vbase dtors when possibleReid Kleckner2018-03-1617-56/+124
| | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: Previously we tried too hard to uphold the fiction that destructor variants work like they do on Itanium throughout the ABI-neutral parts of clang. This lead to MS C++ ABI incompatiblities and other bugs. Now, -mconstructor-aliases will no longer control this ABI detail, and clang -cc1's LLVM IR output will be this much closer to the clang driver's. Based on a patch by Zahira Ammarguellat: https://reviews.llvm.org/D39063 I've tried to move the logic that Zahira added into MicrosoftCXXABI.cpp. There is only one ABI-specific detail sticking out, and that is in CodeGenModule::getAddrOfCXXStructor, where we collapse complete dtors to base dtors in the MS ABI. This fixes PR32990. Reviewers: erichkeane, zahiraam, majnemer, rjmccall Subscribers: cfe-commits Differential Revision: https://reviews.llvm.org/D44505 llvm-svn: 327732
* Skip TestThreadSpecificBpPlusCondition on Darwin due to timeoutsVedant Kumar2018-03-161-0/+1
| | | | | | Bot failure: https://ci.swift.org/job/oss-lldb-incremental-osx/1104/ llvm-svn: 327731
OpenPOWER on IntegriCloud