Revision tags: llvmorg-3.8.0-rc2 |
|
#
eb2a2546 |
| 29-Jan-2016 |
Yaron Keren <yaron.keren@gmail.com> |
Annotate dump() methods with LLVM_DUMP_METHOD, addressing Richard Smith r259192 post commit comment. clang part in r259232, this is the LLVM part of the patch.
llvm-svn: 259240
|
Revision tags: llvmorg-3.8.0-rc1 |
|
#
1238610a |
| 07-Jan-2016 |
Junmo Park <junmoz.park@samsung.com> |
Remove extra whitespace. NFC.
llvm-svn: 257047
|
#
c00e65aa |
| 13-Dec-2015 |
Cong Hou <congh@google.com> |
Fix a type issue in r255455. Should not use unsigned type as std::abs()'s template type.
llvm-svn: 255461
|
#
663dd018 |
| 13-Dec-2015 |
Cong Hou <congh@google.com> |
Replace <cstdint> by llvm/Support/DataTypes.h for the typedef of uint64_t. NFC.
llvm-svn: 255458
|
#
c0a33e0f |
| 13-Dec-2015 |
Cong Hou <congh@google.com> |
Add the missing header file <cstdint> needed by uint64_t
llvm-svn: 255457
|
#
c106989f |
| 13-Dec-2015 |
Cong Hou <congh@google.com> |
Normalize MBB's successors' probabilities in several locations.
This patch adds some missing calls to MBB::normalizeSuccProbs() in several locations where it should be called. Those places are found
Normalize MBB's successors' probabilities in several locations.
This patch adds some missing calls to MBB::normalizeSuccProbs() in several locations where it should be called. Those places are found by checking if the sum of successors' probabilities is approximate one in MachineBlockPlacement pass with some instrumented code (not in this patch).
Differential revision: http://reviews.llvm.org/D15259
llvm-svn: 255455
show more ...
|
#
60d69e28 |
| 11-Dec-2015 |
Matthias Braun <matze@braunis.de> |
CodeGen: Redo analyzePhysRegs() and computeRegisterLiveness()
computeRegisterLiveness() was broken in that it reported dead for a register even if a subregister was alive. I assume this was because
CodeGen: Redo analyzePhysRegs() and computeRegisterLiveness()
computeRegisterLiveness() was broken in that it reported dead for a register even if a subregister was alive. I assume this was because the results of analayzePhysRegs() are hard to understand with respect to subregisters.
This commit: Changes the results of analyzePhysRegs (=struct PhysRegInfo) to be clearly understandable, also renames the fields to avoid silent breakage of third-party code (and improve the grammar).
Fix all (two) users of computeRegisterLiveness() in llvm: By reenabling it and removing workarounds for the bug.
This fixes http://llvm.org/PR24535 and http://llvm.org/PR25033
Differential Revision: http://reviews.llvm.org/D15320
llvm-svn: 255362
show more ...
|
#
4aef7ef8 |
| 01-Dec-2015 |
Cong Hou <congh@google.com> |
Allow known and unknown probabilities coexist in MBB's successor list.
Previously it is not allowed for each MBB to have successors with both known and unknown probabilities. However, this may be to
Allow known and unknown probabilities coexist in MBB's successor list.
Previously it is not allowed for each MBB to have successors with both known and unknown probabilities. However, this may be too strict as at this stage we could not always guarantee that. It is better to remove this restriction now, and I will work on validating MBB's successors' probabilities first (for example, check if the sum is approximate one).
llvm-svn: 254402
show more ...
|
#
d97c100d |
| 01-Dec-2015 |
Cong Hou <congh@google.com> |
Replace all weight-based interfaces in MBB with probability-based interfaces, and update all uses of old interfaces.
(This is the second attempt to submit this patch. The first caused two assertion
Replace all weight-based interfaces in MBB with probability-based interfaces, and update all uses of old interfaces.
(This is the second attempt to submit this patch. The first caused two assertion failures and was reverted. See https://llvm.org/bugs/show_bug.cgi?id=25687)
The patch in http://reviews.llvm.org/D13745 is broken into four parts:
1. New interfaces without functional changes (http://reviews.llvm.org/D13908). 2. Use new interfaces in SelectionDAG, while in other passes treat probabilities as weights (http://reviews.llvm.org/D14361). 3. Use new interfaces in all other passes. 4. Remove old interfaces.
This patch is 3+4 above. In this patch, MBB won't provide weight-based interfaces any more, which are totally replaced by probability-based ones. The interface addSuccessor() is redesigned so that the default probability is unknown. We allow unknown probabilities but don't allow using it together with known probabilities in successor list. That is to say, we either have a list of successors with all known probabilities, or all unknown probabilities. In the latter case, we assume each successor has 1/N probability where N is the number of successors. An assertion checks if the user is attempting to add a successor with the disallowed mixed use as stated above. This can help us catch many misuses.
All uses of weight-based interfaces are now updated to use probability-based ones.
Differential revision: http://reviews.llvm.org/D14973
llvm-svn: 254377
show more ...
|
#
1dbaf675 |
| 01-Dec-2015 |
Hans Wennborg <hans@hanshq.net> |
Revert r254348: "Replace all weight-based interfaces in MBB with probability-based interfaces, and update all uses of old interfaces."
and the follow-up r254356: "Fix a bug in MachineBlockPlacement
Revert r254348: "Replace all weight-based interfaces in MBB with probability-based interfaces, and update all uses of old interfaces."
and the follow-up r254356: "Fix a bug in MachineBlockPlacement that may cause assertion failure during BranchProbability construction."
Asserts were firing in Chromium builds. See PR25687.
llvm-svn: 254366
show more ...
|
Revision tags: llvmorg-3.7.1 |
|
#
fa1917c6 |
| 01-Dec-2015 |
Cong Hou <congh@google.com> |
Replace all weight-based interfaces in MBB with probability-based interfaces, and update all uses of old interfaces.
The patch in http://reviews.llvm.org/D13745 is broken into four parts:
1. New in
Replace all weight-based interfaces in MBB with probability-based interfaces, and update all uses of old interfaces.
The patch in http://reviews.llvm.org/D13745 is broken into four parts:
1. New interfaces without functional changes (http://reviews.llvm.org/D13908). 2. Use new interfaces in SelectionDAG, while in other passes treat probabilities as weights (http://reviews.llvm.org/D14361). 3. Use new interfaces in all other passes. 4. Remove old interfaces.
This patch is 3+4 above. In this patch, MBB won't provide weight-based interfaces any more, which are totally replaced by probability-based ones. The interface addSuccessor() is redesigned so that the default probability is unknown. We allow unknown probabilities but don't allow using it together with known probabilities in successor list. That is to say, we either have a list of successors with all known probabilities, or all unknown probabilities. In the latter case, we assume each successor has 1/N probability where N is the number of successors. An assertion checks if the user is attempting to add a successor with the disallowed mixed use as stated above. This can help us catch many misuses.
All uses of weight-based interfaces are now updated to use probability-based ones.
Differential revision: http://reviews.llvm.org/D14973
llvm-svn: 254348
show more ...
|
#
1938f2eb |
| 24-Nov-2015 |
Cong Hou <congh@google.com> |
Let SelectionDAG start to use probability-based interface to add successors.
The patch in http://reviews.llvm.org/D13745 is broken into four parts:
1. New interfaces without functional changes. 2.
Let SelectionDAG start to use probability-based interface to add successors.
The patch in http://reviews.llvm.org/D13745 is broken into four parts:
1. New interfaces without functional changes. 2. Use new interfaces in SelectionDAG, while in other passes treat probabilities as weights. 3. Use new interfaces in all other passes. 4. Remove old interfaces.
This the second patch above. In this patch SelectionDAG starts to use probability-based interfaces in MBB to add successors but other MC passes are still using weight-based interfaces. Therefore, we need to maintain correct weight list in MBB even when probability-based interfaces are used. This is done by updating weight list in probability-based interfaces by treating the numerator of probabilities as weights. This change affects many test cases that check successor weight values. I will update those test cases once this patch looks good to you.
Differential revision: http://reviews.llvm.org/D14361
llvm-svn: 253965
show more ...
|
Revision tags: llvmorg-3.7.1-rc2 |
|
#
136bc65e |
| 18-Nov-2015 |
Cong Hou <congh@google.com> |
Remove a redundant assertion in MachineBasicBlock.cpp. NFC.
llvm-svn: 253426
|
#
11c14201 |
| 18-Nov-2015 |
Cong Hou <congh@google.com> |
Remove redundant code in MachineBasicBlock.cpp. NFC.
llvm-svn: 253425
|
Revision tags: llvmorg-3.7.1-rc1 |
|
#
b9204a58 |
| 11-Nov-2015 |
Reid Kleckner <rnk@google.com> |
[WinEH] Don't forward branches across empty EH pad BBs
For really simple SEH catchpads, we tried to forward the invoke unwind edge across the empty block.
llvm-svn: 252822
|
#
b8fd162f |
| 06-Nov-2015 |
Reid Kleckner <rnk@google.com> |
[WinEH] Mark funclet entries and exits as clobbering all registers
Summary: In this implementation, LiveIntervalAnalysis invents a few register masks on basic block boundaries that preserve no regis
[WinEH] Mark funclet entries and exits as clobbering all registers
Summary: In this implementation, LiveIntervalAnalysis invents a few register masks on basic block boundaries that preserve no registers. The nice thing about this is that it prevents the prologue inserter from thinking it needs to spill all XMM CSRs, because it doesn't see any explicit physreg defs in the MI.
Reviewers: MatzeB, qcolombet, JosephTremoulet, majnemer
Subscribers: MatzeB, llvm-commits
Differential Revision: http://reviews.llvm.org/D14407
llvm-svn: 252318
show more ...
|
#
23a3bf01 |
| 04-Nov-2015 |
Cong Hou <congh@google.com> |
Add new interfaces to MBB for manipulating successors with probabilities instead of weights. NFC.
This is part-1 of the patch that replaces all edge weights in MBB by probabilities, which only adds
Add new interfaces to MBB for manipulating successors with probabilities instead of weights. NFC.
This is part-1 of the patch that replaces all edge weights in MBB by probabilities, which only adds new interfaces. No functional changes.
Differential revision: http://reviews.llvm.org/D13908
llvm-svn: 252083
show more ...
|
#
07eeb800 |
| 27-Oct-2015 |
Cong Hou <congh@google.com> |
Create a new interface addSuccessorWithoutWeight(MBB*) in MBB to add successors when optimization is disabled.
When optimization is disabled, edge weights that are stored in MBB won't be used so tha
Create a new interface addSuccessorWithoutWeight(MBB*) in MBB to add successors when optimization is disabled.
When optimization is disabled, edge weights that are stored in MBB won't be used so that we don't have to store them. Currently, this is done by adding successors with default weight 0, and if all successors have default weights, the weight list will be empty. But that the weight list is empty doesn't mean disabled optimization (as is stated several times in MachineBasicBlock.cpp): it may also mean all successors just have default weights.
We should discourage using default weights when adding successors, because it is very easy for users to forget update the correct edge weights instead of using default ones (one exception is that the MBB only has one successor). In order to detect such usages, it is better to differentiate using default weights from the case when optimizations is disabled.
In this patch, a new interface addSuccessorWithoutWeight(MBB*) is created for when optimization is disabled. In this case, MBB will try to maintain an empty weight list, but it cannot guarantee this as for many uses of addSuccessor() whether optimization is disabled or not is not checked. But it can guarantee that if optimization is enabled, then the weight list always has the same size of the successor list.
Differential revision: http://reviews.llvm.org/D13963
llvm-svn: 251429
show more ...
|
#
0ac8eb91 |
| 09-Oct-2015 |
Duncan P. N. Exon Smith <dexonsmith@apple.com> |
CodeGen: Avoid ilist iterator implicit conversions in a few more places, NFC
llvm-svn: 249880
|
#
166e0854 |
| 29-Sep-2015 |
Cong Hou <congh@google.com> |
Rename some function arguments in MachineBasicBlock.cpp/h by turning the first letter into upper case. NFC.
llvm-svn: 248821
|
#
c804cdb9 |
| 25-Sep-2015 |
Matthias Braun <matze@braunis.de> |
TargetRegisterInfo: Introduce PrintLaneMask.
This makes it more convenient to print lane masks and lead to more uniform printing.
llvm-svn: 248624
|
#
e6a2485e |
| 25-Sep-2015 |
Matthias Braun <matze@braunis.de> |
TargetRegisterInfo: Add typedef unsigned LaneBitmask and use it where apropriate; NFC
llvm-svn: 248623
|
#
ed17079b |
| 17-Sep-2015 |
Reid Kleckner <rnk@google.com> |
[WinEH] Add and use hasEHPadSuccessor instead of getLandingPadSuccessor
getLandingPadSuccessor assumes that each invoke can have at most one EH pad successor, but WinEH invokes can have more than on
[WinEH] Add and use hasEHPadSuccessor instead of getLandingPadSuccessor
getLandingPadSuccessor assumes that each invoke can have at most one EH pad successor, but WinEH invokes can have more than one. Two out of three callers of getLandingPadSuccessor don't use the returned landingpad, so we can make them use this simple predicate instead.
Eventually we'll have to circle back and fix SplitKit.cpp so that register allocation works. Baby steps.
llvm-svn: 247904
show more ...
|
#
c7b155f6 |
| 16-Sep-2015 |
Eric Christopher <echristo@gmail.com> |
Use the cached TargetInstrInfo instead of looking it up again.
llvm-svn: 247865
|
#
d9da1627 |
| 09-Sep-2015 |
Matthias Braun <matze@braunis.de> |
Save LaneMask with livein registers
With subregister liveness enabled we can detect the case where only parts of a register are live in, this is expressed as a 32bit lanemask. The current code only
Save LaneMask with livein registers
With subregister liveness enabled we can detect the case where only parts of a register are live in, this is expressed as a 32bit lanemask. The current code only keeps registers in the live-in list and therefore enumerated all subregisters affected by the lanemask. This turned out to be too conservative as the subregister may also cover additional parts of the lanemask which are not live. Expressing a given lanemask by enumerating a minimum set of subregisters is computationally expensive so the best solution is to simply change the live-in list to store the lanemasks as well. This will reduce memory usage for targets using subregister liveness and slightly increase it for other targets
Differential Revision: http://reviews.llvm.org/D12442
llvm-svn: 247171
show more ...
|