Revision tags: llvmorg-5.0.1-rc1 |
|
#
615eb470 |
| 15-Oct-2017 |
Aaron Ballman <aaron@aaronballman.com> |
Reverting r315590; it did not include changes for llvm-tblgen, which is causing link errors for several people.
Error LNK2019 unresolved external symbol "public: void __cdecl `anonymous namespace'::
Reverting r315590; it did not include changes for llvm-tblgen, which is causing link errors for several people.
Error LNK2019 unresolved external symbol "public: void __cdecl `anonymous namespace'::MatchableInfo::dump(void)const " (?dump@MatchableInfo@?A0xf4f1c304@@QEBAXXZ) referenced in function "public: void __cdecl `anonymous namespace'::AsmMatcherEmitter::run(class llvm::raw_ostream &)" (?run@AsmMatcherEmitter@?A0xf4f1c304@@QEAAXAEAVraw_ostream@llvm@@@Z) llvm-tblgen D:\llvm\2017\utils\TableGen\AsmMatcherEmitter.obj 1
llvm-svn: 315854
show more ...
|
#
3e0199f7 |
| 12-Oct-2017 |
Don Hinton <hintonda@gmail.com> |
[dump] Remove NDEBUG from test to enable dump methods [NFC]
Summary: Add LLVM_FORCE_ENABLE_DUMP cmake option, and use it along with LLVM_ENABLE_ASSERTIONS to set LLVM_ENABLE_DUMP.
Remove NDEBUG and
[dump] Remove NDEBUG from test to enable dump methods [NFC]
Summary: Add LLVM_FORCE_ENABLE_DUMP cmake option, and use it along with LLVM_ENABLE_ASSERTIONS to set LLVM_ENABLE_DUMP.
Remove NDEBUG and only use LLVM_ENABLE_DUMP to enable dump methods.
Move definition of LLVM_ENABLE_DUMP from config.h to llvm-config.h so it'll be picked up by public headers.
Differential Revision: https://reviews.llvm.org/D38406
llvm-svn: 315590
show more ...
|
#
8d8d201c |
| 05-Oct-2017 |
Karl-Johan Karlsson <karl-johan.karlsson@ericsson.com> |
[DebugInfo] Insert DEBUG_VALUEs after each register redefinition
Summary: When reinserting debug values after register allocation, make sure to insert debug values after each redefinition of debug v
[DebugInfo] Insert DEBUG_VALUEs after each register redefinition
Summary: When reinserting debug values after register allocation, make sure to insert debug values after each redefinition of debug value register in the slot index range. The reason for this is that DwarfDebug will end the range of a debug variable when the physical reg is defined. For instructions with e.g. tied operands this result in prematurely ended debug range.
This resolves pr34545
Patch by Karl-Johan Karlsson and Bjorn Pettersson
Reviewers: rnk, aprantl
Reviewed By: rnk
Subscribers: bjope, llvm-commits
Differential Revision: https://reviews.llvm.org/D38229
llvm-svn: 314974
show more ...
|
#
b4569de7 |
| 03-Oct-2017 |
Reid Kleckner <rnk@google.com> |
Implement David Blaikie's suggestion for comparison operators
llvm-svn: 314822
|
#
04e25e00 |
| 03-Oct-2017 |
Reid Kleckner <rnk@google.com> |
[DebugInfo] Correctly coalesce DBG_VALUEs that mix direct and indirect values
Summary: This should fix a regression introduced by r313786, which switched from MachineInstr::isIndirectDebugValue() to
[DebugInfo] Correctly coalesce DBG_VALUEs that mix direct and indirect values
Summary: This should fix a regression introduced by r313786, which switched from MachineInstr::isIndirectDebugValue() to checking if operand 1 is an immediate. I didn't have a test case for it until now.
A single UserValue, which approximates a user variable, may have many DBG_VALUE instructions that disagree about whether the variable is in memory or in a virtual register. This will become much more common once we have llvm.dbg.addr, but you can construct such a test case manually today with llvm.dbg.value.
Before this change, we would get two UserValues: one for direct and one for indirect DBG_VALUE instructions describing the same variable. If we build separate interval maps for direct and indirect locations, we will end up accidentally coalescing identical DBG_VALUE intervals that need to remain separate because they are broken up by intervals of the opposite direct-ness.
Reviewers: aprantl
Subscribers: llvm-commits, hiraditya
Differential Revision: https://reviews.llvm.org/D37932
llvm-svn: 314819
show more ...
|
#
715a5efa |
| 28-Sep-2017 |
Bjorn Pettersson <bjorn.a.pettersson@ericsson.com> |
[DebugInfo] Do not extend range for physreg in LiveDebugVariables
Summary: A DBG_VALUE that is referring to a physical register is valid up until the next def of the register, or the end of the basi
[DebugInfo] Do not extend range for physreg in LiveDebugVariables
Summary: A DBG_VALUE that is referring to a physical register is valid up until the next def of the register, or the end of the basic block that it belongs to.
LiveDebugVariables is computing live intervals (slot index ranges) for DBG_VALUE instructions, before regalloc, in order to be able to re-insert DBG_VALUE instructions again after regalloc. When the DBG_VALUE is mapping a variable to a physical register we do not need to compute the range. We should simply re-insert the DBG_VALUE at the start position.
The problem that was found, resulting in this patch, was a situation when the DBG_VALUE was the last real use of the physical register. The computeIntervals/extendDef methods extended the range to cover the whole basic block, even though the physical register very well could be allocated to some virtual register inside the basic block. So the extended range could not be trusted.
This patch is a preparation for https://reviews.llvm.org/D38229, where the goal is to insert DBG_VALUE after each new definition of a variable, even if the virtual registers that the variable was connected to has been coalesced into using the same physical register (e.g. due to two address instructions). For more info see https://bugs.llvm.org/show_bug.cgi?id=34545
Reviewers: aprantl, rnk, echristo
Reviewed By: aprantl
Subscribers: Ka-Ka, llvm-commits
Differential Revision: https://reviews.llvm.org/D38140
llvm-svn: 314414
show more ...
|
#
53eb6371 |
| 27-Sep-2017 |
Don Hinton <hintonda@gmail.com> |
Cleanup some problems with LLVM_ENABLE_DUMP in release builds, and always set LLVM_ENABLE_DUMP=ON for +Asserts builds.
Differential Revision: https://reviews.llvm.org/D38306
llvm-svn: 314346
|
#
4e040287 |
| 20-Sep-2017 |
Reid Kleckner <rnk@google.com> |
Re-land "[DebugInfo] Insert DW_OP_deref when spilling indirect DBG_VALUEs"
After r313775, it's easier to maintain a parallel BitVector of spilled locations indexed by location number.
I wasn't able
Re-land "[DebugInfo] Insert DW_OP_deref when spilling indirect DBG_VALUEs"
After r313775, it's easier to maintain a parallel BitVector of spilled locations indexed by location number.
I wasn't able to build a good reduced test case for this iteration of the bug, but I added a more direct assertion that spilled values must use frame index locations. If this bug reappears, it won't only fire on the NEON vector code that we detected it on, but on medium-sized integer-only programs as well.
llvm-svn: 313786
show more ...
|
#
92687d45 |
| 20-Sep-2017 |
Reid Kleckner <rnk@google.com> |
[DebugInfo] Use a MapVector to coalesce MachineOperand locations
Summary: The new code should be linear in the number of DBG_VALUEs, while the old code was quadratic. NFC intended.
This is also hop
[DebugInfo] Use a MapVector to coalesce MachineOperand locations
Summary: The new code should be linear in the number of DBG_VALUEs, while the old code was quadratic. NFC intended.
This is also hopefully a more direct expression of the problem, which is to:
1. Rewrite all virtual register operands to stack slots or physical registers 2. Uniquely number those machine operands, assigning them location numbers 3. Rewrite all uses of the old location numbers in the interval map to use the new location numbers
In r313400, I attempted to track which locations were spilled in a parallel bitvector indexed by location number. My code was broken because these location numbers are not stable during rewriting.
Reviewers: aprantl, hans
Subscribers: hiraditya, llvm-commits
Differential Revision: https://reviews.llvm.org/D38068
llvm-svn: 313775
show more ...
|
#
ffdf0874 |
| 19-Sep-2017 |
Reid Kleckner <rnk@google.com> |
Revert "[DebugInfo] Insert DW_OP_deref when spilling indirect DBG_VALUEs"
This reverts r313640, originally r313400, one more time for essentially the same issue. My BitVector of spilled location num
Revert "[DebugInfo] Insert DW_OP_deref when spilling indirect DBG_VALUEs"
This reverts r313640, originally r313400, one more time for essentially the same issue. My BitVector of spilled location numbers isn't working because we coalesce identical DBG_VALUE locations as we rewrite them, invalidating the location numbers used to index the BitVector.
llvm-svn: 313679
show more ...
|
#
86c74dd7 |
| 19-Sep-2017 |
Reid Kleckner <rnk@google.com> |
Re-land r313400 "[DebugInfo] Insert DW_OP_deref when spilling indirect DBG_VALUEs"
I forgot to zero out the BitVector when reusing it between UserValues.
Later uses of the same location number for
Re-land r313400 "[DebugInfo] Insert DW_OP_deref when spilling indirect DBG_VALUEs"
I forgot to zero out the BitVector when reusing it between UserValues.
Later uses of the same location number for a different UserValue would falsely indicate that they were spilled. Usually this would lead to incorrect debug info, but in some cases they would indicate something nonsensical like a memory location based on a vector register (Q8 on ARM).
llvm-svn: 313640
show more ...
|
#
4de620ab |
| 18-Sep-2017 |
Hans Wennborg <hans@hanshq.net> |
Revert r313400 "[DebugInfo] Insert DW_OP_deref when spilling indirect DBG_VALUEs"
This caused asserts in Chromium. See http://crbug.com/766261
> Summary: > This comes up in optimized debug info for
Revert r313400 "[DebugInfo] Insert DW_OP_deref when spilling indirect DBG_VALUEs"
This caused asserts in Chromium. See http://crbug.com/766261
> Summary: > This comes up in optimized debug info for C++ programs that pass and > return objects indirectly by address. In these programs, > llvm.dbg.declare survives optimization, which causes us to emit indirect > DBG_VALUE instructions. The fast register allocator knows to insert > DW_OP_deref when spilling indirect DBG_VALUE instructions, but the > LiveDebugVariables did not until this change. > > This fixes part of PR34513. I need to look into why this doesn't work at > -O0 and I'll send follow up patches to handle that. > > Reviewers: aprantl, dblaikie, probinson > > Subscribers: qcolombet, hiraditya, llvm-commits > > Differential Revision: https://reviews.llvm.org/D37911
llvm-svn: 313589
show more ...
|
#
eed09732 |
| 15-Sep-2017 |
Reid Kleckner <rnk@google.com> |
Name the sentinel value used for the location number of the undefined register NFC
llvm-svn: 313405
|
#
3a66c1cb |
| 15-Sep-2017 |
Reid Kleckner <rnk@google.com> |
[DebugInfo] Insert DW_OP_deref when spilling indirect DBG_VALUEs
Summary: This comes up in optimized debug info for C++ programs that pass and return objects indirectly by address. In these programs
[DebugInfo] Insert DW_OP_deref when spilling indirect DBG_VALUEs
Summary: This comes up in optimized debug info for C++ programs that pass and return objects indirectly by address. In these programs, llvm.dbg.declare survives optimization, which causes us to emit indirect DBG_VALUE instructions. The fast register allocator knows to insert DW_OP_deref when spilling indirect DBG_VALUE instructions, but the LiveDebugVariables did not until this change.
This fixes part of PR34513. I need to look into why this doesn't work at -O0 and I'll send follow up patches to handle that.
Reviewers: aprantl, dblaikie, probinson
Subscribers: qcolombet, hiraditya, llvm-commits
Differential Revision: https://reviews.llvm.org/D37911
llvm-svn: 313400
show more ...
|
Revision tags: llvmorg-5.0.0, llvmorg-5.0.0-rc5, llvmorg-5.0.0-rc4, llvmorg-5.0.0-rc3 |
|
#
5df3d890 |
| 24-Aug-2017 |
Eugene Zelenko <eugene.zelenko@gmail.com> |
[CodeGen] Fix some Clang-tidy modernize-use-using and Include What You Use warnings; other minor fixes (NFC).
llvm-svn: 311703
|
Revision tags: llvmorg-5.0.0-rc2 |
|
#
10f740df |
| 03-Aug-2017 |
Robert Lougher <rob.lougher@gmail.com> |
[LiveDebugVariables] Use lexical scope to trim debug value live intervals
The debug value live intervals computed by Live Debug Variables may extend beyond the range of the debug location's lexical
[LiveDebugVariables] Use lexical scope to trim debug value live intervals
The debug value live intervals computed by Live Debug Variables may extend beyond the range of the debug location's lexical scope. In this case, splitting of an interval can result in an interval outside of the scope being created, causing extra unnecessary DBG_VALUEs to be emitted. To prevent this, trim the intervals to the lexical scope.
This resolves PR33730.
Reviewers: aprantl
Differential Revision: https://reviews.llvm.org/D35953
llvm-svn: 309933
show more ...
|
#
1b09a37c |
| 31-Jul-2017 |
Florian Hahn <florian.hahn@arm.com> |
Extend ifndef to printDebugLoc.
GCC7 did not warn about that, but Clang does.
llvm-svn: 309573
|
#
94b8a87c |
| 31-Jul-2017 |
Florian Hahn <florian.hahn@arm.com> |
Extend ifdefs to more unused helper functions.
This fixes a buildbot failure with -Werror introduced by r309553
llvm-svn: 309572
|
#
6b3216aa |
| 31-Jul-2017 |
Florian Hahn <florian.hahn@arm.com> |
Guard print() functions only used by dump() functions.
Summary: Since r293359, most dump() function are only defined when `!defined(NDEBUG) || defined(LLVM_ENABLE_DUMP)` holds. print() functions on
Guard print() functions only used by dump() functions.
Summary: Since r293359, most dump() function are only defined when `!defined(NDEBUG) || defined(LLVM_ENABLE_DUMP)` holds. print() functions only used by dump() functions are now unused in release builds, generating lots of warnings. This patch only defines some print() functions if they are used.
Reviewers: MatzeB
Reviewed By: MatzeB
Subscribers: arsenm, mzolotukhin, nhaehnle, llvm-commits
Differential Revision: https://reviews.llvm.org/D35949
llvm-svn: 309553
show more ...
|
#
b2811e50 |
| 28-Jul-2017 |
Adrian Prantl <aprantl@apple.com> |
Remove the unused offset field from LiveDebugVariables (NFC)
Followup to r309426. rdar://problem/33580047
llvm-svn: 309451
|
#
8b9bb534 |
| 28-Jul-2017 |
Adrian Prantl <aprantl@apple.com> |
Remove the unused offset from DBG_VALUE (NFC)
Followup to r309426. rdar://problem/33580047
llvm-svn: 309450
|
Revision tags: llvmorg-5.0.0-rc1 |
|
#
705f798b |
| 21-Jun-2017 |
Sam Clegg <sbc@chromium.org> |
Mark dump() methods as const. NFC
Add const qualifier to any dump() method where adding one was trivial.
Differential Revision: https://reviews.llvm.org/D34481
llvm-svn: 305963
|
Revision tags: llvmorg-4.0.1, llvmorg-4.0.1-rc3, llvmorg-4.0.1-rc2 |
|
#
1527baab |
| 25-May-2017 |
Matthias Braun <matze@braunis.de> |
CodeGen: Rename DEBUG_TYPE to match passnames
Rename the DEBUG_TYPE to match the names of corresponding passes where it makes sense. Also establish the pattern of simply referencing DEBUG_TYPE inste
CodeGen: Rename DEBUG_TYPE to match passnames
Rename the DEBUG_TYPE to match the names of corresponding passes where it makes sense. Also establish the pattern of simply referencing DEBUG_TYPE instead of repeating the passname where possible.
llvm-svn: 303921
show more ...
|
Revision tags: llvmorg-4.0.1-rc1, llvmorg-4.0.0, llvmorg-4.0.0-rc4, llvmorg-4.0.0-rc3, llvmorg-4.0.0-rc2 |
|
#
8c209aa8 |
| 28-Jan-2017 |
Matthias Braun <matze@braunis.de> |
Cleanup dump() functions.
We had various variants of defining dump() functions in LLVM. Normalize them (this should just consistently implement the things discussed in http://lists.llvm.org/pipermai
Cleanup dump() functions.
We had various variants of defining dump() functions in LLVM. Normalize them (this should just consistently implement the things discussed in http://lists.llvm.org/pipermail/cfe-dev/2014-January/034323.html
For reference: - Public headers should just declare the dump() method but not use LLVM_DUMP_METHOD or #if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP) - The definition of a dump method should look like this: #if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP) LLVM_DUMP_METHOD void MyClass::dump() { // print stuff to dbgs()... } #endif
llvm-svn: 293359
show more ...
|
Revision tags: llvmorg-4.0.0-rc1 |
|
#
116bbab4 |
| 13-Jan-2017 |
Diana Picus <diana.picus@linaro.org> |
[CodeGen] Rename MachineInstrBuilder::addOperand. NFC
Rename from addOperand to just add, to match the other method that has been added to MachineInstrBuilder for adding more than just 1 operand.
S
[CodeGen] Rename MachineInstrBuilder::addOperand. NFC
Rename from addOperand to just add, to match the other method that has been added to MachineInstrBuilder for adding more than just 1 operand.
See https://reviews.llvm.org/D28057 for the whole discussion.
Differential Revision: https://reviews.llvm.org/D28556
llvm-svn: 291891
show more ...
|