- Oct 24, 2020
-
-
Duncan P. N. Exon Smith authored
Put the guts of `ComputeLineNumbers` into `LineOffsetMapping::get` and `LineOffsetMapping::LineOffsetMapping`. As a drive-by, store the number of lines directly in the bump-ptr-allocated array. Differential Revision: https://reviews.llvm.org/D89913
-
Arthur Eubanks authored
This reverts commit 3024fe5b. Causes major compile time regressions: https://llvm-compile-time-tracker.com/compare.php?from=3b8d8954bf2c192502d757019b9fe434864068e9&to=3024fe5b55ed72633915f613bd5e2826583c396f&stat=instructions
-
Alex Orlov authored
Runs an executable on a remote host. This is meant to be used as an executor when running the LLVM and the Libraries tests on a target. Reviewed By: vvereschaka Differential Revision: https://reviews.llvm.org/D89349
-
Lang Hames authored
This re-applies e2fceec2 with fixes. Apparently we already *do* support relaxation for ELF, so we need to make sure the test case allocates a slab at a fixed address, and that the R_X86_64_REX_GOTPCRELX test references an external that is guaranteed to be out of range.
-
Huihui Zhang authored
Immediate must be in an integer range [0,255] for umin/umax instruction. Extend pattern matching helper SelectSVEArithImm() to take in value type bitwidth when checking immediate value is in range or not. Reviewed By: sdesmalen Differential Revision: https://reviews.llvm.org/D89831
-
Duncan P. N. Exon Smith authored
It turns out that `FileInfo` *always* has a ContentCache. Clarify that in the code: - Update the private version of `SourceManager::createFileID` to take a `ContentCache&` instead of `ContentCache*`, and rename it to `createFileIDImpl` for clarity. - Change `FileInfo::getContentCache` to return a reference. Differential Revision: https://reviews.llvm.org/D89554
-
Victor Huang authored
In this patch, Predicates fix added for the following: * disable prefix-instrs will disable pcrelative-memops * set two predicates PairedVectorMemops and PrefixInstrs for PLXVP/PSTXVP definitions Differential Revision: https://reviews.llvm.org/D89727 Reviewed by: amyk, steven.zhang
-
LLVM GN Syncbot authored
-
vpykhtin authored
I was wrong in thinking that MRI.use_instructions return unique instructions and mislead Jay in his previous patch D64393. First loop counted more instructions than it was in reality and the second loop went beyond the basic block with that counter. I used Jay's previous code that relied on MRI.use_operands to constrain the number of instructions to check among. modifiesRegister is inlined to reduce the number of passes over instruction operands and added assert on BB end boundary. Differential Revision: https://reviews.llvm.org/D89386
-
Kadir Cetinkaya authored
Differential Revision: https://reviews.llvm.org/D90047
-
- Oct 23, 2020
-
-
Paulo Matos authored
Implementation of instructions table.get, table.set, table.grow, table.size, table.fill, table.copy. Missing instructions are table.init and elem.drop as they deal with element sections which are not yet implemented. Added more tests to tables.s Differential Revision: https://reviews.llvm.org/D89797
-
Sourabh Singh Tomar authored
Note: This patch reflects the work that can be upstreamed from PR's(merged): - https://github.com/flang-compiler/f18-llvm-project/pull/476 Reviewed By: kiranchandramohan, clementval Differential Revision: https://reviews.llvm.org/D90048
-
Jeremy Morse authored
Deciding where to place debugging instructions when normal instructions sink between blocks is difficult -- see PR44117. Dealing with this with instruction-referencing variable locations is simple: we just tolerate DBG_INSTR_REFs referring to values that haven't been computed yet. This patch adds support into InstrRefBasedLDV to record when a variable value appears in the middle of a block, and should have a DBG_VALUE added when it appears (a debug use before def). While described simply, this relies heavily on the value-propagation algorithm in InstrRefBasedLDV. The implementation doesn't attempt to verify the location of a value unless something non-trivial occurs to merge variable values in vlocJoin. This means that a variable with a value that has no location can retain it across all control flow (including loops). It's only when another debug instruction specifies a different variable value that we have to check, and find there's no location. This property means that if a machine value is defined in a block dominated by a DBG_INSTR_REF that refers to it, all the successor blocks can automatically find a location for that value (if it's not clobbered). Thus in a sense, InstrRefBasedLDV is already supporting and implementing use-before-defs. This patch allows us to specify a variable location in the block where it's defined. When loading live-in variable locations, TransferTracker currently discards those where it can't find a location for the variable value. However, we can tell from the machine value number whether the value is defined in this block. If it is, add it to a set of use-before-def records. Then, once the relevant instruction has been processed, emit a DBG_VALUE immediately after it. Differential Revision: https://reviews.llvm.org/D85775
-
Jay Foad authored
This follows on from D89558 which added the new intrinsic and D88955 which added similar combines for llvm.amdgcn.fmul.legacy. Differential Revision: https://reviews.llvm.org/D90028
-
Denis Antrushin authored
Downstream testing revealed some problems with this patch. Reverting while investigating. This reverts commit 2b96dceb.
-
Nicolai Hähnle authored
Apparently there are some Microsoft headers which `#define interface struct`. This method is only used in pending changes so far. Change-Id: Ic68fe8e1958ec9b015f817ee218431f4146b888a
-
Sourabh Singh Tomar authored
Note: This patch reflects the work that can be upstreamed from PR's(merged): 1. https://github.com/flang-compiler/f18-llvm-project/pull/456 2. https://github.com/flang-compiler/f18-llvm-project/pull/485 Also replaced TODO with new TODO. Reviewed By: kiranchandramohan Differential Revision: https://reviews.llvm.org/D89769
-
Simon Pilgrim authored
Pulled from bit twiddling hacks webpage
-
Simon Pilgrim authored
Use typical codegen for the traditional pairwise lgN bitreverse algorithm
-
Simon Pilgrim authored
-
Paul C. Anagnostopoulos authored
Differential Revision: https://reviews.llvm.org/D89814
-
Matt Arsenault authored
-
Matt Arsenault authored
This will be relaxed to insert a nop if the offset hits the bad value, so over estimate branch instruction sizes.
-
Valentin Clement authored
wait and atomic directives are represented by OpenACCWaitConstruct, OpenACCAtmicConstruct in the parser. Those contrsuct were not taken into account in the semantic check so far. Reviewed By: kiranchandramohan Differential Revision: https://reviews.llvm.org/D88628
-
David Van Cleve authored
Export TemplateArgumentMatcher so clients defining custom matchers don't need to use the internal namespace This change adds another export, `using TemplateArgumentMatcher = internal::Matcher<TemplateArgument>;`, to the collection of exports that put instantiations of the `clang::ast_matchers::internal::Matcher` into the `clang::ast_matchers` namespace. This makes it possible to define custom TemplateArgument matchers without reaching into the `internal` namespace. Reviewed By: klimek Differential Revision: https://reviews.llvm.org/D89920
-
Frederik Gossen authored
-
Evgeny Leviant authored
Patch adds few/load store instructions which have custom sched classes in cortex-a57 model.
-
Jeremy Morse authored
Handle DBG_INSTR_REF instructions in LiveDebugValues, to determine and propagate variable locations. The logic is fairly straight forwards: Collect a map of debug-instruction-number to the machine value numbers generated in the first walk through the function. When building the variable value transfer function and we see a DBG_INSTR_REF, look up the instruction it refers to, and pick the machine value number it generates, That's it; the rest of LiveDebugValues continues as normal. Awkwardly, there are two kinds of instruction numbering happening here: the offset into the block (which is how machine value numbers are determined), and the numbers that we label instructions with when generating DBG_INSTR_REFs. I've also restructured the TransferTracker redefVar code a little, to separate some DBG_VALUE specific operations into its own method. The changes around redefVar should be largely NFC, while allowing DBG_INSTR_REFs to specify a value number rather than just a location. Differential Revision: https://reviews.llvm.org/D85771
-
Nico Weber authored
This reverts commit b3ca53e1. This reverts commit 8b7dac81. This reverts commit 37c030f8.
-
Louis Dionne authored
This is a massive revert of the following commits (from most revent to oldest): 2b9b7b57. 529ac331 28270234 69c20872 b5aa6744 5d796645 After checking-in the __config_site change, a lot of things started breaking due to widespread reliance on various aspects of libc++'s build, notably the fact that we can include the headers from the source tree, but also reliance on various "internal" CMake variables used by the runtimes build and compiler-rt. These were unintended consequences of the change, and after two days, we still haven't restored all the bots to being green. Instead, now that I understand what specific areas this will blow up in, I should be able to chop up the patch into smaller ones that are easier to digest. See https://reviews.llvm.org/D89041 for...
-
Chen Zheng authored
Reviewed By: samparker Differential Revision: https://reviews.llvm.org/D89665
-
Sam McCall authored
We only need to version these messages if they actually diverge. Unlike the service, the namespace name isn't part of the wire format. clangd-index-server was broken by 81e5f298 as the namespace names weren't updated there, this fixes it (by adding them for the service, and not requiring them elsewhere).
-
Stefan Pintilie authored
Add support to LLD for PC Relative Thread Local Storage for Local Dynamic. This patch adds support for two relocations: R_PPC64_GOT_TLSLD_PCREL34 and R_PPC64_DTPREL34. The Local Dynamic code is: ``` pla r3, x@got@tlsld@pcrel R_PPC64_GOT_TLSLD_PCREL34 bl __tls_get_addr@notoc(x@tlsld) R_PPC64_TLSLD R_PPC64_REL24_NOTOC ... paddi r9, r3, x@dtprel R_PPC64_DTPREL34 ``` After relaxation to Local Exec: ``` paddi r3, r13, 0x1000 nop ... paddi r9, r3, x@dtprel R_PPC64_DTPREL34 ``` Reviewed By: NeHuang, sfertile Differential Revision: https://reviews.llvm.org/D87504 -
Frederik Gossen authored
Extract buffer alias analysis from buffer placement. Differential Revision: https://reviews.llvm.org/D89902
-
Sam McCall authored
This allows it to have a separate namespace (grpc versioned service) without putting versioning info on all of the other protos (before we need it). clang-index-server is still broken (from 81e5f298). Differential Revision: https://reviews.llvm.org/D90031
-
Sanjay Patel authored
As discussed in D89952, instcombine can sometimes find a way to reduce similar patterns, but it is incomplete. InstSimplify uses the computeConstantRange() ValueTracking analysis via simplifyICmpWithConstant(), so we just need to fill in the max value of cttz to process any "icmp pred cttz(X), C" pattern (the min value is initialized to zero automatically). https://alive2.llvm.org/ce/z/Z_SLWZ Follow-up to D89976.
-
Sanjay Patel authored
As discussed in D89952, instcombine can sometimes find a way to reduce similar patterns, but it is incomplete. InstSimplify uses the computeConstantRange() ValueTracking analysis via simplifyICmpWithConstant(), so we just need to fill in the max value of ctlz to process any "icmp pred ctlz(X), C" pattern (the min value is initialized to zero automatically). Follow-up to D89976.
-
Sanjay Patel authored
This is a search-and-replace of f6cb7f37
-
Sanjay Patel authored
This is a search-and-replace of f6cb7f37.
-
Kirill Bobyrev authored
`llvm::sys::path` is used a lot in the remote index marshalling code. We can save space by avoiding spelling it out explicitly for most functions and times. Reviewed By: kadircet Differential Revision: https://reviews.llvm.org/D90016
-