- Jan 19, 2020
-
-
LLVM GN Syncbot authored
-
Nico Weber authored
-
Fangrui Song authored
This intention is to move patchable-function before aarch64-branch-targets (configured in AArch64PassConfig::addPreEmitPass) so that we emit BTI before NOPs (see https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92424). This also allows addPreEmitPass() passes to know the precise instruction sizes if they want. Tried x86-64 Debug/Release builds of ccls with -fxray-instrument -fxray-instruction-threshold=1. No output difference with this commit and the previous commit.
-
Fangrui Song authored
Otherwise they may be picked as the delay slot by mips-delay-slot-filler, if we move patchable-function before mips-delay-slot-filler.
-
Fangrui Song authored
[DebugInfo][test] Change two MIR tests to use -start-before=livedebugvalues instead of -start-after=patchable-function To break order dependency between livedebugvalues and patchable-function.
-
Craig Topper authored
Summary: I think whatever problem the gluing was fixing has long since been fixed. We don't have any of the restrictions on FP stack stuff that existed back when this was first added. I had to change which type we use for FILD in BuildFILD when X86 was enabled because most of the isel patterns block f32/f64 instructions when SSE1/SSE2 are enabled. So I needed to use the f80 pattern, but this shouldn't have an effect the generated code since there is only one FILD instruction anyway. We already use f80 explicitly in other other places. Reviewers: RKSimon, spatel Reviewed By: RKSimon Subscribers: andrew.w.kaylor, scanon, hiraditya, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D72805
-
Fangrui Song authored
The x86-64 General Dynamic TLS code sequence uses prefixes to allow linker relaxation. Adding segment override prefix or NOPs can break linker relaxation (ld -pie/-no-pie). i386 General Dynamic and x86-64 Local Dynamic do not use prefixes, but for simplicity, just disable auto padding consistently. Reviewed By: skan, LuoYuanke Differential Revision: https://reviews.llvm.org/D72878
-
Fangrui Song authored
The code added in r98579 is dead now.
-
Saar Raz authored
D50360 caused some platforms to not compile due to a parameter with the name of a type. Rename the parameter.
-
Saar Raz authored
Implement support for C++2a requires-expressions. Re-commit after compilation failure on some platforms due to alignment issues with PointerIntPair. Differential Revision: https://reviews.llvm.org/D50360
-
Fangrui Song authored
-
Jonas Devlieghere authored
Resolves PR44055
-
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
-