- Jan 19, 2020
-
-
Rainer Orth authored
mlir currently fails to build on Solaris: /vol/llvm/src/llvm-project/dist/mlir/lib/Conversion/VectorToLoops/ConvertVectorToLoops.cpp:78:20: error: reference to 'index_t' is ambiguous IndexHandle zero(index_t(0)), one(index_t(1)); ^ /usr/include/sys/types.h:103:16: note: candidate found by name lookup is 'index_t' typedef short index_t; ^ /vol/llvm/src/llvm-project/dist/mlir/include/mlir/EDSC/Builders.h:27:8: note: candidate found by name lookup is 'mlir::edsc::index_t' struct index_t { ^ and many more. Given that POSIX reserves all identifiers ending in `_t` 2.2.2 The Name Space <https://pubs.opengroup.org/onlinepubs/9699919799/functions/V2_chap02.html>, it seems quite unwise to use such identifiers in user code, even more so without a distinguished prefix. The following patch fixes this by renaming `index_t` to `index_type`. cases. Tested on `amd64-pc-solaris2.11` and `sparcv9-sun-solaris2.11`. Differential Revision: https://reviews.llvm.org/D72619 -
Alexandre Ganea authored
-
Jonas Devlieghere authored
This extract the common functionality of enabling and disabling hardware watchpoints into a single function. Differential revision: https://reviews.llvm.org/D72971
-
Fangrui Song authored
-
Reid Kleckner authored
This reverts commit add95990. Buildbots don't seem to like it.
-
Reid Kleckner authored
Most clients only ever use the default BumpPtrAllocator.
-
- Jan 18, 2020
-
-
Eric Astor authored
This reverts commit 22af2cbe, due to breakages on ARM platforms.
-
Simon Pilgrim authored
Since it can only ever create VALIGN nodes.
-
Simon Pilgrim authored
-
Saar Raz authored
Implement support for C++2a requires-expressions. Differential Revision: https://reviews.llvm.org/D50360
-
Michael Liao authored
-
Fred Riss authored
Those old Makefiles used completely ad-hoc rules for building files, which means they didn't obey the test harness' variants. They were somewhat tricky to update as they use very peculiar build flags for some files. For this reason I was careful to compare the build commands before and after the change, which is how I found the discrepancy fixed by the previous commit. While some of the make syntax used here might not be easy to grasp for newcomers (per-target variable overrides), it seems better than to have to repliacte the Makefile.rules logic for the test variants and platform support.
-
Fred Riss authored
The test harness invokes the test Makefiles with an explicit 'all' target, but it's handy to be able to recursively call Makefile.rules without speficying a goal. Some time ago, we rewrote some tests in terms of recursive invocations of Makefile.rules. It turns out this had an unintended side effect. While using $(MAKE) for a recursive invocation passes all the variables set on the command line down, it doesn't pass the make goals. This means that those recursive invocations would invoke the default rule. It turns out the default rule of Makefile.rules is not 'all', but $(EXE). This means that ti would work becuase the executable is always needed, but it also means that the created binaries would not follow some of the other top-level build directives, like MAKE_DSYM. Forcing 'all' to be the default target seems easier than making sure all the invocations are correct going forward. This patch does this using the .DEFAULT_GOAL directive rather than hoisting the 'all' rule to be the first one of the file. It seems like this explicit approach will be less prone to be broken in the future. Hopefully all the make implementations we use support it.
-
David Blaikie authored
This makes the SectionLabel handling more resilient - specifically for future PROPELLER work which will have more CU ranges (rather than just one per function). Ultimately it might be nice to make this more general/resilient to arbitrary labels (rather than relying on the labels being created for CU ranges & then being reused by ranges, loclists, and possibly other addresses). It's possible that other (non-rnglist/loclist) uses of addresses will need the addresses to be in SectionLabels earlier (eg: move the CU.addRange to be done on function begin, rather than function end, so during function emission they are already populated for other use).
-
David Blaikie authored
Follow on from D72812, based on Mehdi Amini's feedback.
-
Derek Schuff authored
This change has 2 components: Target-independent: add a method getDwarfFrameBase to TargetFrameLowering. It describes how the Dwarf frame base will be encoded. That can be a register (the default), the CFA (which replaces NVPTX-specific logic in DwarfCompileUnit), or a DW_OP_WASM_location descriptr. WebAssembly: Allow WebAssemblyFunctionInfo::getFrameRegister to return the correct virtual register instead of FP32/SP32 after WebAssemblyReplacePhysRegs has run. Make WebAssemblyExplicitLocals store the local it allocates for the frame register. Use this local information to implement getDwarfFrameBase The result is that the DW_AT_frame_base attribute is correctly encoded for each subprogram, and each param and local variable has a correct DW_AT_location that uses DW_OP_fbreg to refer to the frame base. This is a reland of rG3a05c396 with fixes for the expensive-checks and Windows builds Differential Revision: https://reviews.llvm.org/D71681
-
Frank Laub authored
Summary: Modernize some of the existing custom parsing code in the LLVM dialect. While this reduces some boilerplate code, it also reduces the precision of the diagnostic error messges. Reviewers: ftynse, nicolasvasilache, rriddle Reviewed By: rriddle Subscribers: merge_guards_bot, mehdi_amini, rriddle, jpienaar, burmako, shauheen, antiagainst, arpith-jacob, mgester, lucyrfox, liufengdb, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D72967
-
Matt Arsenault authored
-
Matt Arsenault authored
Currently there are 4 different mechanisms for controlling denormal flushing behavior, and about as many equivalent frontend controls. - AMDGPU uses the fp32-denormals and fp64-f16-denormals subtarget features - NVPTX uses the nvptx-f32ftz attribute - ARM directly uses the denormal-fp-math attribute - Other targets indirectly use denormal-fp-math in one DAGCombine - cl-denorms-are-zero has a corresponding denorms-are-zero attribute AMDGPU wants a distinct control for f32 flushing from f16/f64, and as far as I can tell the same is true for NVPTX (based on the attribute name). Work on consolidating these into the denormal-fp-math attribute, and a new type specific denormal-fp-math-f32 variant. Only ARM seems to support the two different flush modes, so this is overkill for the other use cases. Ideally we would error on the unsupported positive-zero mode on other targets from somewhere. Move the logic for selecting the flush mode into the compiler driver, instead of handling it in cc1. denormal-fp-math/denormal-fp-math-f32 are now both cc1 flags, but denormal-fp-math-f32 is not yet exposed as a user flag. -cl-denorms-are-zero, -fcuda-flush-denormals-to-zero and -fno-cuda-flush-denormals-to-zero will be mapped to -fp-denormal-math-f32=ieee or preserve-sign rather than the old attributes. Stop emitting the denorms-are-zero attribute for the OpenCL flag. It has no in-tree users. The meaning would also be target dependent, such as the AMDGPU choice to treat this as only meaning allow flushing of f32 and not f16 or f64. The naming is also potentially confusing, since DAZ in other contexts refers to instructions implicitly treating input denormals as zero, not necessarily flushing output denormals to zero. This also does not attempt to change the behavior for the current attribute. The LangRef now states that the default is ieee behavior, but this is inaccurate for the current implementation. The clang handling is slightly hacky to avoid touching the existing denormal-fp-math uses. Fixing this will be left for a future patch. AMDGPU is still using the subtarget feature to control the denormal mode, but the new attribute are now emitted. A future change will switch this and remove the subtarget features.
-
Matt Arsenault authored
The existing test is overly reliant on -mattr=-flat-for-global, and some missing optimizations to re-use.
-
Matt Arsenault authored
-
Reid Kleckner authored
Avoids 637 extra FoldingSet.h and Allocator.h includes. FoldingSet.h needs Allocator.h, which is relatively expensive.
-
Siva Chandra Reddy authored
Header files included wrongly using <...> are now included using the internal path names as the new unittest framework allows us to do so. Reviewers: phosek, abrachet Differential Revision: https://reviews.llvm.org/D72743
-
Nico Weber authored
It's been an empty target since r360498 and friends (`git log --grep='Move InstPrinter files to MCTargetDesc.' llvm/lib/Target`), but due to hwo the way these targets are structured it was silently an empty target without anyone noticing. No behavior change.
-
Richard Smith authored
A TemplateIdAnnotation represents only a template-id, not a nested-name-specifier plus a template-id. Don't make a redundant copy of the CXXScopeSpec and store it on the template-id annotation. This slightly improves error recovery by more properly handling the case where we would form an invalid CXXScopeSpec while parsing a typename specifier, instead of accidentally putting the token stream into a broken "annot_template_id with a scope specifier, but with no preceding annot_cxxscope token" state.
-
LLVM GN Syncbot authored
-
Nico Weber authored
-
Evgenii Stepanov authored
Summary: Detect a run of memory tagging instructions for adjacent stack frame slots, and replace them with a shorter instruction sequence * replace STG + STG with ST2G * replace STGloop + STGloop with STGloop This code needs to run when stack slot offsets are already known, but before FrameIndex operands in STG instructions are eliminated; that's the reason for the new hook in PrologueEpilogue. This change modifies STGloop and STZGloop pseudos to take the size as an immediate integer operand, and adds _untied variants of those pseudos that are allowed to take the base address as a FI operand. This is needed to simplify recognizing an STGloop instruction as operating on a stack slot post-regalloc. This improves memtag code size by ~0.25%, and it looks like an additional ~0.1% is possible by rearranging the stack frame such that consecutive STG instructions reference adjacent slots (patch pending). Reviewers: pcc, ostannard Subscribers: hiraditya, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D70286
-
Alina Sbirlea authored
Static method MemoryDependenceResults::getLoadLoadClobberFullWidthSize does not have or use any info specific to MemoryDependenceResults. Move it to its only user: VNCoercion.
-
James Nagurne authored
Runtimes variables in a multi-target environment are defined like: RUNTIMES_target_VARIABLE_NAME RUNTIMES_target+multi_VARIABLE_NAME In my case, I have a downstream runtimes cache that does the following: set(RUNTIMES_${target}+except_LIBCXXABI_ENABLE_EXCEPTIONS ON CACHE BOOL "") set(RUNTIMES_${target}_LIBCXX_ENABLE_EXCEPTIONS OFF CACHE BOOL "") I found that I was always getting the 'target' variable value (OFF) in my 'target+except' build, which was unexpected. This behavior was caused by the loop in llvm/runtimes/CMakeLists.txt that runs through all variable names, adding '-DVARIABLE_NAME=' options to the subsequent external project's cmake command. The issue is that the loop does a single pass, such that if the 'target' value appears in the cache after the 'target+except' value, the 'target' value will take precedence. I suggest in my change here that the more specific 'target+except' value should take precedence always, without relying on CMake cache ordering. Differential Revision: https://reviews.llvm.org/D71570 Patch By: JamesNagurne -
Peter Collingbourne authored
Differential Revision: https://reviews.llvm.org/D72896
-
Petr Hosek authored
This is an alternative to the continous mode that was implemented in D68351. This mode relies on padding and the ability to mmap a file over the existing mapping which is generally only available on POSIX systems and isn't suitable for other platforms. This change instead introduces the ability to relocate counters at runtime using a level of indirection. On every counter access, we add a bias to the counter address. This bias is stored in a symbol that's provided by the profile runtime and is initially set to zero, meaning no relocation. The runtime can mmap the profile into memory at abitrary location, and set bias to the offset between the original and the new counter location, at which point every subsequent counter access will be to the new location, which allows updating profile directly akin to the continous mode. The advantage of this implementation is that doesn't require any special OS support. The disadvantage is the extra overhead due to additional instructions required for each counter access (overhead both in terms of binary size and performance) plus duplication of counters (i.e. one copy in the binary itself and another copy that's mmapped). Differential Revision: https://reviews.llvm.org/D69740
-
Sergej Jaskiewicz authored
Summary: Depends on D72847 Reviewers: vvereschaka, aorlov, andreil99 Reviewed By: vvereschaka Subscribers: mgorny, kristof.beyls, cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D72850
-
Sergej Jaskiewicz authored
Summary: This patch adds a new target info object called LinuxRemoteTI. Unlike LinuxLocalTI, which asks the host system about various things like available locales, distribution name etc. which don't make sense if we're testing on a remote board, LinuxRemoteTI uses SSHExecutor to get information from the target system. Reviewers: jroelofs, ldionne, bcraig, EricWF, danalbert, mclow.lists Reviewed By: jroelofs Subscribers: christof, dexonsmith, libcxx-commits Tags: #libc Differential Revision: https://reviews.llvm.org/D72847
-
Jonas Devlieghere authored
-
Nicolas Vasilache authored
Summary: This is a simple extension to allow vectorization to work not only on GenericLinalgOp but more generally across named ops too. For now, this still only vectorizes matmul-like ops but is a step towards more generic vectorization of Linalg ops. Reviewers: ftynse Subscribers: mehdi_amini, rriddle, jpienaar, burmako, shauheen, antiagainst, arpith-jacob, mgester, lucyrfox, aartbik, liufengdb, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D72942
-
Eric Fiselier authored
Splits copy constructor up inlining short initialization, outlining long initialization into __init_long() which is the externally instantiated slow path initialization. Subsequently changing the copy ctor to be inlined (not externally instantiated) provides significant speed ups for short string initialization. Generated code given: void StringCopyCtor(void* mem, const std::string& s) { std::string*p = new(mem) std::string{s}; } asm: cmp byte ptr [rsi + 23], 0 js .LBB0_2 mov rax, qword ptr [rsi + 16] mov qword ptr [rdi + 16], rax movups xmm0, xmmword ptr [rsi] movups xmmword ptr [rdi], xmm0 ret .LBB0_2: jmp std::basic_string::__init_long # TAILCALL Benchmark: BM_StringCopy_Empty 5.19ns ± 6% 1.50ns ± 8% -71.02% (p=0.000 n=10+10) BM_StringCopy_Small 5.14ns ± 8% 1.53ns ± 7% -70.17% (p=0.000 n=10+10) BM_StringCopy_Large 18.9ns ± 0% 19.3ns ± 0% +1.92% (p=0.000 n=10+10) BM_StringCopy_Huge 309ns ± 1% 316ns ± 5% ~ (p=0.633 n=8+10) Patch from Martijn Vels (mvels@google.com) Reviewed as D72160. -
Peter Collingbourne authored
As of D70146 lld GCs comdats as a group and no longer considers notes in comdats to be GC roots, so we need to move the note to a comdat with a GC root section (.init_array) in order to prevent lld from discarding the note. Differential Revision: https://reviews.llvm.org/D72936
-
Sanjay Patel authored
-