- Mar 25, 2020
-
-
Nico Weber authored
-
- Mar 24, 2020
-
-
Jonas Devlieghere authored
Files imported by the script interpreter aren't opened by LLDB so they don't end up in the reproducer. The solution is to explicitly add them to the FileCollector. Differential revision: https://reviews.llvm.org/D76626
-
David Green authored
This adds a simple fold to combine VMOVrh load to a integer load. Similar to what is already performed for BITCAST, but needs to account for the types being of different sizes, creating an zero extending load. Differential Revision: https://reviews.llvm.org/D76485
-
Sanjay Patel authored
-
Lama authored
The current implementation collects all Preds/Succs of a Dep of kind Output, creating a long chain and subsequently a schedule with an unnecessarily large II. Was this done on purpose for a reason I'm missing? Reviewed By: bcahoon Differential Revision: https://reviews.llvm.org/D75424
-
Simon Pilgrim authored
rL368506 handled the basic case, but we need to account for boolean logic patterns as well.
-
Alexander Belyaev authored
Differential Revision: https://reviews.llvm.org/D76703
-
Haojian Wu authored
Summary: After we parse the switch condition, we don't do the type check for type-dependent expr (e.g. TypoExpr) (in Sema::CheckSwitchCondition), then the TypoExpr is corrected to an invalid-type expr (in Sema::MakeFullExpr) and passed to the ActOnStartOfSwitchStmt, which triggers the assertion. Fix https://github.com/clangd/clangd/issues/311 Reviewers: sammccall Subscribers: ilya-biryukov, kadircet, usaxena95, cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D76592
-
Louis Dionne authored
cxx_experimental was never installed because ${experimental_lib} always expands to an empty target. This seems to have been broken by 97d6fcce. -
Yaxun (Sam) Liu authored
The argument after -Xarch_device will be added to the arguments for CUDA/HIP device compilation and will be removed for host compilation. The argument after -Xarch_host will be added to the arguments for CUDA/HIP host compilation and will be removed for device compilation. Differential Revision: https://reviews.llvm.org/D76520
-
Pavel Labath authored
Summary: The directory_count and file_name_count fields are (section 6.2.4 of DWARF5 spec) supposed to be uleb128s, not bytes. This bug meant that it was not possible to correctly parse headers with more than 128 files or directories. I've found this bug by code inspection, though the limit is so small someone would have run into it for real sooner or later. I've verified that the producer side handles many files correctly, and that we are able to parse such files after this fix. Reviewers: dblaikie, jhenderson Subscribers: aprantl, hiraditya, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D76498
-
Juneyoung Lee authored
Summary: - Add FREEZE node to SelDag - Lower FreezeInst (in IR) to FREEZE node - Add Legalization for FREEZE node Reviewers: qcolombet, bogner, efriedma, lebedev.ri, nlopes, craig.topper, arsenm Reviewed By: lebedev.ri Subscribers: wdng, xbolva00, Petar.Avramovic, liuz, lkail, dylanmckay, hiraditya, Jim, arsenm, craig.topper, RKSimon, spatel, lebedev.ri, regehr, trentxintong, nlopes, mkuper, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D29014
-
Sanjay Patel authored
These should really be moved over to a ConstantFolding test file, but since this may overlap with the in-progress D76010 and similar tests already exist here, we can do that as a later cleanup.
-
Sylvain Audi authored
Added support for /map and /map:[filepath]. The output was derived from Microsoft's Link.exe output when using that same option. Note that /MAPINFO support was not added. The previous implementation of MapFile.cpp/.h was meant for /lldmap, and was renamed to LLDMapFile.cpp/.h MapFile.cpp/.h is now for /MAP However, a small fix was added to lldmap, replacing a std::sort with std::stable_sort to enforce reproducibility. Differential Revision: https://reviews.llvm.org/D70557
-
Jaroslav Sevcik authored
Summary: Detection of C strings does not work well for pointers. If the value object holding a (char*) pointer does not have an address (e.g., if it is a temp), the value is not considered a C string and its formatting is left to DumpDataExtractor rather than the special handling in ValueObject::DumpPrintableRepresentation. This leads to inconsistent outputs, e.g., in escaping non-ASCII characters. See the test for an example; the second test expectation is not met (without this patch). With this patch, the C string detection only insists that the pointer value is valid. The patch makes the code consistent with how the pointer is obtained in ValueObject::ReadPointedString. Reviewers: teemperor Reviewed By: teemperor Subscribers: lldb-commits Tags: #lldb Differential Revision: https://reviews.llvm.org/D76650
-
Simon Pilgrim authored
rL368506 handled the basic case, but we need to account for boolean logic patterns as well.
-
Hanhan Wang authored
Differential Revision: https://reviews.llvm.org/D76661
-
Florian Hahn authored
The initial implementation just delegates to APInt's implementation of XOR for single element ranges and conservatively returns the full set otherwise. Reviewers: nikic, spatel, lebedev.ri Reviewed By: nikic Differential Revision: https://reviews.llvm.org/D76453
-
Sam McCall authored
-
Sam McCall authored
Summary: This clears the way for adding an Error dependence bit to Type and having it mostly-automatically propagated. Reviewers: hokein Subscribers: jfb, cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D76424
-
Benjamin Kramer authored
-
Simon Pilgrim authored
-
Russell Gallop authored
-
Simon Tatham authored
Summary: The next release of LLVM will support the full ACLE spec for MVE intrinsics, so it's worth saying so in the release notes. Reviewers: kristof.beyls Reviewed By: kristof.beyls Subscribers: cfe-commits, hans, dmgreen, llvm-commits Tags: #llvm, #clang Differential Revision: https://reviews.llvm.org/D76513
-
Lorenz Junglas authored
`parseDocumentation` retains hard line breaks and removes soft line breaks inside documentation comments. Wether a line break is hard or soft is determined by the following rules (some of which have been discussed in https://github.com/clangd/clangd/issues/95): Line breaks that are preceded by a punctuation are retained Line breaks that are followed by "interesting characters" (e.g. Markdown syntax, doxygen commands) are retained All other line breaks are removed Related issue: https://github.com/clangd/clangd/issues/95 Differential Revision: https://reviews.llvm.org/D76094
-
Raphael Isemann authored
This was triggering -Winconsistent-missing-override warnings.
-
Sam Parker authored
-
Simon Pilgrim authored
[UpdateTestChecks] Use common ir function name matcher and extend to accept periods in names (PR37586) Remove the local versions of the IR_FUNCTION_RE matcher (they weren't doing anything different), and ensure all the function name matchers accept '.' and '-'. We don't need to use '\.' inside python regex sets either, or '\-' as long as thats at the end of the set.
-
Dmitry Vyukov authored
realeaseAcquire() is a new function added to TSan in support of the Go data-race detector. It's semantics is: void ThreadClock::releaseAcquire(SyncClock *sc) const { for (int i = 0; i < kMaxThreads; i++) { tmp = clock[i]; clock[i] = max(clock[i], sc->clock[i]); sc->clock[i] = tmp; } } For context see: https://go-review.googlesource.com/c/go/+/220419 Reviewed-in: https://reviews.llvm.org/D76322 Author: dfava (Daniel Fava) -
Momchil Velikov authored
This patch adds CMSE attributes `cmse_nonsecure_call` and `cmse_nonsecure_entry`. As usual, specification is available here: https://developer.arm.com/docs/ecm0359818/latest Patch by Javed Absar, Bradley Smith, David Green, Momchil Velikov, possibly others. Differential Revision: https://reviews.llvm.org/D71129
-
David Green authored
We deliberately split stores of the form store(truncate(larger-than-legal-type)) into two stores, allowing each store to perform part of the truncate for free. There are times however where it makes more sense to use VMOVN to de-interlace the results back into a single vector, and store that in one go. This adds a check for that situation, not splitting the store if it looks like a VMOVN can be more useful. Differential Revision: https://reviews.llvm.org/D76511
-
Sam Parker authored
Modify ValidateLiveOuts to track 'FalseLaneZeros' more precisely, including checks on specific operations that can generate non-zeros from zero values, e.g VMVN. We can then check that any instructions that retain some information in their output register (all narrowing instructions) that they only use and def registers that always have zeros in their falsely predicated bytes, whether or not tail predication happens. Most of the logic remains the same, just the names of the data structures and helpers have been renamed to reflect the change in logic. The key change, apart from the opcode checkers, is that the FalseZeros set now strictly contains only instructions which will always generate zeros, and not instructions that could also have their false bytes masked away later. Differential Revision: https://reviews.llvm.org/D76235
-
Sam Parker authored
Add a flag, 'RetainsPreviousHalfElement', for operations that operate on top/bottom halves of their input and only write to half of their destination, leaving the other half to retain its previous value. Differential Revision: https://reviews.llvm.org/D76608
-
Haojian Wu authored
Normally clang avoids creating expressions when it encounters semantic errors, even if the parser knows which expression to produce. This works well for the compiler. However, this is not ideal for source-level tools that have to deal with broken code, e.g. clangd is not able to provide navigation features even for names that compiler knows how to resolve. The new RecoveryExpr aims to capture the minimal set of information useful for the tools that need to deal with incorrect code: source range of the expression being dropped, subexpressions of the expression. We aim to make constructing RecoveryExprs as simple as possible to ensure writing code to avoid dropping expressions is easy. Producing RecoveryExprs can result in new code paths being taken in the frontend. In particular, clang can produce some new diagnostics now and we aim to suppress bogus ones based on Expr::containsErrors. We deliberately produce RecoveryExprs only in the parser for now to minimize the code affected by this patch. Producing RecoveryExprs in Sema potentially allows to preserve more information (e.g. type of an expression), but also results in more code being affected. E.g. SFINAE checks will have to take presence of RecoveryExprs into account. Initial implementation only works in C++ mode, as it relies on compiler postponing diagnostics on dependent expressions. C and ObjC often do not do this, so they require more work to make sure we do not produce too many bogus diagnostics on the new expressions. See documentation of RecoveryExpr for more details. original patch from Ilya This change is based on https://reviews.llvm.org/D61722 Reviewers: sammccall, rsmith Reviewed By: sammccall, rsmith Tags: #clang Differential Revision: https://reviews.llvm.org/D69330
-
Walter Erquinigo authored
-
Chen Zheng authored
Implement target hook isProfitableToHoist - typo fix.
-
Douglas Yung authored
-
Jun Ma authored
coroutine frame Currently we move all allocas into the frame when build coroutine frame in CoroSplit pass. However, this can be relaxed. Since CoroSplit pass run after Inline pass, we can use lifetime intrinsic to do such analysis: If the scope of lifetime intrinsic is not across any suspend point, rather than move the allocas to frame, we can just move them to entry bb of corresponding function. This reduce the frame size. More importantly, this also avoid data race in multithread environment. Consider one inline function by coroutine: it starts a thread which access local variables, while after inline the movement of allocs to frame also access them. cause data race. Differential Revision: https://reviews.llvm.org/D75664
-
Jun Ma authored
Differential Revision: https://reviews.llvm.org/D76119
-
Vedant Kumar authored
PR35760 shows an example program which, when compiled with `clang -O0` or gcc at any optimization level, prints '0'. However, llvm transforms the program in a way that causes it to print '1'. Fix the issue by having `AllUsesOfValueWillTrapIfNull` return false when analyzing a load from a global which is used by an `icmp`. This special case was untested [0] so this is just deleting dead code. An alternative fix might be to change the GlobalStatus analysis for the global to report "Stored" instead of "StoredOnce". However, "StoredOnce" is appropriate when only one value other than the initializer is stored to the global. [0] http://lab.llvm.org:8080/coverage/coverage-reports/coverage/Users/buildslave/jenkins/workspace/coverage/llvm-project/llvm/lib/Transforms/IPO/GlobalOpt.cpp.html#L662 Differential Revision: https://reviews.llvm.org/D76645
-