- Feb 22, 2021
-
-
Florian Hahn authored
Update unit tests that did not expect VPWidenPHIRecipes after 15a74b64.
-
Simon Pilgrim authored
-
Andrzej Warzynski authored
This patch adds support for `-Xflang` in `flang-new`. The semantics are identical to `-Xclang`. With the addition of `-Xflang`, we can modify `-test-io` to be a compiler-frontend only flag. This makes more sense, this flag is: * very frontend specific * to be used for development and testing only * not to be exposed to the end user Originally we added it to the compiler driver, `flang-new`, in order to facilitate testing. With `-Xflang` this is no longer needed. Tests are updated accordingly. Differential Revision: https://reviews.llvm.org/D96864
-
David Green authored
Remove the unnecessary code from 21a4faab, left over from a different way of lowering.
-
Balazs Benics authored
Removes `CrossTranslationUnitContext::getImportedFromSourceLocation` Removes the corresponding unit-test segment. Introduces the `CrossTranslationUnitContext::getMacroExpansionContextForSourceLocation` which will return the macro expansion context for an imported TU. Also adds a few implementation FIXME notes where applicable, since this feature is not implemented yet. This fact is also noted as Doxygen comments. Uplifts a few CTU LIT test to match the current **incomplete** behavior. It is a regression to some extent since now we don't expand any macros in imported TUs. At least we don't crash anymore. Note that the introduced function is already covered by LIT tests. Eg.: Analysis/plist-macros-with-expansion-ctu.c Reviewed By: balazske, Szelethus Differential Revision: https://reviews.llvm.org/D94673
-
Balazs Benics authored
Removes the obsolete ad-hoc macro expansions during bugreport constructions. It will skip the macro expansion if the expansion happened in an imported TU. Also removes the expected plist file, while expanding matching context for the tests. Adds a previously crashing `plist-macros-with-expansion.c` testfile. Temporarily marks `plist-macros-with-expansion-ctu.c ` to `XFAIL`. Reviewed By: xazax.hun, Szelethus Differential Revision: https://reviews.llvm.org/D93224
-
Balazs Benics authored
Adds a `MacroExpansionContext` member to the `AnalysisConsumer` class. Tracks macro expansions only if the `ShouldDisplayMacroExpansions` is set. Passes a reference down the pipeline letting AnalysisConsumers query macro expansions during bugreport construction. Reviewed By: martong, Szelethus Differential Revision: https://reviews.llvm.org/D93223
-
Balazs Benics authored
Introduce `MacroExpansionContext` to track what and how macros in a translation unit expand. This is the first element of the patch-stack in this direction. The main goal is to substitute the current macro expansion generator in the `PlistsDiagnostics`, but all the other `DiagnosticsConsumer` could benefit from this. `getExpandedText` and `getOriginalText` are the primary functions of this class. The former can provide you the text that was the result of the macro expansion chain starting from a `SourceLocation`. While the latter will tell you **what text** was in the original source code replaced by the macro expansion chain from that location. Here is an example: void bar(); #define retArg(x) x #define retArgUnclosed retArg(bar() #define BB CC #define applyInt BB(int) #define CC(x) retArgUnclosed void unbalancedMacros() { applyInt ); //^~~~~~~~~~^ is the substituted range // Original text is "applyInt )" // Expanded text is "bar()" } #define expandArgUnclosedCommaExpr(x) (x, bar(), 1 #define f expandArgUnclosedCommaExpr void unbalancedMacros2() { int x = f(f(1)) )); // Look at the parenthesis! // ^~~~~~^ is the substituted range // Original text is "f(f(1))" // Expanded text is "((1,bar(),1,bar(),1" } Might worth investigating how to provide a reusable component, which could be used for example by a standalone tool eg. expanding all macros to their definitions. I borrowed the main idea from the `PrintPreprocessedOutput.cpp` Frontend component, providing a `PPCallbacks` instance hooking the preprocessor events. I'm using that for calculating the source range where tokens will be expanded to. I'm also using the `Preprocessor`'s `OnToken` callback, via the `Preprocessor::setTokenWatcher` to reconstruct the expanded text. Unfortunately, I concatenate the token's string representation without any whitespaces except if the token is an identifier when I emit an extra space to produce valid code for `int var` token sequences. This could be improved later if needed. Patch-stack: 1) D93222 (this one) Introduces the MacroExpansionContext class and unittests 2) D93223 Create MacroExpansionContext member in AnalysisConsumer and pass down to the diagnostics consumers 3) D93224 Use the MacroExpansionContext for macro expansions in plists It replaces the 'old' macro expansion mechanism. 4) D94673 API for CTU macro expansions You should be able to get a `MacroExpansionContext` for each imported TU. Right now it will just return `llvm::None` as this is not implemented yet. 5) FIXME: Implement macro expansion tracking for imported TUs as well. It would also relieve us from bugs like: - [fixed] D86135 - [confirmed] The `__VA_ARGS__` and other macro nitty-gritty, such as how to stringify macro parameters, where to put or swallow commas, etc. are not handled correctly. - [confirmed] Unbalanced parenthesis are not well handled - resulting in incorrect expansions or even crashes. - [confirmed][crashing] https://bugs.llvm.org/show_bug.cgi?id=48358 Reviewed By: martong, Szelethus Differential Revision: https://reviews.llvm.org/D93222
-
Florian Hahn authored
This patch extends VPWidenPHIRecipe to manage pairs of incoming (VPValue, VPBasicBlock) in the VPlan native path. This is made possible because we now directly manage defined VPValues for recipes. By keeping both the incoming value and block in the recipe directly, code-generation in the VPlan native path becomes independent of the predecessor ordering when fixing up non-induction phis, which currently can cause crashes in the VPlan native path. This fixes PR45958. Reviewed By: sguggill Differential Revision: https://reviews.llvm.org/D96773
-
David Green authored
This removes the existing patterns for inserting two lanes into an f16/i16 vector register using VINS, instead using a DAG combine to pattern match the same code sequences. The tablegen patterns were already on the large side (foreach LANE = [0, 2, 4, 6]) and were not handling all the cases they could. Moving that to a DAG combine, whilst not less code, allows us to better control and expand the selection of VINSs. Additionally this allows us to remove the AddedComplexity on VCVTT. The extra trick that this has learned in the process is to move two adjacent lanes using a single f32 vmov, allowing some extra inefficiencies to be removed. Differenial Revision: https://reviews.llvm.org/D96876
-
Andy Wingo authored
If the reference-types feature is enabled, call_indirect will explicitly reference its corresponding function table via `TABLE_NUMBER` relocations against a table symbol. Also, as before, address-taken functions can also cause the function table to be created, only with reference-types they additionally cause a symbol table entry to be emitted. We abuse the used-in-reloc flag on symbols to indicate which tables should end up in the symbol table. We do this because unfortunately older wasm-ld will carp if it see a table symbol. Differential Revision: https://reviews.llvm.org/D90948
-
Kadir Cetinkaya authored
Differential Revision: https://reviews.llvm.org/D96950
-
Jan Svoboda authored
This patch moves the creation of the '-Wspir-compat' argument from cc1 to the driver. Without this change, generating command line arguments from `CompilerInvocation` cannot be done reliably: there's no way to distinguish whether '-Wspir-compat' was passed to cc1 on the command line (should be generated), or if it was created within `CompilerInvocation::CreateFromArgs` (should not be generated). This is also in line with how other '-W' flags are handled. (This was introduced in D21567.) Reviewed By: Anastasia Differential Revision: https://reviews.llvm.org/D97041
-
Jan Svoboda authored
This patch stops creating the '-Wno-stdlibcxx-not-found' argument in `CompilerInvocation::CreateFromArgs`. The code was added in 2e7ab55e (a follow-up to D48297). However, D61963 removes relevant tests and starts explicitly passing '-Wno-stdlibcxx-not-found' to the driver. I think it's fair to assume this is a dead code. Reviewed By: dexonsmith Differential Revision: https://reviews.llvm.org/D97042
-
Tres Popp authored
Differential Revision: https://reviews.llvm.org/D96951
-
Djordje Todorovic authored
Small optimization of the code -- No need to calculate any stats for NULL nodes, and also no need to call the collectStatsForDie() if it is the CU itself. Differential Revision: https://reviews.llvm.org/D96871
-
Petr Hosek authored
After D97110 __llvm_prof_cnts has the nobits type so it's empty.
-
Kern Handa authored
Reviewed By: mehdi_amini Differential Revision: https://reviews.llvm.org/D97140
-
Amara Emerson authored
We can only select this type if the source is on GPR, not FPR.
-
Kazu Hirata authored
-
Kazu Hirata authored
Identified with llvm-header-guard.
-
Kazu Hirata authored
-
Nico Weber authored
This reverts commit ac6c13bf. Breaks building with PGO, see https://reviews.llvm.org/D96762#2574009
-
Jacques Pienaar authored
Simple jupyter kernel using mlir-opt and reproducer to run passes. Useful for local experimentation & generating examples. The export to markdown from here is not immediately useful nor did I define a CodeMirror synax to make the HTML output prettier. It only supports one level of history (e.g., `_`) as I was mostly using with expanding a pipeline one pass at a time and so was all I needed. I placed this in utils directory next to editor & debugger utils. Differential Revision: https://reviews.llvm.org/D95742
-
Petr Hosek authored
__start_/__stop_ references retain C identifier name sections such as __llvm_prf_*. Putting these into a section group disables this logic. The ELF section group semantics ensures that group members are retained or discarded as a unit. When a function symbol is discarded, this allows allows linker to discard counters, data and values associated with that function symbol as well. Note that `noduplicates` COMDAT is lowered to zero-flag section group in ELF. We only set this for functions that aren't already in a COMDAT and for those that don't have available_externally linkage since we already use regular COMDAT groups for those. Differential Revision: https://reviews.llvm.org/D96757
-
- Feb 21, 2021
-
-
Craig Topper authored
The result must be less than or equal to the LHS side, so any leading zeros in the left hand side must also exist in the result. This is stronger than the previous behavior where we only considered the sign bit being 0. The affected test case used the sign bit being known 0 to change a sign extend to a zero extend pre type legalization. After type legalization the types were promoted to i64, but we no longer knew bit 31 was zero. This shifts are are the equivalent of an AND with 0xffffffff or zext_inreg X, i32. This patch allows us to see that bit 31 is zero and remove the shifts. Reviewed By: RKSimon Differential Revision: https://reviews.llvm.org/D97124
-
Stella Laurenzo authored
* It was decided that this was the end of the line for the existing custom tc parser/generator, and this is the first step to replacing it with a declarative format that maps well to mathy source languages. * One such source language is implemented here: https://github.com/stellaraccident/mlir-linalgpy/blob/main/samples/mm.py * In fact, this is the exact source of the declarative `polymorphic_matmul` in this change. * I am working separately to clean this python implementation up and add it to MLIR (probably as `mlir.tools.linalg_opgen` or equiv). The scope of the python side is greater than just generating named ops: the ops are callable and directly emit `linalg.generic` ops fully dynamically, and this is intended to be a feature for frontends like npcomp to define custom linear algebra ops at runtime. * There is more work required to handle full type polymorphism, especially with respect to integer formulations, since they require more specificity wrt types. * Followups to this change will bring the new generator to feature parity with the current one and delete the current. Roughly, this involves adding support for interface declarations and attribute symbol bindings. Differential Revision: https://reviews.llvm.org/D97135
-
Simon Pilgrim authored
-
Simon Pilgrim authored
[X86] Replace explicit constant handling in sub(C1, xor(X, C2)) -> add(xor(X, ~C2), C1+1) fold. NFCI. NFC cleanup before adding vector support - rely on the SelectionDAG to handle everything for us.
-
Simon Pilgrim authored
-
Simon Pilgrim authored
This is also in sub.ll but that's for a specific i686 pattern - this adds x86_64 and vector tests
-
Simon Pilgrim authored
-
António Afonso authored
This reverts commit 1f21d488.
-
Michał Górny authored
Update supported features on FreeBSD, and supported platform list on FreeBSD, Linux and NetBSD. Differential Revision: https://reviews.llvm.org/D97114
-
Martin Storsjö authored
Differential Revision: https://reviews.llvm.org/D96840
-
Pavel Labath authored
This reapplies 7df4eaaa/D96202, which was reverted due to issues on windows. These were caused by problems in the computation of the liblldb directory, which was fixed by D96779. The original commit message was: Our test configuration logic assumes that the tests can be run either with debugserver or with lldb-server. This is not entirely correct, since lldb server has two "personalities" (platform server and debug server) and debugserver is only a replacement for the latter. A consequence of this is that it's not possible to test the platform behavior of lldb-server on macos, as it is not possible to get a hold of the lldb-server binary. One solution to that would be to duplicate the server configuration logic to be able to specify both executables. However, that seems excessively redundant. A well-behaved lldb should be able to find the debug server on its own, and testing lldb with a different (lldb-|debug)server does not seem very useful (even in the out-of-tree debugserver setup, we copy the server into the build tree to make it appear "real"). Therefore, this patch deletes the configuration altogether and changes the low-level server retrieval functions to be able to both lldb-server and debugserver paths. They do this by consulting the "support executable" directory of the lldb under test. Differential Revision: https://reviews.llvm.org/D96202
-
Craig Topper authored
This also removes a pattern from RISCV that is no longer needed since the sexti32 on the LHS of the srem in the pattern implies the result is sign extended so the sign_extend_inreg should be removed in DAG combine now. Reviewed By: luismarques, RKSimon Differential Revision: https://reviews.llvm.org/D97133
-
Simon Pilgrim authored
In conjunction with the 'vperm2x128(bitcast(x),bitcast(y),c) -> bitcast(vperm2x128(x,y,c))' fold in combineTargetShuffle, this should remove any unnecessary bitcasts around vperm2x128 lane shuffles.
-
António Afonso authored
This reverts commit a83a825e.
-
madhur13490 authored
Differential Revision: https://reviews.llvm.org/D97157
-