- Jul 14, 2017
-
-
Sam Parker authored
Constants are crucial for code size in the ARM Thumb-1 instruction set. The 16 bit instruction size often does not offer enough space for immediate arguments. This means that additional instructions are frequently used to load constants into registers. Since constants are hoisted, this can lead to significant register spillage if they are used multiple times in a single function. This can be avoided by rematerialization, i.e. recomputing a constant instead of reloading it from the stack. This patch fixes the rematerialization of literal pool loads in the ARM Thumb instruction set. Patch by Philip Ginsbach Differential Revision: https://reviews.llvm.org/D33936 llvm-svn: 308004
-
Max Kazantsev authored
When iterating through loop for (int i = INT_MAX; i > 0; i--) We fail to generate the pre-loop for it. It happens because we use the overflown value in a comparison predicate when identifying whether or not we need it. In old logic, we used SLE predicate against Greatest value which exceeds all seen values of the IV and might be overflown. Now we use the GreatestSeen value of this IV with SLT predicate. Also added a test that ensures that a pre-loop is generated for such loops. Differential Revision: https://reviews.llvm.org/D35347 llvm-svn: 308001
-
Adam Nemet authored
Without this, there was no progress shown during parsing but only during rendering on macOS. llvm-svn: 308000
-
Eric Christopher authored
llvm-svn: 307999
-
Dinar Temirbulatov authored
llvm-svn: 307996
-
Eric Christopher authored
llvm-svn: 307987
-
Leo Li authored
Summary: This makes sure the correct lib path is being used when `CMAKE_CFG_INTDIR` or `LLVM_LIBDIR_SUFFIX` is set. Reviewers: beanz Subscribers: mgorny, srhines, pirama, llvm-commits Differential Revision: https://reviews.llvm.org/D35318 llvm-svn: 307985
-
Kostya Serebryany authored
llvm-svn: 307981
-
Kostya Serebryany authored
llvm-svn: 307980
-
Matt Arsenault authored
This is necessary to pass the kernarg segment pointer to callee functions. Also don't unconditionally enable for kernels. llvm-svn: 307978
-
Kostya Serebryany authored
llvm-svn: 307977
-
Stanislav Mekhanoshin authored
Since GFX9 supports denorm modes for v_min_f32/v_max_f32 that is possible to further optimize fcanonicalize and remove it if applied to min/max given their operands are known not to be an sNaN or that sNaNs are not supported. Additionally we can remove fcanonicalize if denorms are supported for the VT and we know that its argument is never a NaN. Differential Revision: https://reviews.llvm.org/D35335 llvm-svn: 307976
-
Spyridoula Gravani authored
This patch adds verification checks for the unit header chain in the .debug_info section. Specifically, for each unit in the .debug_info section, the verifier checks that: The unit length is valid (i.e. the unit can actually fit in the .debug_info section) The dwarf version of the unit is valid The address size is valid (4 or 8) The unit type (if the unit is in dwarf5) is valid The debug_abbrev_offset is valid llvm-svn: 307975
-
Jakub Kuderski authored
This fixes warnings on some buildbots. llvm-svn: 307974
-
Kostya Serebryany authored
llvm-svn: 307973
-
Reid Kleckner authored
llvm-svn: 307971
-
Reid Kleckner authored
Binary streams are an abstraction over a discontiguous buffer. To write a discontiguous buffer, we want to copy each contiguous chunk individually. Currently BinaryStreams do not expose a way to iterate over the chunks, so the code repeatedly calls readLongestContiguousChunk() with an increasing offset. In order to lookup the chunk by offset, we would iterate the items list to figure out which chunk the offset is within. This is obviously O(n^2). Instead, pre-compute a table of offsets and do a binary search to figure out which chunk to use. This is still only an O(n^2) to O(n log n) improvement, but it's a very local fix that seems worth doing. This improves self-linking lld.exe with PDBs from 90s to 10s. llvm-svn: 307970
-
- Jul 13, 2017
-
-
Jakub Kuderski authored
Update.Arc of type Arc caused a warning on some buildbots. llvm-svn: 307968
-
Matt Arsenault authored
Previously this wouldn't detect used features indirectly used in callee functions. llvm-svn: 307967
-
Jakub Kuderski authored
Summary: This patch introduces a new testing utility for building and modifying CFG -- CFGBuilder. The primary use case for the utility is testing the upcoming incremental dominator tree update API. The current design provides a simple mechanism of constructing arbitrary graphs and then applying series of updates to them. CFGBuilder takes care of creating empty functions, connecting and disconnecting basic blocks. Under the hood it uses SwitchInst and UnreachableInst. It will be also possible to create a thin wrapper over CFGBuilder for parsing string input and to hook it up to other textual tools (e.g. opt used with FileCheck). Reviewers: dberlin, sanjoy, grosser, dblaikie Reviewed By: dblaikie Subscribers: davide, mgorny, llvm-commits Differential Revision: https://reviews.llvm.org/D34798 llvm-svn: 307960
-
Jakub Kuderski authored
Summary: DominatorTreeBase and related classes used overcomplicated template machinery. This patch simplifies them and gets rid of DominatorTreeBaseTraits and DominatorTreeBaseByTraits, which weren't actually used outside the DomTree construction. Reviewers: dberlin, sanjoy, davide, grosser Reviewed By: dberlin, davide, grosser Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D35285 llvm-svn: 307953
-
Lang Hames authored
interface has been errorized. llvm-svn: 307952
-
Sanjay Patel authored
llvm-svn: 307951
-
Jakub Kuderski authored
Summary: This patch splits the SemiNCA algorithm into smaller functions. It also adds a new debug macro. In order to perform incremental updates, we need to be able to refire SemiNCA on a subset of CFG nodes (determined by a DFS walk results). We also need to skip nodes that are not deep enough in a DomTree. Reviewers: dberlin, davide, sanjoy, grosser Reviewed By: dberlin, davide Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D35282 llvm-svn: 307950
-
Jakub Kuderski authored
llvm-svn: 307947
-
Reid Kleckner authored
Summary: This fixes type indices for SDK or CRT static archives. Previously we'd try to look next to the archive object file path, which would not exist on the local machine. Also error out if we can't resolve a type server record. Hypothetically we can recover from this error by discarding debug info for this object, but that is not yet implemented. Reviewers: ruiu, amccarth Subscribers: aprantl, hiraditya, llvm-commits Differential Revision: https://reviews.llvm.org/D35369 llvm-svn: 307946
-
Jakub Kuderski authored
in MachineCombiner.cpp. llvm-svn: 307940
-
Simon Dardis authored
This reverts r307836, it broke one of the buildbots. Reverting while I investigate. llvm-svn: 307939
-
George Karpenkov authored
Debugging LIT scripts can be rather painful, as LIT directly does not specify which line has failed. Rather, FileCheck is expected to report the failing location, but it can be often ambiguous if multiple commands are tested against the same prefix. This change adds a -vv option, which echoes all output. Then detecting the error becomes straightforward: last printed line is the failing one. Of course, it could be desired to try to get failing line number directly from bash, but it involves excessive hacks on older bash versions (cf. https://stackoverflow.com/questions/24398691/how-to-get-the-real-line-number-of-a-failing-bash-command) Differential Revision: https://reviews.llvm.org/D35330 llvm-svn: 307938
-
Andrew Zhogin authored
llvm-svn: 307937
-
Jakub Kuderski authored
Summary: This patch improves verification by making `verifyReachablility` look for CFG not found in the DomTree. It also makes the verification work with postdominators by handling virtual root. Reviewers: dberlin, davide, grosser, sanjoy Reviewed By: dberlin Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D35279 llvm-svn: 307936
-
Krzysztof Parzyszek authored
This cleans up the vector shift patterns. llvm-svn: 307935
-
Nemanja Ivanovic authored
As outlined in the PR, we didn't ensure that displacements for DQ-Form instructions are multiples of 16. Since the instruction encoding encodes a quad-word displacement, a sub-16 byte displacement is meaningless and ends up being encoded incorrectly. Fixes https://bugs.llvm.org/show_bug.cgi?id=33671. Differential Revision: https://reviews.llvm.org/D35007 llvm-svn: 307934
-
Sanjay Patel authored
Also, remove unnecessary function attributes. llvm-svn: 307930
-
Simon Pilgrim authored
llvm-svn: 307929
-
Martin Storsjö authored
Pass parameters properly in calls to such functions (pass all floats in integer registers), and handle va_start properly (allocate stack immediately below the arguments on the stack, to save the register arguments into a single continuous array). Differential Revision: https://reviews.llvm.org/D35006 llvm-svn: 307928
-
Martin Storsjö authored
Previously such relocations fell into the last case for local symbols, using the relocation addend as symbol index, leading to a crash. Differential Revision: https://reviews.llvm.org/D35239 llvm-svn: 307927
-
Rafael Espindola authored
A MCFixup might not even be in an instruction. llvm-svn: 307926
-
Reid Kleckner authored
llvm-svn: 307925
-
Frederich Munch authored
Summary: Completes the set. Reviewers: ruiu Reviewed By: ruiu Subscribers: ruiu, llvm-commits Differential Revision: https://reviews.llvm.org/D35278 llvm-svn: 307922
-