summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
* [clang-scan-deps] Add minimizer support for C++20 modules.Michael J. Spencer2019-08-093-3/+124
| | | | | | This only adds support to the minimizer, it doesn't actually capture the dependencies yet. llvm-svn: 368381
* [ELF] Expand regions for gaps due to explicit addressFangrui Song2019-08-092-0/+26
| | | | | | | | | | If the dot gets moved by an explicit section address, an empty gap between sections could be created. The encompassing region for the section being parsed needs to be expanded to include the gap. Differential Revision: https://reviews.llvm.org/D65722 Patch by Gabriel Smith! llvm-svn: 368379
* DebugInfo: Explicitly handle errors when parsing unit DIEsDavid Blaikie2019-08-092-4/+6
| | | | | | | | This ensures these errors produce a non-zero exit and improves the context (providing the name of the input object and section being parsed). llvm-svn: 368378
* DebugInfo/DWARF: Provide some (pretty half-hearted) error handling access ↵David Blaikie2019-08-093-24/+35
| | | | | | | | | | | | | | | | | | | | | | when parsing units This isn't the most robust error handling API, but does allow clients to opt-in to getting Errors they can handle. I suspect the long-term solution would be to move away from the lazy unit parsing and have an explicit step that parses the unit and then allows access to the other APIs that require a parsed unit. llvm-dwarfdump could be expanded to use this (or newer/better API) to demonstrate the benefit of it - but for now lld will use this in a follow-up cl which ensures lld can exit non-zero on errors like this (& provide more descriptive diagnostics including which object file the error came from). (error access to later errors when parsing nested DIEs would be good too - but, again, exposing that without it being a hassle for every consumer may be tricky) llvm-svn: 368377
* ELF: Move sections referred to by __start_/__stop_ symbols into the main ↵Peter Collingbourne2019-08-092-0/+55
| | | | | | | | | | | | | | | | | | | | | partition. In the case where C identifier sections have SHF_LINK_ORDER they will most likely be placed in the same partition as the section that they are associated with. But unless this happens to be the main partition, this will cause them to be excluded from the range covered by the __start_ and __stop_ symbols, which may lead to incorrect program behaviour. So we need to move them all into the main partition so that they will be covered by the __start_ and __stop_ symbols. We may want to refine this approach later and allow different __start_/__stop_ symbol values for different partitions. This would only make sense for relocations from SHT_NOTE sections since they are duplicated into each partition. Differential Revision: https://reviews.llvm.org/D65909 llvm-svn: 368375
* [asan_symbolize] Fix bug where the frame counter was not incremented.Dan Liew2019-08-093-4/+88
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: This bug occurred when a plug-in requested that a binary not be symbolized while the script is trying to symbolize a stack frame. In this case `self.frame_no` would not be incremented. This would cause subsequent stack frames that are symbolized to be incorrectly numbered. To fix this `get_symbolized_lines()` has been modified to take an argument that indicates whether the stack frame counter should incremented. In `process_line_posix()` `get_symbolized_lines(None, ...)` is now used in in the case where we don't want to symbolize a line so that we can keep the frame counter increment in a single function. A test case is included. The test uses a dummy plugin that always asks `asan_symbolize.py` script to not symbolize the first binary that the script asks about. Prior to the patch this would cause the output to script to look something like ``` #0 0x0 #0 0x0 in do_access #1 0x0 in main ``` rdar://problem/49476995 Reviewers: kubamracek, yln, samsonov, dvyukov, vitalybuka Subscribers: #sanitizers, llvm-commits Tags: #llvm, #sanitizers Differential Revision: https://reviews.llvm.org/D65495 llvm-svn: 368373
* [lld][WebAssembly] Don't create optional symbols when outputing an object fileSam Clegg2019-08-081-25/+27
| | | | | | | | Summary: This was a bug in rL368310. I'm working on a test case now. Differential Revision: https://reviews.llvm.org/D65985 llvm-svn: 368369
* Change the return type of UpgradeARCRuntimeCalls to voidAkira Hatanaka2019-08-082-10/+6
| | | | | | Nothing is using the function return. llvm-svn: 368367
* Remove else-after-returnDavid Blaikie2019-08-081-3/+3
| | | | llvm-svn: 368364
* Fix -DBUILD_SHARED_LIBS=ON build after rL368358Sam Clegg2019-08-081-0/+1
| | | | | | Differential Revision: https://reviews.llvm.org/D65982 llvm-svn: 368363
* Fix llvm.aarch64.irg properties.Evgeniy Stepanov2019-08-082-2/+75
| | | | | | | | | | | | | | | | Summary: IRG does not access any memory. Replace IntrInaccessibleMemOnly with IntrNoMem | IntrHasSideEffects. Reviewers: chill Subscribers: javed.absar, kristof.beyls, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D64447 llvm-svn: 368362
* [WebAssembly][lld] control __data_end export with config->sharedGuanzhong Chen2019-08-081-1/+3
| | | | | | | | | | | | | | | | | | | | | Summary: Emscripten expects `__data_end` to show up in PIC code as long as it's not linked with `--shared`. Currently, Emscripten breaks with latest LLVM because `__data_end` is controlled by `config->isPic` instead of `config->shared`.` Reviewers: tlively, sbc100 Reviewed By: sbc100 Subscribers: dschuff, jgravelle-google, aheejin, sunfish, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D65980 llvm-svn: 368361
* [InstCombine][NFC] Added comments about constants in tests for pow->exp2 foldDavid Bolvansky2019-08-082-0/+2
| | | | llvm-svn: 368360
* [lldb][NFC] Modernize IRForTarget::CreateResultVariableRaphael Isemann2019-08-081-21/+20
| | | | llvm-svn: 368359
* Added Delta IR Reduction ToolDiego Trevino Ferrer2019-08-0815-0/+806
| | | | | | | | | | | | | | | | Summary: Tool parses input IR file, and runs the delta debugging algorithm to reduce the functions inside the input file. Reviewers: alexshap, chandlerc Subscribers: mgorny, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D63672 > llvm-svn: 368071 llvm-svn: 368358
* Linker: Add support for GlobalIFunc.Peter Collingbourne2019-08-088-76/+111
| | | | | | | | | | GlobalAlias and GlobalIFunc ought to be treated the same by the IR linker, so we can generalize the code to be in terms of their common base class GlobalIndirectSymbol. Differential Revision: https://reviews.llvm.org/D55046 llvm-svn: 368357
* Mark clang-scan-deps test as requiring thread supportReid Kleckner2019-08-081-0/+1
| | | | | | | Otherwise the test calls a pure virtual method and crashes. Perhaps this could be improved. llvm-svn: 368354
* [lldb][NFC] Move to StringRef in some places in IRForTargetRaphael Isemann2019-08-081-37/+32
| | | | llvm-svn: 368353
* [lldb] Fix HAVE_LIBCOMPRESSIONHaibo Huang2019-08-082-4/+2
| | | | | | | | | | | | | | | | Summary: This test doesn't make sense. Change to be consistent with what we did in GDBRemoteCommunication.cpp. Reviewers: labath Subscribers: lldb-commits Tags: #lldb Differential Revision: https://reviews.llvm.org/D65965 llvm-svn: 368352
* hwasan: Add a code model check for tagged globals.Peter Collingbourne2019-08-081-4/+34
| | | | | | | | | | See D65364 for the code model requirements for tagged globals. Because of the relocations used these requirements cannot be checked at link time so they must be checked at runtime. Differential Revision: https://reviews.llvm.org/D65968 llvm-svn: 368351
* [LICM] Support unary FNeg in LICMCameron McInally2019-08-082-3/+3
| | | | | | Differential Revision: https://reviews.llvm.org/D65908 llvm-svn: 368350
* [X86] Improve codegen of v8i64->v8i16 and v16i32->v16i8 truncate with ↵Craig Topper2019-08-082-9/+28
| | | | | | | | | | | | avx512vl, avx512bw, min-legal-vector-width<=256 and prefer-vector-width=256 Under this configuration we'll want to split the v8i64 or v16i32 into two vectors. The default legalization will try to truncate each of those 256-bit pieces one step to 128-bit, concatenate those, then truncate one more time from the new 256 to 128 bits. With this patch we now truncate the two splits to 64-bits then concatenate those. We have to do this two different ways depending on whether have widening legalization enabled. Without widening legalization we have to manually construct X86ISD::VTRUNC to prevent the ISD::TRUNCATE with a narrow result being promoted to 128 bits with a larger element type than what we want followed by something like a pshufb to grab the lower half of each element to finish the job. With widening legalization we just get the right thing. When we switch to widening by default we can just delete the other code path. Differential Revision: https://reviews.llvm.org/D65626 llvm-svn: 368349
* Fix up fd limit diagnosis codeReid Kleckner2019-08-081-2/+3
| | | | | | | | | | | Apparently Windows returns the "invalid argument" error code when the path contains invalid characters such as '<'. The test/Preprocessor/include-likely-typo.c test does this, so it was failing after r368322. Also, the diagnostic requires two arguments, so add the filename. llvm-svn: 368348
* [lldb][NFC] Directly use StringRef instead of temporary std::stringRaphael Isemann2019-08-081-13/+12
| | | | llvm-svn: 368346
* SymbolFileDWARF: Unconditionally scan through clang modules. NFCishAdrian Prantl2019-08-081-3/+7
| | | | | | | | | | | | | When looking up a type by name, also scan through any referenced Clang modules regardsless of whether a type with this name has been found. This is NFCish (= a potential performance regression) for Clang projects, but necessary in mixed Swift and Objective-C projects (and tested in swift-lldb). This only affects projects compiled with -gmodules that were not run through dsymutil. llvm-svn: 368345
* [SelectionDAG][X86] Move setcc mask splitting for ↵Craig Topper2019-08-085-326/+78
| | | | | | | | | | mload/mstore/mgather/mscatter from DAGCombiner to the type legalizer. We may be able to look to how VSELECT is handled to further improve this, but this appears to be neutral or an improvement on the test cases we have. llvm-svn: 368344
* [LegalizeTypes] Remove SplitVSETCC helper and just call SplitVecRes_SETCC.Craig Topper2019-08-081-18/+1
| | | | llvm-svn: 368343
* [Attributor][NFC] Include only what is neededJohannes Doerfert2019-08-081-1/+1
| | | | llvm-svn: 368341
* Fix a comment which was incorrect.Jim Ingham2019-08-081-1/+1
| | | | llvm-svn: 368340
* [MBP] Disable aggressive loop rotate in plain modeGuozhi Wei2019-08-0859-3537/+3255
| | | | | | | | | | Patch https://reviews.llvm.org/D43256 introduced more aggressive loop layout optimization which depends on profile information. If profile information is not available, the statically estimated profile information(generated by BranchProbabilityInfo.cpp) is used. If user program doesn't behave as BranchProbabilityInfo.cpp expected, the layout may be worse. To be conservative this patch restores the original layout algorithm in plain mode. But user can still try the aggressive layout optimization with -force-precise-rotation-cost=true. Differential Revision: https://reviews.llvm.org/D65673 llvm-svn: 368339
* [analyzer] Fix scan-build's plist output in plist-html mode.Artem Dergachev2019-08-081-1/+1
| | | | | | | r366941 accidentally made it delete all plist files as soon as they're produced. llvm-svn: 368338
* [clang] add REQUIRES: linux to driver test caseBrian Cain2019-08-081-0/+1
| | | | | | | The test case explicitly leverages linux, so should include it as a test requirement. llvm-svn: 368334
* gn build: Merge r368331.Peter Collingbourne2019-08-081-1/+1
| | | | llvm-svn: 368333
* [clang] add REQUIRES to driver test caseBrian Cain2019-08-081-0/+3
| | | | | | | The test case explicitly leverages x86, so should include it as a test requirement. llvm-svn: 368332
* [compiler-rt] Add ConsumeProbability and ConsumeFloatingPoint methods to FDP.Max Moroz2019-08-086-10/+116
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: Also slightly cleaned up the comments and changed the header's extension back to `.h` as per comments on https://reviews.llvm.org/D65812. New methods added: * `ConsumeProbability` returns [0.0, 1.0] by consuming an unsigned integer value from the input data and dividing that value by the integer's max value. * `ConsumeFloatingPointInRange` returns a floating point value in the given range. Relies on `ConsumeProbability` method. This method does not have the limitation of `std::uniform_real_distribution` that requires the given range to be <= the floating point type's max. If the range is too large, this implementation will additionally call `ConsumeBool` to decide whether the result will be in the first or the second half of the range. * `ConsumeFloatingPoint` returns a floating point value in the range `[std::numeric_limits<T>::lowest(), std::numeric_limits<T>::min()]`. Tested on Linux, Mac, Windows. Reviewers: morehouse Reviewed By: morehouse Subscribers: kubamracek, mgorny, dberris, delcypher, #sanitizers, llvm-commits Tags: #llvm, #sanitizers Differential Revision: https://reviews.llvm.org/D65905 llvm-svn: 368331
* Remove unused and undocumented data_offset parameter (NFC)Adrian Prantl2019-08-0811-21/+19
| | | | | | | | | Value::GetValueAsData() takes an undocumented parameter called data_offset that is always 0. Differential Revision: https://reviews.llvm.org/D65910 llvm-svn: 368330
* lit: Bump version to 0.10.0Tom Stellard2019-08-081-1/+1
| | | | | | | | | | | | Reviewers: hans Subscribers: hans, delcypher, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D65763 llvm-svn: 368329
* [clang] Add no-warn support for WaBrian Cain2019-08-087-0/+26
| | | | llvm-svn: 368328
* [llvm-mc] Add reportWarning() to MCContextBrian Cain2019-08-087-16/+53
| | | | | | | Adding reportWarning() to MCContext, so that it can be used from the Hexagon assembler backend. llvm-svn: 368327
* [clang][NFC] Move matcher ignoringElidableConstructorCall's tests to ↵Yitzhak Mandelbaum2019-08-082-85/+85
| | | | | | | | | | | | | | | | | | | appropriate file. Summary: `ignoringElidableConstructorCall` is a traversal matcher, but its tests are grouped with narrowing-matcher tests. This revision moves them to the correct file. Reviewers: gribozavr Subscribers: cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D65963 llvm-svn: 368326
* [lld][WebAssembly] Use createGlobalVariable helper function. NFC.Sam Clegg2019-08-081-12/+2
| | | | | | Differential Revision: https://reviews.llvm.org/D65911 llvm-svn: 368325
* [X86] Make CMPXCHG16B feature imply CMPXCHG8B feature.Craig Topper2019-08-082-1/+3
| | | | | | | | | | This fixes znver1 so that it properly enables CMPXHG8B. We can probably remove explicit CMPXCHG8B from CPUs that also have CMPXCHG16B, but keeping this simple to allow cherry pick to 9.0. Fixes PR42935. llvm-svn: 368324
* Recommit Devirtualize destructor of final class.Hiroshi Yamauchi2019-08-082-3/+50
| | | | | | | Original patch commited as r364100, reverted as r364359, recommitted as r365509, reverted as r365850. llvm-svn: 368323
* clang: Diag running out of file handles while looking for filesNico Weber2019-08-081-2/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | clang would only print "file not found" when it's unable to find a header file. If the reason for that is a file handle leak, that's not a very useful error message. For errors that aren't in a small whitelist ("file not found", "file is directory"), print an error with the strerror() output. This changes behavior in corner cases: If clang was out of file handles while looking in one -I dir but then suddenly wasn't when looking in the next -I dir, and both directories contained a file with the desired name, previously we'd silently return the file from the second directory. For this reason, it's important to ignore "is a directory" for this new diag: if a file foo/foo exists and -I -Ifoo are passed, an include of "foo" should successfully open file "foo" in directory "foo/" instead of complaining that "./foo" is a directory. No test since we mostly hit this when there's a handle leak somewhere, and currently there isn't one. I manually tested this with the repro steps in comment 2 on the bug below. Fixes PR42524. Differential Revision: https://reviews.llvm.org/D65956 llvm-svn: 368322
* [globalisel][legalizer] Attempt to write down the minimal legalization rulesDaniel Sanders2019-08-081-0/+95
| | | | | | | | | | | | | | | | | | | Summary: There aren't very many requirements on the legalization rules but we should document them. Reviewers: aditya_nandakumar, volkan, bogner, paquette, aemerson, rovka, arsenm, Petar.Avramovic Subscribers: wdng, kristof.beyls, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D62423 # Conflicts: # llvm/docs/GlobalISel.rst llvm-svn: 368321
* [AArch64] Do not emit '#' before immediates in inline asmPirama Arumuga Nainar2019-08-082-20/+28
| | | | | | | | | | | | | | | | | | | | | | | | Summary: The A64 assembly language does not require the '#' character to introduce constant immediate operands. Avoid the '#' since the AArch64 asm parser does not accept '#' before the lane specifier and rejects the following: __asm__ ("fmla v2.4s, v0.4s, v1.s[%0]" :: "I"(0x1)) Fix a test to not expect the '#' and add a new test case with the above asm. Fixes: https://github.com/android-ndk/ndk/issues/1036 Reviewers: peter.smith, kristof.beyls Subscribers: javed.absar, hiraditya, llvm-commits, srhines Tags: #llvm Differential Revision: https://reviews.llvm.org/D65550 llvm-svn: 368320
* [clang] Update `ignoringElidableConstructorCall` matcher to ignore ↵Yitzhak Mandelbaum2019-08-083-23/+47
| | | | | | | | | | | | | | | | | | | `ExprWithCleanups`. Summary: The `ExprWithCleanups` node is added to the AST along with the elidable CXXConstructExpr. If it is the outermost node of the node being matched, ignore it as well. Reviewers: gribozavr Subscribers: cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D65944 llvm-svn: 368319
* Re-commit "[PowerPC][NFC][MachinePipeliner] Add some regression testcases""Jinsong Ji2019-08-084-0/+281
| | | | | | Remove sms-cpy1.ll first while I investigate the problem. llvm-svn: 368318
* [libc++] Fix environment variable passing in libc++'s `SSHExecutor` `lit` ↵Louis Dionne2019-08-081-1/+1
| | | | | | | | | | | | | | | | | | | | utility Summary: Quote the value of environment variables when passing them to the SSH client in SSHExecutor in libc++'s lit utilities. Without the quotes, an environment variable like FOO="buzz bar" gets passed incorrectly like this, ssh env FOO=buzz bar, which causes bar to be treated as a command to run, not part of the environment variable value. We ran into this when using SSHExecutor to do bringup of our CUDA libcu++ port on an embedded aarch64 system. Patch by Bryce Adelstein Lelbach. Differential Revision: https://reviews.llvm.org/D65960 llvm-svn: 368317
* lit: Use a License classifier that pypi will acceptTom Stellard2019-08-081-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | Summary: 'OSI Approved :: Apache-2.0 with LLVM exception' is not a valid classifier. 'OSI Approved :: Apache Software License' is the closest fit for the new license, so we've decided to use this one. The classifiers seem to only be used for searching on the pypi website, so this does not actually change the license of the code. We still pass 'Apache-2.0 with LLVM exception' as the license to setup(), and this appears alongside the classifier on the pypi webpage for lit. Reviewers: chandlerc, ddunbar, joerg Reviewed By: joerg Subscribers: delcypher, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D65762 llvm-svn: 368315
OpenPOWER on IntegriCloud