- Jan 20, 2020
-
-
Florian Hahn authored
Currently PromoteMaskArithemtic only looks at a single operation to skip casts. This means we miss cases where we combine multiple masks. This patch updates PromoteMaskArithemtic to try to recursively promote AND/XOR/AND nodes that terminate in truncates of the right size or constant vectors. Reviewers: craig.topper, RKSimon, spatel Reviewed By: RKSimon Differential Revision: https://reviews.llvm.org/D72524
-
Fangrui Song authored
If Start!=0, adjustBlockOffsets() may unnecessarily adjust the offset of Start. There is no correctness issue, but it can create more block splits.
-
Nico Weber authored
-
Fangrui Song authored
Except AMDGPU/R600RegisterInfo (a bunch of MIR tests seem to have problems), every target overrides it with true. PostMachineScheduler requires livein information. Not providing it can cause assertion failures in ScheduleDAGInstrs::addSchedBarrierDeps().
-
Lang Hames authored
The MaterializationResponsibility::defineMaterializing method allows clients to add new definitions that are in the process of being materialized to the JIT. This patch adds support to defineMaterializing for symbols with weak linkage where the new definitions may be rejected if another materializer concurrently defines the same symbol. If a weak symbol is rejected it will not be added to the MaterializationResponsibility's responsibility set. Clients can check for membership in the responsibility set via the MaterializationResponsibility::getSymbols() method before resolving any such weak symbols. This patch also adds code to RTDyldObjectLinkingLayer to tag COFF comdat symbols introduced during codegen as weak, on the assumption that these are COFF comdat constants. This fixes http://llvm.org/PR40074.
-
Michael Liao authored
-
Reid Kleckner authored
These escapes haven't been necessary since f8b51c5f. Remove them to declutter the docs.
-
- Jan 19, 2020
-
-
mydeveloperday authored
Summary: This diff expands the SpacesAroundConditions option added in D68346 to include adding spaces to catch statements. Reviewed By: MyDeveloperDay Patch by: timwoj Differential Revision: https://reviews.llvm.org/D72793
-
mydeveloperday authored
Summary: The documentation for IndentCaseLabels claimed that the "Switch statement body is always indented one level more than case labels". This is technically false for the code block immediately following the label. Its closing bracket aligns with the start of the label. If the case label are not indented, it leads to a style where the closing bracket of the block aligns with the closing bracket of the switch statement, which can be hard to parse. This change introduces a new option, IndentCaseBlocks, which when true treats the block as a scope block (which it technically is). (Note: regenerated ClangFormatStyleOptions.rst using tools/dump_style.py) Reviewed By: MyDeveloperDay Patch By: capn Tags: #clang-format, #clang Differential Revision: https://reviews.llvm.org/D72276
-
mydeveloperday authored
Reviewed By: MyDeveloperDay, krasimir Patch By: jbcoe Differential Revision: https://reviews.llvm.org/D72150
-
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
-