- Feb 26, 2021
-
-
Craig Topper authored
-
Fangrui Song authored
GNU as supports this. This mode silently ignores .cfi_startproc/.cfi_endproc and .cfi_* in between. Also drop a diagnostic `in '.cfi_sections' directive`: the diagnostic already includes the line and it is clear the line is a `.cfi_sections` directive.
-
Petr Hosek authored
These flags affect coverage mapping (-fcoverage-mapping), not -fprofile-[instr-]generate so it makes more sense to use the -fcoverage-* prefix. Differential Revision: https://reviews.llvm.org/D97434
-
Petr Hosek authored
We introduce -ffile-compilation-dir shorthand to avoid having to set -fdebug-compilation-dir and -fprofile-compilation-dir separately. This is similar to -ffile-prefix-map. Differential Revision: https://reviews.llvm.org/D97433
-
Bill Wendling authored
In 16-bit mode, some of the nop patterns used in 32-bit mode can end up mangling other instructions. For instance, an aligned "movz" instruction may have the 0x66 and 0x67 prefixes omitted, because the nop that's used messes things up. xorl %ebx, %ebx .p2align 4, 0x90 movzbl (%esi,%ebx), %ecx Use instead nop patterns we know 16-bit mode can handle. Differential Revision: https://reviews.llvm.org/D97268 -
Fangrui Song authored
Exposed by D97396
-
Kazu Hirata authored
-
Kazu Hirata authored
-
Eric Schweitz authored
We lower expressions with rank > 0 to a set of high-level array operations. These operations are then analyzed and refined to more primitve operations in subsequent pass(es). This patch upstreams these array operations and some other helper ops. Authors: Eric Schweitz, Rajan Walia, Kiran Chandramohan, et.al. https://github.com/flang-compiler/f18-llvm-project/pull/565 Differential Revision: https://reviews.llvm.org/D97421
-
Justin Lebar authored
Introduced in my c90dac27.
-
Rob Suderman authored
This reverts commit a813e9be. Results in an ASAN failure due to bypassing rewriter. Differential Revision: https://reviews.llvm.org/D97518
-
Chen Zheng authored
remove `Hi` `Lo` argument from `emitDwarfUnitLength`, so we can make caller of emitDwarfUnitLength easier. Reviewed By: MaskRay, dblaikie, ikudrin Differential Revision: https://reviews.llvm.org/D96409
-
Justin Lebar authored
Previously, -fshow-overloads=best always showed 4 candidates. The problem is, when this isn't enough, you're kind of up a creek; the only option available is to recompile with different flags. This can be quite expensive! With this change, we try to strike a compromise. The *first* error with more than 4 candidates will show up to 32 candidates. All further errors continue to show only 4 candidates. The hope is that this way, users will have *some chance* of making forward progress, without facing unbounded amounts of error spam. Differential Revision: https://reviews.llvm.org/D95754
-
Peter Collingbourne authored
We measured a 2.5 seconds (17.5%) regression in Android boot time performance with this change.
-
Craig Topper authored
-
Fangrui Song authored
For one metadata section usage, each text section references a metadata section. The metadata sections have a C identifier name to allow the runtime to collect them via `__start_/__stop_` symbols. Since `__start_`/`__stop_` references are always present from live sections, the C identifier name sections appear like GC roots, which means they cannot be discarded by `ld --gc-sections`. To make such sections GCable, either SHF_LINK_ORDER or a section group is needed. SHF_LINK_ORDER is not suitable for the references can be inlined into other functions (See D97430: Function A (in the section .text.A) references its `__sancov_guard` section. Function B inlines A (so now .text.B references `__sancov_guard` - this is invalid with the semantics of SHF_LINK_ORDER). In the linking stage, if `.text.A` gets discarded, and `__sancov_guard` is retained via the reference from `.text.B`, the output will be invalid because `__sancov_guard` references the discarded `.text.A`. LLD errors "sh_link points to discarded section". ) A section group have size overhead, and is cumbersome when there is just one metadata section. Add `-z start-stop-gc` to drop the "__start_/__stop_ references retain non-SHF_LINK_ORDER non-SHF_GROUP C identifier name sections" rule. We reserve the rights to switch the default in the future. Reviewed By: phosek, jrtc27 Differential Revision: https://reviews.llvm.org/D96914
-
Yonghong Song authored
Commit 1959ead5 ("BPF: Implement TTI.getCmpSelInstrCost() properly") introduced a dependency on LLVMTransformUtils library. Let us encode this dependency explicitly in CMakefile to avoid build error.
-
Ryan Prichard authored
On Android, the unwinder isn't part of the C++ STL and isn't (in older versions) exported from libc.so. Instead, the driver links the static unwinder archive implicitly. Currently, the Android NDK implicitly links libgcc.a to provide both builtins and the unwinder. To support switching to compiler-rt builtins and libunwind, make --rtlib=compiler-rt behave the same way on Android, and implicitly pass -l:libunwind.a to the linker. Adjust the -ldl logic. For the Android NDK, the unwinder (whether libgcc.a or libunwind.a) is linked statically and calls a function in the dynamic loader for finding unwind tables (e.g. dl_iterate_phdr). On Android, this function is in libc.a for static executables and libdl.so otherwise, so -ldl is needed. (glibc doesn't need -ldl because its libc.so exports dl_iterate_phdr.) Differential Revision: https://reviews.llvm.org/D96403
-
Jianzhou Zhao authored
DFSan at store does store shadow data; store app data; and at load does load shadow data; load app data. When an application data is atomic, one overtainting case is thread A: load shadow thread B: store shadow thread B: store app thread A: load app If the application address had been used by other flows, thread A reads previous shadow, causing overtainting. The change is similar to MSan's solution. 1) enforce ordering of app load/store 2) load shadow after load app; store shadow before shadow app 3) do not track atomic store by reseting its shadow to be 0. The last one is to address a case like this. Thread A: load app Thread B: store shadow Thread A: load shadow Thread B: store app This approach eliminates overtainting as a trade-off between undertainting flows via shadow data race. Note that this change addresses only native atomic instructions, but does not support builtin libcalls yet. https://llvm.org/docs/Atomics.html#libcalls-atomic Reviewed-by: morehouse Differential Revision: https://reviews.llvm.org/D97310
-
Kostya Kortchinsky authored
Post D96572, a warning started showing up for me: `clang/lib/Basic/Sanitizers.cpp:73:1: warning: control reaches end of non-void function [-Wreturn-type]` So this adds a default to the case to return invalid, which seems appropriate, and appears to correct the issue. Differential Revision: https://reviews.llvm.org/D97496
-
James Y Knight authored
And then push those change throughout LLVM. Keep the old signature in Clang's CGBuilder for now -- that will be updated in a follow-on patch (D97224). The MLIR LLVM-IR dialect is not updated to support the new alignment attribute, but preserves its existing behavior. Differential Revision: https://reviews.llvm.org/D97223
-
LLVM GN Syncbot authored
-
Francis Visoiu Mistrih authored
This now analyzes calls to both intrinsics and functions. For intrinsics, grab the ones we know and care about (mem* family) and analyze the arguments. For calls, use TLI to get more information about the libcalls, then analyze the arguments if known. ``` auto-init.c:4:7: remark: Call to memset inserted by -ftrivial-auto-var-init. Memory operation size: 4096 bytes. [-Rpass-missed=annotation-remarks] int var[1024]; ^ ``` Differential Revision: https://reviews.llvm.org/D97489 -
Francis Visoiu Mistrih authored
This adds support for analyzing the instruction with the !annotation "auto-init" in order to generate a more user-friendly remark. For now, support the store size, and whether it's atomic/volatile. Example: ``` auto-init.c:4:7: remark: Store inserted by -ftrivial-auto-var-init.Store size: 4 bytes. [-Rpass-missed=annotation-remarks] int var; ^ ``` Differential Revision: https://reviews.llvm.org/D97412 -
Francis Visoiu Mistrih authored
Using the !annotation metadata, emit remarks pointing to code added by `-ftrivial-auto-var-init` that survived the optimizer. Example: ``` auto-init.c:4:7: remark: Initialization inserted by -ftrivial-auto-var-init. [-Rpass-missed=annotation-remarks] int buf[1024]; ^ ``` The tests are testing various situations like calls/stores/other instructions, with debug locations, and extra debug information on purpose: more patches will come to improve the reporting to make it more user-friendly, and these tests will show how the reporting evolves. Differential Revision: https://reviews.llvm.org/D97405 -
Adrian Prantl authored
The maintainer of libdwarf kindly provided this patch with a bunch of historic DWARF extensions that are missing from Dwarf.def. This list is helpful to avoid potential conflicts in the user-defined vendor extension space in the future. Patch by David Anderson! [Relanded with an updated test.] Differential Revision: https://reviews.llvm.org/D97242
-
Zequan Wu authored
It would be beneficial to allow not_tail_called attribute to be applied to virtual functions. I don't see any drawback of allowing this. Differential Revision: https://reviews.llvm.org/D96832
-
Yonghong Song authored
The Select insn in BPF is expensive as BPF backend needs to resolve with conditionals. This patch set the getCmpSelInstrCost() to SCEVCheapExpansionBudget for Select insn to prevent some Select insn related optimizations. This change is motivated during bcc code review for https://github.com/iovisor/bcc/pull/3270 where IndVarSimplifyPass eventually caused generating the following asm code: ; for (i = 0; (i < VIRTIO_MAX_SGS) && (i < num); i++) { 14: 16 05 40 00 00 00 00 00 if w5 == 0 goto +64 <LBB0_6> 15: bc 51 00 00 00 00 00 00 w1 = w5 16: 04 01 00 00 ff ff ff ff w1 += -1 17: 67 05 00 00 20 00 00 00 r5 <<= 32 18: 77 05 00 00 20 00 00 00 r5 >>= 32 19: a6 01 01 00 05 00 00 00 if w1 < 5 goto +1 <LBB0_4> 20: b7 05 00 00 06 00 00 00 r5 = 6 00000000000000a8 <LBB0_4>: 21: b7 02 00 00 00 00 00 00 r2 = 0 22: b7 01 00 00 00 00 00 00 r1 = 0 ; for (i = 0; (i < VIRTIO_MAX_SGS) && (i < num); i++) { 23: 7b 1a e0 ff 00 00 00 00 *(u64 *)(r10 - 32) = r1 24: 7b 5a c0 ff 00 00 00 00 *(u64 *)(r10 - 64) = r5 Note that insn #15 has w1 = w5 and w1 is refined later but r5(w5) is eventually saved on stack at insn #24 for later use. This cause later verifier failures. With this change, IndVarSimplifyPass won't do the above transformation any more. Differential Revision: https://reviews.llvm.org/D97479
-
Richard Smith authored
Convert the list of standards to a table; it's starting to get unwieldy.
-
Rob Suderman authored
Includes a lowering for tosa.const, tosa.if, and tosa.while to Standard/SCF dialects. TosaToStandard is used for constant lowerings and TosaToSCF handles the if/while ops. Reviewed By: silvas Differential Revision: https://reviews.llvm.org/D97352
-
Richard Smith authored
Under C++ CWG DR 2237, the constructor for a class template C must be written as 'C(...)' not as 'C<T>(...)'. This fixes a build failure with GCC in C++20 mode. In passing, remove some other redundant '<T>' qualification from the affected classes.
-
Martin Storsjö authored
This avoids having to query pathconf for a max size for preallocating a buffer for the return value. This is an extension to the POSIX getcwd() spec. Differential Revision: https://reviews.llvm.org/D97460
-
Martin Storsjö authored
This can't easily be autodetected (unless LIBCXX_TARGET_TRIPLE is specified, or unless we query what the compiler's default target is, which only is supported by clang), but can be chosen manually via LIBCXX_TARGET_INFO. This chooses mingw style lib naming, and uses -nostdlibc++ instead of -nodefaultlib -nostdlib (as the latter requires specifying a lot of details manually - this is done in the cmake config though). Differential Revision: https://reviews.llvm.org/D97294
-
Martin Storsjö authored
This fixes building libunwind with a new enough version of cmake. (libunwind treats its asm sources as C depending on the cmake version on some platforms; this fixes builds when such workarounds aren't used, when cmake treats asm correctly on its own.) Differential Revision: https://reviews.llvm.org/D97399
-
Martin Storsjö authored
Restructure code in directory_entry.obs/file_type_obs.pass.cpp and directory_entry.obs/hard_link_count.pass.cpp to reduce the amount of ifdeffery needed. In file_type_obs.pass.cpp, we can't inline the calls to env.create_* into the lambda calls (e.g. "test_path(env.create_*())"), because the lambda removes the referenced file, and the hardlink must be created while the earlier test file exists. In hard_link_count.pass.cpp, move restoration of the original directory permissions to the end of the lambda, so that new directory entries can be created after the lambda has run once. Differential Revision: https://reviews.llvm.org/D89948
-
Martin Storsjö authored
On Windows, path::value_type is wchar_t, so one can't pass the return value of path::c_str() directly to std::remove(). This matches what was done for tests under std/input.output/filesystems in 81db3c31 and 3784bdf2. Differential Revision: https://reviews.llvm.org/D97458
-
Nicolas Guillemot authored
This patch adds each pass' pass argument in the header for IR dumps. For example: Before: ``` *** IR Dump Before InstructionSelect *** ``` After: ``` *** IR Dump Before InstructionSelect (instruction-select) *** ``` The goal is to make it easier to know what argument to pass to command line options like `debug-only` or `run-pass` to further investigate a given pass. -
AndreyChurbanov authored
Cleanup changes: - check value read from file; - remove dead code; - make unsigned variable to read hexadecimal number to; - add debug assertion to check ref count. Differential Revision: https://reviews.llvm.org/D96893
-
Med Ismail Bennani authored
This patch replaces the static large function threshold variable with a global debugger setting (`stop-disassembly-max-size`). The default threshold is now set to 32KB (instead of 8KB) and can be modified. rdar://74726362 Differential Revision: https://reviews.llvm.org/D97486 Signed-off-by:
Med Ismail Bennani <medismail.bennani@gmail.com>
-
Dan Liew authored
This change simplifies `clang/lib/Frontend/CompilerInvocation.cpp` because we no longer need to manually parse the flag and set codegen options in the frontend. However, we still need to manually parse the flag in the driver because: * The marshalling infrastructure doesn't operate there. * We need to do some platform specific checks in the driver that will likely never be supported by any kind of marshalling infrastructure. rdar://71609176 Differential Revision: https://reviews.llvm.org/D97327
-