- Aug 04, 2020
-
-
Fangrui Song authored
D84723 caused multiple definition issues (related to comdat) on Windows: http://lab.llvm.org:8011/builders/sanitizer-windows/builds/67465
-
Wang, Pengfei authored
Test function mask_cmp_128 failed during ISEL LLVM ERROR: Cannot select: t37: v8i1 = X86ISD::KSHIFTL t48, TargetConstant:i8<4> due to v8i1 only available under AVX512DQ. Reviewed By: RKSimon Differential Revision: https://reviews.llvm.org/D84922
-
Chen Zheng authored
Reviewed By: steven.zhang Differential Revision: https://reviews.llvm.org/D84735
-
Carl Ritson authored
When scavenging consider the sub-register of the source operand to determine the bank of a candidate register (not just sub0). Without this it is possible to introduce an infinite loop, e.g. $sgpr15_sgpr16_sgpr17 can be assigned for a conflict between $sgpr0 and SGPR_96:sub1. Reviewed By: rampitec Differential Revision: https://reviews.llvm.org/D84910
-
Fangrui Song authored
See https://lists.llvm.org/pipermail/llvm-dev/2020-July/143373.html "[llvm-dev] Multiple documents in one test file" for some discussions. This patch has explored several alternatives. The current semantics are similar to what @dblaikie proposed. `split-file filename output` splits the input file into multiple parts separated by regex `^(.|//)--- filename` and write each part to the file `output/filename` (`filename` can include path separators). Use case A (organizing input of different formats (e.g. linker script+assembly) in one file). ``` # RUN: split-file %s %t # RUN: llvm-mc %t/asm -o %t.o # RUN: ld.lld -T %t/lds %t.o -o %t This is sometimes better than the %S/Inputs/ approach because the user can see the auxiliary files immediately and don't have to open another file. # asm ... # lds ... ``` Use case B (for utilities which don't have built-in input splitting feature): ``` // RUN: split-file %s %t // RUN: llc < %t/1.ll | FileCheck %s --check-prefix=CASE1 // RUN: llc < %t/2.ll | FileCheck %s --check-prefix=CASE2 Combing tests prudently can improve readability. For example, when testing parsing errors if the recovery mechanism isn't possible, grouping the tests in one file can more readily see test coverage/strategy. //--- 1.ll ... //--- 2.ll ... ``` Since this is a new utility, there is no git history concerns for UpperCase variable names. I use lowerCase variable names like mlir/lld. Reviewed By: jhenderson, lattner Differential Revision: https://reviews.llvm.org/D83834
-
Fangrui Song authored
D68041 placed `__profc_`, `__profd_` and (if exists) `__profvp_` in different comdat groups. There are some issues: * Cost: one or two additional section headers (`.group` section(s)): 64 or 128 bytes on ELF64. * `__profc_`, `__profd_` and (if exists) `__profvp_` should be retained or discarded. Placing them into separate comdat groups is conceptually inferior. * If the prevailing group does not include `__profvp_` (value profiling not used) but a non-prevailing group from another translation unit has `__profvp_` (the function is inlined into another and triggers value profiling), there will be a stray `__profvp_` if --gc-sections is not enabled. This has been fixed by 3d6f5301. Actually, we can reuse an existing symbol (we choose `__profd_`) as the group signature to avoid a string in the string table (the sole reason that D68041 could improve code size is that `__profv_` was an otherwise unused symbol which wasted string table space). This saves one or two section headers. For a -DCMAKE_BUILD_TYPE=Release -DLLVM_BUILD_INSTRUMENTED=IR build, `ninja clang lld`, the patch has saved 10.5MiB (2.2%) for the total .o size. Reviewed By: davidxl Differential Revision: https://reviews.llvm.org/D84723
-
Max Kazantsev authored
[SimpleLoopUnswitch][NFC] Add option to always drop make.implicit metadata in non-trivial unswitching and save compile time We might want this if we find out that using of MustExecute analysis is too expensive. By default we do the analysis because its complexity does not exceed the complexity of whole loop copying in unswitching. Follow-up for D84925. Differential Revision: https://reviews.llvm.org/D85001 Reviewed By: asbirlea
-
Jonas Devlieghere authored
Sometimes the decorator is used on a common function rather than the test method, which can return a value. This fails with decorators that use skipTestIfFn under the hood.
-
Jordan Rupprecht authored
This reverts commit adb5c23f. It surprisingly fails on a windows build bot: http://lab.llvm.org:8011/builders/lldb-x64-windows-ninja/builds/18009 Will reland after some investigation and/or after adding some extra logging to help debug the issue.
-
Chen Zheng authored
Reviewed By: lebedev.ri Differential Revision: https://reviews.llvm.org/D85130
-
peter klausler authored
Differential Revision: https://reviews.llvm.org/D85166
-
Shinji Okumura authored
-
David Blaikie authored
-
Petr Hosek authored
Clang and GCC have a feature (-MD flag) to create a dependency file in a format that build systems such as Make or Ninja can read, which specifies all the additional inputs such .h files. This change introduces the same functionality to lld bringing it to feature parity with ld and gold which gained this feature recently. See https://sourceware.org/bugzilla/show_bug.cgi?id=22843 for more details and discussion. The implementation corresponds to -MD -MP compiler flag where the generated dependency file also includes phony targets which works around the errors where the dependency is removed. This matches the format used by ld and gold. Fixes PR42806 Differential Revision: https://reviews.llvm.org/D82437
-
Daniel Sanders authored
-
peter klausler authored
External input was detecting "end of file" conditions in BeginExternal...Input() and BeginUnformattedInput() routines before EnableHandlers() could have been called. Defer the "start next record" processing to the input data item handlers (and EndIoStatement() for when there are no data items). Differential Revision: https://reviews.llvm.org/D85161
-
peter klausler authored
Extend the raw file wrapper to get accessibility, positioning, and size information. This is needed for INQUIRE (to follow). Differential Revision: https://reviews.llvm.org/D85160
-
Christopher Tetreault authored
Reviewed By: RKSimon Differential Revision: https://reviews.llvm.org/D85156
-
Jordan Rupprecht authored
If the test suite is misconfigured when it's run (a bad regexp, wrong test directory, etc.), the test suite may not discover any tests. When this happens, the test runner exits happily because no tests failed: ``` Ran 0 tests in 0.000s RESULT: PASSED (0 passes, 0 failures, 0 errors, 0 skipped, 0 expected failures, 0 unexpected successes) ``` Change this to return an error so the misconfiguration can be more easily detected. Verified that `lldb-dotest -p TestDoesNotExist.py` successfully fails. Reviewed By: JDevlieghere Differential Revision: https://reviews.llvm.org/D85169
-
Nathan James authored
-
peter klausler authored
-
peter klausler authored
Fixes problems in FCVS test fm110.f. Add more comments, too. Differential Revision: https://reviews.llvm.org/D85163
-
hgreving authored
Adds the function createMCInst() to MCContext that creates a MCInst using a typed bump alloctor. MCInst contains a SmallVector<MCOperand, 8>. The SmallVector is POD only for <= 8 operands. The default untyped bump pointer allocator of MCContext does not delete the MCInst, so if the SmallVector grows, it's a leak. This fixes https://bugs.llvm.org/show_bug.cgi?id=46900.
-
Kazushi (Jam) Marukawa authored
In order to follow NEC Aurora SX VE ABI correctly, change to sign/zero extend integer arguments and return values smaller than 64 bits in clang. Also update regression test. Reviewed By: simoll Differential Revision: https://reviews.llvm.org/D85071
-
Christopher Tetreault authored
Differential Revision: https://reviews.llvm.org/D85151
-
Christopher Tetreault authored
Reviewed By: dmgreen Differential Revision: https://reviews.llvm.org/D85152
-
Julian Lettner authored
These UBSan tests assert the absence of runtime errors via `count 0`, which means "expect no output". This fails the test unnecessarily in some environments (e.g., iOS simulator in our case). Alter the test to be a bit more specific and "expect no error" instead of "expect no output". rdar://65503408 Differential Revision: https://reviews.llvm.org/D85155
-
Jordan Rupprecht authored
-
Christopher Tetreault authored
Differential Revision: https://reviews.llvm.org/D85154
-
Fangrui Song authored
Reland D61689 Change -gz and -Wa,--compress-debug-sections to use gABI compression (SHF_COMPRESSED) with integrated assembler This fixes an inconsistency: clang -c -gz -fno-integrated-as means SHF_COMPRESSED while clang -c -gz -fintegrated-as means zlib-gnu. --- Since July 15, 2015 (binutils-gdb commit 19a7fe52ae3d0971e67a134bcb1648899e21ae1c, included in 2.26), gas --compress-debug-sections=zlib (gcc -gz) means zlib-gabi: SHF_COMPRESSED. Before that GCC/binutils used zlib-gnu (.zdebug). clang's -gz was introduced in rC306115 (Jun 2017) to indicate zlib-gnu. It is 2020 now and it is not unreasonable to assume users of the new feature to have new linkers (ld.bfd/gold >= 2.26, lld >= rLLD273661). Change clang's default accordingly to improve standard conformance. zlib-gnu becomes out of fashion and gets poorer toolchain support. Its mangled names confuse tools and are more likely to cause problems. Reviewed By: compnerd Differential Revision: https://reviews.llvm.org/D61689
-
peter klausler authored
And fix a minor bug exposed by doing so. Differential Revision: https://reviews.llvm.org/D85164
-
Alina Sbirlea authored
Merging alias results from different paths, when a path did phi translation is not necesarily correct. Conservatively terminate such paths. Aimed to fix PR46156. Differential Revision: https://reviews.llvm.org/D84905
-
River Riddle authored
Unit attributes are given meaning by their existence, and thus have no meaningful value beyond "is it present". As such, in the format of an operation unit attributes are generally used to guard the printing of other elements and aren't generally printed themselves; as the presence of the group when parsing means that the unit attribute should be added. This revision adds support to the declarative format for eliding unit attributes in situations where they anchor an optional group, but aren't the first element. For example, ``` let assemblyFormat = "(`is_optional` $unit_attr^)? attr-dict"; ``` would print `foo.op is_optional` when $unit_attr is present, instead of the current `foo.op is_optional unit`. Differential Revision: https://reviews.llvm.org/D84577
-
Mitch Phillips authored
GlobalISel is the default ISel for aarch64 at -O0. Prior to D78465, GlobalISel didn't have support for dealing with address-of-global lowerings, so it fell back to SelectionDAGISel. HWASan Globals require special handling, as they contain the pointer tag in the top 16-bits, and are thus outside the code model. We need to generate a `movk` in the instruction sequence with a G3 relocation to ensure the bits are relocated properly. This is implemented in SelectionDAGISel, this patch does the same for GlobalISel. GlobalISel and SelectionDAGISel differ in their lowering sequence, so there are differences in the final instruction sequence, explained in `tagged-globals.ll`. Both of these implementations are correct, but GlobalISel is slightly larger code size / slightly slower (by a couple of arithmetic instructions). I don't see this as a problem for now as GlobalISel is only on by default at `-O0`. Reviewed By: aemerson, arsenm Differential Revision: https://reviews.llvm.org/D82615
-
David Green authored
VPSEL has slightly different semantics under tail predication (it can end up selecting from Qn, Qm and Qd). We do not model that at the moment so they block tail predicated loops from being formed. This just converts them into a predicated VMOV instead (via a VORR), allowing tail predication to happen whilst still modelling the original behaviour of the input. Differential Revision: https://reviews.llvm.org/D85110
-
Thomas Lively authored
Specified in https://github.com/WebAssembly/simd/pull/237, these instructions load the first vector lane from memory and zero the other lanes. Since these instructions are not officially part of the SIMD proposal, they are only available on an opt-in basis via LLVM intrinsics and clang builtin functions. If these instructions are merged to the proposal, this implementation will change so that the instructions will be generated from normal IR. At that point the intrinsics and builtin functions would be removed. This PR also changes the opcodes for the experimental f32x4.qfm{a,s} instructions because their opcodes conflicted with those of the v128.load{32,64}_zero instructions. The new opcodes were chosen to match those used in V8. Differential Revision: https://reviews.llvm.org/D84820
-
Mitch Phillips authored
This reverts commit 219f32f4. Commit contains unsigned compasions that break bots that build with -Wsign-compare.
-
David Green authored
-
Fangrui Song authored
Part of https://bugs.llvm.org/show_bug.cgi?id=41734 LTO can drop externally available definitions. Such AssociatedSymbol is not associated with a symbol. ELFWriter::writeSection() will assert. Allow a SHF_LINK_ORDER section to have sh_link=0. We need to give sh_link a syntax, a literal zero in the linked-to symbol position, e.g. `.section name,"ao",@progbits,0` Reviewed By: pcc Differential Revision: https://reviews.llvm.org/D72899
-
Akira Hatanaka authored
notail on x86-64 This is needed because the epilogue code inserted before tail calls on x86-64 breaks the handshake between the caller and callee. Calls to objc_retainAutoreleasedReturnValue used to have the same problem, which was fixed in https://reviews.llvm.org/D59656. rdar://problem/66029552 Differential Revision: https://reviews.llvm.org/D84540
-