- Nov 05, 2021
-
-
Qiu Chaofan authored
ppc_fp128 and fp128 are both 128-bit floating point types. However, we can't do conversion between them now, since trunc/ext are not allowed for same-size fp types. This patch adds two new intrinsics: llvm.ppc.convert.f128.to.ppcf128 and llvm.convert.ppcf128.to.f128, to support such conversion. Reviewed By: shchenz Differential Revision: https://reviews.llvm.org/D109421
-
Martin Storsjö authored
Default to preferring forward slashes when built for MinGW, as many usecases, when e.g. Clang is used as a drop-in replacement for GCC, requires the compiler to output paths with forward slashes. Not all tests pass yet, if configuring to prefer forward slashes though. Differential Revision: https://reviews.llvm.org/D112787
-
Martin Storsjö authored
This normalizes most paths (except ones input from the user as command line arguments) into the preferred form, if `real_style()` evaluates to `windows_forward`. Differential Revision: https://reviews.llvm.org/D111880
-
Martin Storsjö authored
This behaves just like the regular Windows style, with both separator forms accepted, but with get_separator() returning forward slashes. Add a more descriptive name for the existing style, keeping the old name around as an alias initially. Add a new function `make_preferred()` (like the C++17 `std::filesystem::path` function with the same name), which converts windows paths to the preferred separator form (while this one works on any platform and takes a `path::Style` argument). Contrary to `native()` (just like `make_preferred()` in `std::filesystem`), this doesn't do anything at all on Posix, it doesn't try to reinterpret backslashes into forward slashes there. Differential Revision: https://reviews.llvm.org/D111879
-
Martin Storsjö authored
This reverts commits 737e4216 and ce7ac9e6. After those commits, the compiler can crash with a reduced testcase like this: $ cat reduced.c void a(*); void a() {} $ clang -c reduced.c -O2 -g
-
Martin Storsjö authored
If Clang is set up to link directly against libunwind (via the --unwindlib option, or the corresponding builtin default option), configuring libunwind will fail while bootstrapping (before the initial libunwind is built), because every cmake test will fail due to -lunwind not being found, and linking the shared library will fail similarly. Check if --unwindlib=none is supported, and add it in that case. Using check_c_compiler_flag on its own doesn't work, because that only adds the tested flag to the compilation command, and if -lunwind is missing, the linking step would still fail - instead try adding it to CMAKE_REQUIRED_FLAGS and restore the variable if it doesn't work. This avoids having to pass --unwindlib=none while building libunwind. Differential Revision: https://reviews.llvm.org/D112126
-
Markus Lavin authored
Last minute changes in https://reviews.llvm.org/D110908 unfortunately introduced a bug wrt automatic pipeline expansion. This patch fixes that as well as gets rid of a few redundant variables. Reviewed By: aeubanks Differential Revision: https://reviews.llvm.org/D113177
-
Vitaly Buka authored
-
David Blaikie authored
Still some pending bugs, but at least ironed some things out.
-
Michael Kruse authored
The PragmaAssumeNonNullHandler (and maybe others) passes an invalid SourceLocation to its callback, hence PrintPreprocessedOutput does not know how many lines to insert between the previous token and the pragma and does nothing. With this patch we instead assume that the unknown token is on the same line as the previous such that we can call the procedure that also emits semantically significant whitespace. Fixes bug reported here: https://reviews.llvm.org/D104601#3105044
-
Michael Kruse authored
This is reported by msvc as warning C6287: redundant code: the left and right subexpressions are identical EmittedDirectiveOnThisLine implies EmittedTokensOnThisLine making this an NFC change. To be on the safe side and because both of them are checked at other places as well, we continue to check both. Compiler warning reported here: https://reviews.llvm.org/D104601#2957333
-
Chen Zheng authored
Address namanjai post commit comments.
-
Keith Smiley authored
This removes the tablegen based parsing of LC_LINKER_OPTION since it can only actually contain a very small number of potential arguments. In our project with tablegen this took 5 seconds before. This replaces https://reviews.llvm.org/D113075 Differential Revision: https://reviews.llvm.org/D113235
-
Matthias Springer authored
This commit separates the bufferization from the bufferization pass in Linalg. This allows other dialects to use ComprehensiveBufferize more easily. This commit mainly moves files to a new directory and adds a new build target. Differential Revision: https://reviews.llvm.org/D112989
-
Fangrui Song authored
This matches ld64. Also improve the test for `-dead_strip`. Reviewed By: #lld-macho, Jez Ng Differential Revision: https://reviews.llvm.org/D113147
-
Shengchen Kan authored
Fix the LIT test fail on Mac, which is reported in D113096.
-
Matthias Springer authored
AllocationCallbacks functions allocate/deallocate only. They no longer set the insertion point. This is in preparation of decoupling ComprehensiveBufferize from the Linalg dialect. Differential Revision: https://reviews.llvm.org/D112991
-
Matthias Springer authored
Move dialect-specific and analysis-specific function out of BufferizationAliasInfo. BufferizationAliasInfo's only job now is to keep track of aliases. This is in preparation of futher decoupling ComprehensiveBufferize from various dialects. Differential Revision: https://reviews.llvm.org/D112992
-
Matthias Springer authored
By default, OpResult buffers are writable. But there are ops (e.g., ConstantOp) for which this is not the case. The purpose of this commit is to further decouple Comprehensive Bufferize from the Standard dialect. Differential Revision: https://reviews.llvm.org/D112908
-
Vitaly Buka authored
Asan detects it after D112732.
-
Matthias Springer authored
This in preparation of decoupling BufferizableOpInterface, Comprehensive Bufferize and dialects. The goal of this CL is to make `getResultBuffer` (and other `bufferize` functions) independent of `LinalgOps`. Differential Revision: https://reviews.llvm.org/D112907
-
Vitaly Buka authored
-
Vitaly Buka authored
They pass regular MemorySanitizer, but hang with origin tracking.
-
Shengchen Kan authored
Constraint `*m` should be used when the address of a variable is passed as a value. And the constraint is missing for MS inline assembly when sth is written to the address of the variable. The missing would cause FE delete the definition of the static varible, and then result in "undefined reference to xxx" issue. Reviewed By: xiangzhangllvm Differential Revision: https://reviews.llvm.org/D113096
-
Keith Smiley authored
https://reviews.llvm.org/D113153#3108083 smeenai, int3 Differential Revision: https://reviews.llvm.org/D113198
-
Matthias Springer authored
These two methods are redundant and removed: * `bufferizesToAliasOnly`: If not `bufferizesToMemoryRead` and not `bufferizesToMemoryWrite` but `getAliasingOpResult` returns a non-null value, we know that this OpOperand is alias-only. This method now has a default implementation and does not have to be implemented. * `getInplaceableOpResult`: The analysis does not differentiate between "inplaceable" and "aliasing". The only thing that matters is whether or not OpOperand and OpResult are aliasing. That is the key property that makes buffer copies necessary. Differential Revision: https://reviews.llvm.org/D112902
-
Aart Bik authored
The earlier reduction "scalarization" was only applied to a chain of *innermost* and *for* loops. This revision generalizes this to any nesting of for- and while-loops. This implies that reductions can be implemented with a lot less load and store operations. The chaining is implemented with a forest of yield statements (but not as bad as when we would also include the while-induction). Fixes https://bugs.llvm.org/show_bug.cgi?id=52311 Reviewed By: bixia Differential Revision: https://reviews.llvm.org/D113078
-
Kirill Stoimenov authored
Added and implemented -asan-use-stack-safety flag, which control if ASan would use the Stack Safety results to emit less code for operations which are marked as 'safe' by the static analysis. Reviewed By: vitalybuka Differential Revision: https://reviews.llvm.org/D112098
-
Arthur Eubanks authored
Follow-up change to D111575. We don't need eager invalidation on every adaptor. Most notably, adaptors running passes that use very few analyses, or passes that purely invalidate specific analyses. Also allow testing of this via a pipeline string "function<eager-inv>()". The compile time/memory impact of this is very comparable to D111575. https://llvm-compile-time-tracker.com/compare.php?from=9a2eec512a29df45c90c2fcb741e9d5c693b1383&to=b9f20bcdea138060967d95a98eab87ce725b22bb&stat=instructions Reviewed By: nikic Differential Revision: https://reviews.llvm.org/D113196
-
Yonghong Song authored
A new kind BTF_KIND_TYPE_TAG is defined. The tags associated with a pointer type are emitted in their IR order as modifiers. For example, for the following declaration: int __tag1 * __tag1 __tag2 *g; The BTF type chain will look like VAR(g) -> __tag1 --> __tag2 -> pointer -> __tag1 -> pointer -> int In the above "->" means BTF CommonType.Type which indicates the point-to type. Differential Revision: https://reviews.llvm.org/D113222
-
not-jenni authored
Reviewed By: rsuderman Differential Revision: https://reviews.llvm.org/D113207
-
Daniel McIntosh authored
`thread_code` returns param, which for NO_THREADS is going to be `&thread_globals`. Thus, the return value will never be null. The test was probably meant to check if `*thread_code(&thread_globals) == 0`. However, to avoid the extra cast, and to bring the NO_THREADS version more in line with the regular version of the test, this changes it to check if thread_globals == 0 directly. Reviewed By: ldionne, #libc_abi Differential Revision: https://reviews.llvm.org/D113048
-
Yonghong Song authored
Commit 737e4216 ("[Attr] support btf_type_tag attribute") added btf_type_tag support in llvm. Buildbot reported a failure with attr-btf_type_tag.ll. ; CHECK-NEXT: DW_AT_type (0x[[T1:[0-9]+]] "int ***") <stdin>:15:2: note: possible intended match here DW_AT_type (0x0000002f "int ***") The pattern [0-9]+ is not enough to match 0000002f, we need [0-9a-f]+. This patch fixed the issue.
-
Johannes Doerfert authored
Reviewed By: carlo.bertolli Differential Revision: https://reviews.llvm.org/D113111
-
Johannes Doerfert authored
Reviewed By: ye-luo Differential Revision: https://reviews.llvm.org/D113110
-
Johannes Doerfert authored
Minimize the `impl` interface and clean up some uses of mapping functions. Reviewed By: jhuber6 Differential Revision: https://reviews.llvm.org/D112154
-
Philip Reames authored
This extends the logic in canonicalizeExitConditions to use loop guards to specialize the SCEV of the loop invariant term before quering it's range.
-
Arthur Eubanks authored
We almost always want to use the default AA pipeline. It's very easy for users of PassBuilder to forget to customize the AAManager to use the default AA pipeline (for example, the NewPM C API forgets to do this). If somebody wants a custom AA pipeline, similar to what is being done now with the default AA pipeline registration, they can FAM.registerPass([&] { return std::move(MyAA); }); before calling PB.registerFunctionAnalyses(FAM); For example, LTOBackend.cpp and NewPMDriver.cpp do this. Reviewed By: asbirlea Differential Revision: https://reviews.llvm.org/D113210 -
Ben Langmuir authored
If a tool wants to introduce new indirections via stubs at link-time in ORC, it can cause fidelity issues around the address of the function if some references to the function do not have relocations. This is known to happen inside the body of the function itself on x86_64 for example, where a PC-relative address is formed, but without a relocation. ``` _foo: leaq -7(%rip), %rax ## form pointer to '_foo' without relocation _bar: leaq (%rip), %rax ## uses X86_64_RELOC_SIGNED to '_foo' ``` The consequence of introducing a stub for such a function at link time is that if it forms a pointer to itself without relocation, it will not have the same value as a pointer from outside the function. If the function pointer is used as a key, this can cause problems. This utility provides best-effort support for adding such missing relocations using MCDisassembler and MCInstrAnalysis to identify the problematic instructions. Currently it is only implemented for x86_64. Note: the related issue with call/jump instructions is not handled here, only forming function pointers. rdar://83514317 Differential revision: https://reviews.llvm.org/D113038