summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* [AMDGPU] Add a pass to promote bitcast callsScott Linder2018-10-267-8/+222
| | | | | | | | | | | | AMDGPU currently only supports direct calls, but at lower optimisation levels it fails to lower statically direct calls which appear indirect due to a bitcast. Add a pass to visit all CallSites and use CallPromotionUtils to "devirtualize" calls. Differential Revision: https://reviews.llvm.org/D52741 llvm-svn: 345382
* [clang-tidy] Re-commit: Add new 'readability-uppercase-literal-suffix' check ↵Roman Lebedev2018-10-2624-19/+1479
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (CERT DCL16-C, MISRA C:2012, 7.3, MISRA C++:2008, 2-13-4) Summary: Detects when the integral literal or floating point (decimal or hexadecimal) literal has non-uppercase suffix, and suggests to make the suffix uppercase, with fix-it. All valid combinations of suffixes are supported. ``` auto x = 1; // OK, no suffix. auto x = 1u; // warning: integer literal suffix 'u' is not upper-case auto x = 1U; // OK, suffix is uppercase. ... ``` This is a re-commit, the original was reverted by me in rL345305 due to discovered bugs. (implicit code, template instantiation) Tests were added, and the bugs were fixed. I'm unable to find any further bugs, hopefully there aren't any.. References: * [[ https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?pageId=87152241 | CERT DCL16-C ]] * MISRA C:2012, 7.3 - The lowercase character "l" shall not be used in a literal suffix * MISRA C++:2008, 2-13-4 - Literal suffixes shall be upper case Reviewers: JonasToth, aaron.ballman, alexfh, hokein, xazax.hun Reviewed By: aaron.ballman Subscribers: Eugene.Zelenko, mgorny, rnkovacs, cfe-commits Tags: #clang-tools-extra Differential Revision: https://reviews.llvm.org/D52670 llvm-svn: 345381
* Revert r345330 "Add MS ABI mangling for operator<=>."Hans Wennborg2018-10-263-16/+13
| | | | | | | | | | The generated MS manglings differ between 32- and 64-bit, and the test only expects the latter. See also the commit email thread. > Thanks to Cameron DaCamara at Microsoft for letting us know what their > chosen mangling is here! llvm-svn: 345380
* Regenerate testSimon Pilgrim2018-10-261-4/+4
| | | | llvm-svn: 345379
* [llvm-mca] Fix -wreorder and -Wunused-private-field after r345376. NFCSam McCall2018-10-262-4/+2
| | | | llvm-svn: 345378
* [Codegen] - Implement basic .debug_loclists section emission (DWARF5).George Rimar2018-10-267-53/+302
| | | | | | | | | .debug_loclists is the DWARF 5 version of the .debug_loc. With that patch, it will be emitted when DWARF 5 is used. Differential revision: https://reviews.llvm.org/D53365 llvm-svn: 345377
* [llvm-mca] Removed dependency on mca::SourcMgr in some Views. NFCAndrea Di Biagio2018-10-269-44/+61
| | | | llvm-svn: 345376
* [SimpleLoopUnswitch] Make all checks before actual non-trivial unswitchMax Kazantsev2018-10-261-18/+20
| | | | | | | | | | | We should be able to make all relevant checks before we actually start the non-trivial unswitching, so that we could guarantee that once we have started the transform, it will always succeed. Reviewed By: chandlerc Differential Revision: https://reviews.llvm.org/D53747 llvm-svn: 345375
* [PDB] Fix `SymbolFilePDBTests` after r345313Aleksandr Urakov2018-10-261-2/+4
| | | | | | Differential Revision: https://reviews.llvm.org/D53749 llvm-svn: 345374
* [NativePDB] Add the ability to dump dump global variables.Zachary Turner2018-10-265-17/+1087
| | | | | | | | | | | | | | | | | | | | | | | | | LLDB has the ability to display global variables, even without a running process, via the target variable command. This is because global variables are linker initialized, so their values are embedded directly into the executables. This gives us great power for testing native PDB functionality in a cross-platform manner, because we don't actually need a running process. We can just create a target using an EXE file, and display global variables. And global variables can have arbitrarily complex types, so in theory we can fully exercise the type system, record layout, and data formatters for native PDB files and PE/COFF executables on any host platform, as long as our type does not require a dynamic initializer. This patch adds basic support for finding variables by name, and adds an exhaustive test for fundamental data types and pointers / references to fundamental data types. Subsequent patches will extend this to typedefs, classes, pointers to functions, and other cases. Differential Revision: https://reviews.llvm.org/D53731 llvm-svn: 345373
* Revert "Reapply: [Driver] Use forward slashes in most linker arguments"Martin Storsjo2018-10-266-37/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit r345370, as it uncovered even more issues in tests with partial/inconsistent path normalization: http://lab.llvm.org:8011/builders/llvm-clang-x86_64-expensive-checks-win/builds/13562 http://lab.llvm.org:8011/builders/clang-x64-windows-msvc/builds/886 http://lab.llvm.org:8011/builders/llvm-clang-lld-x86_64-scei-ps4-windows10pro-fast/builds/20994 In particular, these tests seem to have failed: Clang :: CodeGen/thinlto-diagnostic-handler-remarks-with-hotness.ll Clang :: CodeGen/thinlto-multi-module.ll Clang :: Driver/cuda-external-tools.cu Clang :: Driver/cuda-options.cu Clang :: Driver/hip-toolchain-no-rdc.hip Clang :: Driver/hip-toolchain-rdc.hip Clang :: Driver/openmp-offload-gpu.c At least the Driver tests could potentially be fixed by extending the path normalization to even more places, but the issues with the CodeGen tests are still unknown. In addition, a number of other tests seem to have been broken in other clang dependent tools such as clang-tidy and clangd. llvm-svn: 345372
* Update the example of BS_Stroustrup to match what is done by clang-formatSylvestre Ledru2018-10-262-18/+12
| | | | | | | | | | | | | | | | | | Summary: reported here https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=911561 clang-format-7 -style="{BreakBeforeBraces: Stroustrup}" wasn't doing the same as the doc Reviewers: krasimir Reviewed By: krasimir Subscribers: cfe-commits Differential Revision: https://reviews.llvm.org/D53520 llvm-svn: 345371
* Reapply: [Driver] Use forward slashes in most linker argumentsMartin Storsjo2018-10-266-17/+37
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | libtool inspects the output of $CC -v to detect what object files and libraries are linked in by default. When clang is built as a native windows executable, all paths are formatted with backslashes, and the backslashes cause each argument to be enclosed in quotes. The backslashes and quotes break further processing within libtool (which is implemented in shell script, running in e.g. msys) pretty badly. Between unix style pathes (that only work in tools that are linked to the msys runtime, essentially the same as cygwin) and proper windows style paths (with backslashes, that can easily break shell scripts and msys environments), the best compromise is to use windows style paths (starting with e.g. c:) but with forward slashes, which both msys based tools, shell scripts and native windows executables can cope with. This incidentally turns out to be the form of paths that GCC prints out when run with -v on windows as well. This change potentially makes the output from clang -v a bit more inconsistent, but it is isn't necessarily very consistent to begin with. Compared to the previous attempt in SVN r345004, this now does the same transformation on more paths, hopefully on the right set of paths so that all tests pass (previously some tests failed, where path fragments that were required to be identical turned out to use different path separators in different places). This now also is done only for non-windows, or cygwin/mingw targets, to preserve all backslashes for MSVC cases (where the paths can end up e.g. embedded into PDB files. (The transformation function itself, llvm::sys::path::convert_to_slash only has an effect when run on windows.) Differential Revision: https://reviews.llvm.org/D53066 llvm-svn: 345370
* [SystemZ] Fix -Wcovered-switch-default as coding standard regulatesFangrui Song2018-10-261-1/+0
| | | | llvm-svn: 345369
* [NFC] Add periods to CREDITS.txt (testing git-llvm)Kristina Brooks2018-10-261-2/+2
| | | | | | NFC commit to test git-llvm bridge for current GitHub monorepo. llvm-svn: 345368
* [llvm-nm] Simplify. NFCFangrui Song2018-10-261-14/+7
| | | | | | | | Change a \t to spaces Change some zero-filling memcpy to aggregate initialization Delete redundant ArchiveName.clear() after declaration llvm-svn: 345367
* [PowerPC] Fix some missed optimization opportunities in combineSetCCLi Jia He2018-10-263-56/+63
| | | | | | | | | | | For both operands are bool, short, int, long, long long, add the following optimization. 1. 0-x == y --> x+y ==0 2. 0-x != y --> x+y != 0 Review: nemanjai Differential Revision: https://reviews.llvm.org/D53360 llvm-svn: 345366
* [PowerPC][NFC] Add tests for some missed optimization opportunities in ↵Li Jia He2018-10-261-0/+436
| | | | | | | | | | | | | combineSetCC For both operands are bool, short, int, long, long long, add the following optimization test case. 1. 0-x == y --> x+y ==0 2. 0-x != y --> x+y != 0 Review: nemanjai Differential Revision: https://reviews.llvm.org/D53358 llvm-svn: 345365
* This reverts commit r345357, It is wrong to create a new directory and put ↵Li Jia He2018-10-261-436/+0
| | | | | | the test file into it. I am sorry for this. llvm-svn: 345364
* [NFC] Fix the regular expression for BE PPC in update_llc_test_checks.pyNemanja Ivanovic2018-10-261-0/+1
| | | | | | | | | Currently, the regular expression that matches the lines of assembly for PPC LE (ELFv2) does not work for the assembly for BE (ELFv1). This patch fixes it. Differential revision: https://reviews.llvm.org/D53059 llvm-svn: 345363
* PR31978: Don't crash if CodeGen sees a top-level BindingDecl.Richard Smith2018-10-262-0/+2
| | | | llvm-svn: 345362
* [PowerPC] Keep vector int to fp conversions in vector domainNemanja Ivanovic2018-10-263-0/+263
| | | | | | | | | | | | At present a v2i16 -> v2f64 convert is implemented by extracts to scalar, scalar converts, and merge back into a vector. Use vector converts instead, with the int data permuted into the proper position and extended if necessary. Patch by RolandF. Differential revision: https://reviews.llvm.org/D53346 llvm-svn: 345361
* CodeGen: correct the case for swift 4.2, 5.0Saleem Abdulrasool2018-10-262-13/+13
| | | | | | | This corrects the leader for the swift names. The encoding for 4.2 and 5.0 differ by a single bit on the second character and were swapped. llvm-svn: 345360
* [Pipeliner] Mark swp-art-deps-rec.ll as REQUIRES: asserts after rL345319Fangrui Song2018-10-261-0/+2
| | | | llvm-svn: 345359
* Add dependency from SystemZAsmParser to SystemZAsmPrinter after rL345349Fangrui Song2018-10-261-1/+1
| | | | | | This fixes -DBUILD_SHARED_LIBS=on build. The dependency is similar to that of X86's. llvm-svn: 345358
* [PowerPC][NFC] Add tests for some missed optimization opportunities in ↵Li Jia He2018-10-261-0/+436
| | | | | | | | | | | | | combineSetCC For both operands are bool, short, int, long, long long, add the following optimization test case. 1. 0-x == y --> x+y ==0 2. 0-x != y --> x+y != 0 Review: nemanjai Differential Revision: https://reviews.llvm.org/D53358 llvm-svn: 345357
* Revert "[AArch64] Create proper memoperand for multi-vector stores"Vlad Tsyrklevich2018-10-262-165/+1
| | | | | | | This reverts commit r345315, it was causing test failures on sanitizer-x86_64-linux-fast. llvm-svn: 345356
* add myself to the CREDITS.TXTLi Jia He2018-10-261-0/+4
| | | | llvm-svn: 345355
* [AArch64] Support Windows stack probe command-line arguments.Eli Friedman2018-10-262-1/+19
| | | | | | | | | | | Adds support for -mno-stack-arg-probe and -mstack-probe-size. (Not really happy copy-pasting code, but that's what we do for all the other Windows targets.) Differential Revision: https://reviews.llvm.org/D53617 llvm-svn: 345354
* Teach the DominatorTree fallback to recalculation when applying updates to ↵Chijun Sima2018-10-261-0/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | speedup JT (PR37929) Summary: This patch makes the dominatortree recalculate when applying updates with the size of the update vector larger than a threshold. Directly applying updates is usually slower than recalculating the whole domtree in this case. This patch fixes an issue which causes JT running slowly on some inputs. In bug 37929, the dominator tree is trying to apply 19,000+ updates several times, which takes several minutes. After this patch, the time used by DT.applyUpdates: | Input | Before (s) | After (s) | Speedup | | the 2nd Reproducer in 37929 | 297 | 0.15 | 1980x | | clang-5.0.0.0.bc | 9.7 | 4.3 | 2.26x | | clang-5.0.0.4.bc | 11.6 | 2.6 | 4.46x | Reviewers: kuhar, brzycki, trentxintong, davide, dmgreen, grosser Reviewed By: kuhar, brzycki Subscribers: kristina, llvm-commits Differential Revision: https://reviews.llvm.org/D53245 llvm-svn: 345353
* Run the min/max tests agaist the header <charconv>. Fix that header so it ↵Marshall Clow2018-10-262-0/+7
| | | | | | passes. NFC. llvm-svn: 345352
* Update test that checks auto-completion for settings set.Jonas Devlieghere2018-10-261-0/+5
| | | | | | | This reverts r345350 and updates the test rather than removing it. Now we check that `--g` auto-completes to `--global`. llvm-svn: 345351
* Remove test that checks auto-completion for settings set.Jonas Devlieghere2018-10-261-5/+0
| | | | | | | With the new `-f` option for `settings set`, `-` (dash) no longer auto-complete to `-g`. llvm-svn: 345350
* [SystemZ] Implement SystemZOperand::print()Jonas Paulsson2018-10-262-1/+147
| | | | | | | | | | | | | SystemZAsmParser can now handle -debug by printing the operands neatly to the output stream. Before this patch this lead to an llvm_unreachable(). It seems that now '-mllvm -debug' does not cause any crashes anywhere (at least not on SPEC). Review: Ulrich Weigand https://reviews.llvm.org/D53328 llvm-svn: 345349
* Dump public symbol records in pdb2yaml modeZachary Turner2018-10-266-0/+61
| | | | llvm-svn: 345348
* [SystemZ] Pass the DAG pointer from SystemZAddressingMode::dump().Jonas Paulsson2018-10-262-5/+5
| | | | | | | | | | | | | In order to print the IR slot number for the memory operand, the DAG pointer must be passed to SDNode::dump(). The isel-debug.ll test updated to also check for the IR Value reference being printed correctly. Review: Ulrich Weigand https://reviews.llvm.org/D53333 llvm-svn: 345347
* Add functionality to export settingsJonas Devlieghere2018-10-269-21/+290
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | For the reproducer feature I need to be able to export and import the current LLDB configuration. To realize this I've extended the existing functionality to print settings. With the help of a new formatting option, we can now write the settings and their values to a file structured as regular commands. Concretely the functionality works as follows: (lldb) settings export -f /path/to/file This file contains a bunch of settings set commands, followed by the setting's name and value. ... settings set use-external-editor false settings set use-color true settings set auto-one-line-summaries true settings set auto-indent true ... You can import the settings again by either sourcing the file or using the settings read command. (lldb) settings read -f /path/to/file Differential revision: https://reviews.llvm.org/D52651 llvm-svn: 345346
* Reland "[WebAssembly] LSDA info generation"Heejin Ahn2018-10-2520-67/+529
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: This adds support for LSDA (exception table) generation for wasm EH. Wasm EH mostly follows the structure of Itanium-style exception tables, with one exception: a call site table entry in wasm EH corresponds to not a call site but a landing pad. In wasm EH, the VM is responsible for stack unwinding. After an exception occurs and the stack is unwound, the control flow is transferred to wasm 'catch' instruction by the VM, after which the personality function is called from the compiler-generated code. (Refer to WasmEHPrepare pass for more information on this part.) This patch: - Changes wasm.landingpad.index intrinsic to take a token argument, to make this 1:1 match with a catchpad instruction - Stores landingpad index info and catch type info MachineFunction in before instruction selection - Lowers wasm.lsda intrinsic to an MCSymbol pointing to the start of an exception table - Adds WasmException class with overridden methods for table generation - Adds support for LSDA section in Wasm object writer Reviewers: dschuff, sbc100, rnk Subscribers: mgorny, jgravelle-google, sunfish, llvm-commits Differential Revision: https://reviews.llvm.org/D52748 llvm-svn: 345345
* [AArch64] Implement FP16FML intrinsicsBryan Chan2018-10-258-12/+328
| | | | | | | | | | | | | Generate the FP16FML intrinsics into arm_neon.h (AArch64 only for now). Add two new type modifiers to NeonEmitter to handle the new prototypes. Define __ARM_FEATURE_FP16FML when +fp16fml is enabled and guard the intrinsics with the macro in arm_neon.h. Based on a patch by Gao Yiling. Differential Revision: https://reviews.llvm.org/D53633 llvm-svn: 345344
* [WebAssembly] Support EH instructions in InstPrinterHeejin Ahn2018-10-253-9/+160
| | | | | | | | | | | | Summary: This adds support for exception handling instructions to InstPrinter. Reviewers: dschuff, aardappel Subscribers: sbc100, jgravelle-google, sunfish, llvm-commits Differential Revision: https://reviews.llvm.org/D53634 llvm-svn: 345343
* Fix in MachineOperand::printIRValueReference().Jonas Paulsson2018-10-252-1/+21
| | | | | | | | | | | Handle the case where getCurrentFunction() returns nullptr by passing -1 to printIRSlotNumber(). This will result in <badref> being printed instead of an assertion failure. Review: Francis Visoiu Mistrih https://reviews.llvm.org/D53333 llvm-svn: 345342
* [analyzer] Fix a bug in "collapsed" graph viewerGeorge Karpenkov2018-10-252-8/+16
| | | | | | | | | | | | | | | | | | | | | | Nodes which have only one predecessor and only one successor can not always be hidden, even if all states are the same. An additional condition is needed: the predecessor may have only one successor. This can be seen on this example: ``` A / \ B C \ / D ``` Nodes B and C can not be hidden even if all nodes in the graph have the same state. Differential Revision: https://reviews.llvm.org/D53735 llvm-svn: 345341
* [analyzer] [RetainCountChecker] Do not invalidate references passed to ↵George Karpenkov2018-10-253-2/+13
| | | | | | | | constructors and operators Differential Revision: https://reviews.llvm.org/D53660 llvm-svn: 345340
* [analyzer] Remove custom rule for OSIterator in RetainCountCheckerGeorge Karpenkov2018-10-251-8/+0
| | | | | | Differential Revision: https://reviews.llvm.org/D53628 llvm-svn: 345339
* [analyzer] Correct modelling of OSDynamicCast: eagerly state splitGeorge Karpenkov2018-10-254-26/+92
| | | | | | | | | | | | | | | | | | | | | Previously, OSDynamicCast was modeled as an identity. This is not correct: the output of OSDynamicCast may be zero even if the input was not zero (if the class is not of desired type), and thus the modeling led to false positives. Instead, we are doing eager state split: in one branch, the returned value is identical to the input parameter, and in the other branch, the returned value is zero. This patch required a substantial refactoring of canEval infrastructure, as now it can return different function summaries, and not just true/false. rdar://45497400 Differential Revision: https://reviews.llvm.org/D53624 llvm-svn: 345338
* [AArch64] Implement FP16FML intrinsicsBryan Chan2018-10-254-25/+130
| | | | | | | | | | | | Add LLVM intrinsics for the ARMv8.2-A FP16FML vector-form instructions. Add a DAG pattern to define the indexed-form intrinsics in terms of the vector-form ones, similarly to how the Dot Product intrinsics were implemented. Based on a patch by Gao Yiling. Differential Revision: https://reviews.llvm.org/D53632 llvm-svn: 345337
* Delete test case. Assertions can't be tested.Heejin Ahn2018-10-251-11/+0
| | | | llvm-svn: 345336
* Tidy up test caseHeejin Ahn2018-10-251-2/+0
| | | | llvm-svn: 345335
* Address commentsHeejin Ahn2018-10-253-22/+15
| | | | | | | - Add llvm-mc test case (and delete the old one) - Change report_fatal_error to assertions llvm-svn: 345334
* [WebAssembly] Error out when block/loop markers mismatchHeejin Ahn2018-10-252-7/+25
| | | | | | | | | | | | | | | | Summary: Currently InstPrinter ignores if there are mismatches between block/loop and end markers by skipping the case if ControlFlowStack is empty. I guess it is better to explicitly error out in this case, because this signals invalid input. Reviewers: aardappel Subscribers: dschuff, sbc100, jgravelle-google, sunfish, llvm-commits Differential Revision: https://reviews.llvm.org/D53620 llvm-svn: 345333
OpenPOWER on IntegriCloud