Revision tags: llvmorg-3.7.0-rc1 |
|
#
bd7287eb |
| 16-Jul-2015 |
Mehdi Amini <mehdi.amini@apple.com> |
Move most user of TargetMachine::getDataLayout to the Module one
Summary: This change is part of a series of commits dedicated to have a single DataLayout during compilation by using always the one
Move most user of TargetMachine::getDataLayout to the Module one
Summary: This change is part of a series of commits dedicated to have a single DataLayout during compilation by using always the one owned by the module.
This patch is quite boring overall, except for some uglyness in ASMPrinter which has a getDataLayout function but has some clients that use it without a Module (llmv-dsymutil, llvm-dwarfdump), so some methods are taking a DataLayout as parameter.
Reviewers: echristo
Subscribers: yaron.keren, rafael, llvm-commits, jholewinski
Differential Revision: http://reviews.llvm.org/D11090
From: Mehdi Amini <mehdi.amini@apple.com> llvm-svn: 242386
show more ...
|
#
e3c81617 |
| 16-Jul-2015 |
Pete Cooper <peter_cooper@apple.com> |
Clear kill flags in ARMLoadStoreOptimizer.
The pass here was clearing kill flags on instructions which had their sources killed in the instruction being combined. But given that the new instruction
Clear kill flags in ARMLoadStoreOptimizer.
The pass here was clearing kill flags on instructions which had their sources killed in the instruction being combined. But given that the new instruction is inserted after the existing ones, any existing instructions with kill flags will lead to the verifier complaining that we are reading an undefined physreg.
For example, what we had prior to this optimization is t2STRi12 %R1, %SP, 12 t2STRi12 %R1<kill>, %SP, 16 t2STRi12 %R0<kill>, %SP, 8
and prior to this fix that would generate t2STRi12 %R1<kill>, %SP, 16 t2STRDi8 %R0<kill>, %R1, %SP, 8
This is clearly incorrect as it didn't clear the kill flag on R1 used with offset 16 because there was no kill flag on the instruction with offset 12.
After this change we clear the kill flag on the offset 16 instruction because we know it will be used afterwards in the new instruction.
I haven't provided a test case. I have a small test, but even it is very sensitive to register allocation order which isn't ideal.
llvm-svn: 242359
show more ...
|
#
6d8f7850 |
| 13-Jul-2015 |
Aaron Ballman <aaron@aaronballman.com> |
Removing several -Wunused-but-set-variable warnings; NFC intended.
llvm-svn: 242028
|
#
e5a112f5 |
| 10-Jul-2015 |
Matthias Braun <matze@braunis.de> |
ARM: Use SpecificBumpPtrAllocator to fix leak introduced in r241920
llvm-svn: 241951
|
#
d9bd22b2 |
| 10-Jul-2015 |
Matthias Braun <matze@braunis.de> |
ARMLoadStoreOpt: Merge subs/adds into LDRD/STRD; Factor out common code
This commit factors out common code from MergeBaseUpdateLoadStore() and MergeBaseUpdateLSMultiple() and introduces a new funct
ARMLoadStoreOpt: Merge subs/adds into LDRD/STRD; Factor out common code
This commit factors out common code from MergeBaseUpdateLoadStore() and MergeBaseUpdateLSMultiple() and introduces a new function MergeBaseUpdateLSDouble() which merges adds/subs preceding/following a strd/ldrd instruction into an strd/ldrd instruction with writeback where possible.
Differential Revision: http://reviews.llvm.org/D10676
llvm-svn: 241928
show more ...
|
#
e4ba6b8c |
| 10-Jul-2015 |
Matthias Braun <matze@braunis.de> |
ARMLoadStoreOptimizer: Create LDRD/STRD on thumb2
Differential Revision: http://reviews.llvm.org/D10623
llvm-svn: 241926
|
#
a4a3182d |
| 10-Jul-2015 |
Matthias Braun <matze@braunis.de> |
ARMLoadStoreOptimizer: Rewrite LDM/STM matching logic.
This improves the logic in several ways and is a preparation for followup patches: - First perform an analysis and create a list of merge candi
ARMLoadStoreOptimizer: Rewrite LDM/STM matching logic.
This improves the logic in several ways and is a preparation for followup patches: - First perform an analysis and create a list of merge candidates, then transform. This simplifies the code in that you have don't have to care to much anymore that you may be holding iterators to MachineInstrs that get removed. - Analyze/Transform basic blocks in reverse order. This allows to use LivePhysRegs to find free registers instead of the RegisterScavenger. The RegisterScavenger will become less precise in the future as it relies on the deprecated kill-flags. - Return the newly created node in MergeOps so there's no need to look around in the schedule to find it. - Rename some MBBI iterators to InsertBefore to make their role clear. - General code cleanup.
Differential Revision: http://reviews.llvm.org/D10140
llvm-svn: 241920
show more ...
|
#
83f0fbcc |
| 29-Jun-2015 |
Tim Northover <tnorthover@apple.com> |
ARM: add correct kill flags when combining stm instructions
When the store sequence being combined actually stores the base register, we should not mark it as killed until the end.
rdar://21504262
ARM: add correct kill flags when combining stm instructions
When the store sequence being combined actually stores the base register, we should not mark it as killed until the end.
rdar://21504262
llvm-svn: 241003
show more ...
|
#
ba3ecc3c |
| 24-Jun-2015 |
Matthias Braun <matze@braunis.de> |
ARMLoadStoreOptimizer: Fix errata 602117 handling and make testcase actually test for it
This fixes PR23912
Differential Revision: http://reviews.llvm.org/D10620
llvm-svn: 240582
|
Revision tags: llvmorg-3.6.2 |
|
#
d86e004b |
| 23-Jun-2015 |
John Brawn <john.brawn@arm.com> |
[ARM] ARMLoadStoreOpt::UpdateBaseRegUses should stop on def
When UpdateBaseRegUses sees an instruction that defines the base register it must stop, as the base register value it is updating is no lo
[ARM] ARMLoadStoreOpt::UpdateBaseRegUses should stop on def
When UpdateBaseRegUses sees an instruction that defines the base register it must stop, as the base register value it is updating is no longer live. Ideally we would already have seen the register be killed (which is already checked for), but the kill flags may be inaccurate and we have to account for this.
Differential Revision: http://reviews.llvm.org/D10566
llvm-svn: 240424
show more ...
|
Revision tags: llvmorg-3.6.2-rc1 |
|
#
f00654e3 |
| 23-Jun-2015 |
Alexander Kornienko <alexfh@google.com> |
Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC)
Apparently, the style needs to be agreed upon first.
llvm-svn: 240390
|
#
70bc5f13 |
| 19-Jun-2015 |
Alexander Kornienko <alexfh@google.com> |
Fixed/added namespace ending comments using clang-tidy. NFC
The patch is generated using this command:
tools/clang/tools/extra/clang-tidy/tool/run-clang-tidy.py -fix \ -checks=-*,llvm-namespace-c
Fixed/added namespace ending comments using clang-tidy. NFC
The patch is generated using this command:
tools/clang/tools/extra/clang-tidy/tool/run-clang-tidy.py -fix \ -checks=-*,llvm-namespace-comment -header-filter='llvm/.*|clang/.*' \ llvm/lib/
Thanks to Eugene Kosov for the original patch!
llvm-svn: 240137
show more ...
|
#
113b2a94 |
| 05-Jun-2015 |
Benjamin Kramer <benny.kra@googlemail.com> |
[ARM] Make helper function static.
This one had a declaration but it differed from the definition so the declaration was actually dead.
llvm-svn: 239157
|
#
125c9f5f |
| 03-Jun-2015 |
Matthias Braun <matze@braunis.de> |
ARM: Thumb2 LDRD/STRD supports independent input/output regs
The existing code would unnecessarily break LDRD/STRD apart with non-adjacent registers, on thumb2 this is not necessary.
Ideally on thu
ARM: Thumb2 LDRD/STRD supports independent input/output regs
The existing code would unnecessarily break LDRD/STRD apart with non-adjacent registers, on thumb2 this is not necessary.
Ideally on thumb2 we shouldn't match for ldrd/strd pre-regalloc anymore as there is not reason to set register hints anymore, changing that is something for a future patch however.
Differential Revision: http://reviews.llvm.org/D9694
Recommiting after the revert in r238821, the buildbot still failed with the patch removed so there seems to be another reason for the breakage.
llvm-svn: 238935
show more ...
|
#
3a7bec86 |
| 02-Jun-2015 |
Renato Golin <renato.golin@linaro.org> |
Revert "ARM: Thumb2 LDRD/STRD supports independent input/output regs"
This reverts commit r238795, as it broke the Thumb2 self-hosting buildbot.
Since self-hosting issues with Clang are hard to inv
Revert "ARM: Thumb2 LDRD/STRD supports independent input/output regs"
This reverts commit r238795, as it broke the Thumb2 self-hosting buildbot.
Since self-hosting issues with Clang are hard to investigate, I'm taking the liberty to revert now, so we can investigate it offline.
llvm-svn: 238821
show more ...
|
#
e20dc1cd |
| 01-Jun-2015 |
Matthias Braun <matze@braunis.de> |
ARM: Thumb2 LDRD/STRD supports independent input/output regs
The existing code would unnecessarily break LDRD/STRD apart with non-adjacent registers, on thumb2 this is not necessary.
Ideally on thu
ARM: Thumb2 LDRD/STRD supports independent input/output regs
The existing code would unnecessarily break LDRD/STRD apart with non-adjacent registers, on thumb2 this is not necessary.
Ideally on thumb2 we shouldn't match for ldrd/strd pre-regalloc anymore as there is not reason to set register hints anymore, changing that is something for a future patch however.
Differential Revision: http://reviews.llvm.org/D9694
llvm-svn: 238795
show more ...
|
#
ec50fa6f |
| 01-Jun-2015 |
Matthias Braun <matze@braunis.de> |
ARMLoadStoreOptimizer: Fix doxygen comments; NFC
llvm-svn: 238784
|
#
e41e146c |
| 29-May-2015 |
Matthias Braun <matze@braunis.de> |
CodeGen: Use mop_iterator instead of MIOperands/ConstMIOperands
MIOperands/ConstMIOperands are classes iterating over the MachineOperand of a MachineInstr, however MachineInstr::mop_iterator does th
CodeGen: Use mop_iterator instead of MIOperands/ConstMIOperands
MIOperands/ConstMIOperands are classes iterating over the MachineOperand of a MachineInstr, however MachineInstr::mop_iterator does the same thing.
I assume these two iterators exist to have a uniform interface to iterate over the operands of a machine instruction bundle and a single machine instruction. However in practice I find it more confusing to have 2 different iterator classes, so this patch transforms (nearly all) the code to use mop_iterators.
The only exception being MIOperands::anlayzePhysReg() and MIOperands::analyzeVirtReg() still needing an equivalent, I leave that as an exercise for the next patch.
Differential Revision: http://reviews.llvm.org/D9932
This version is slightly modified from the proposed revision in that it introduces MachineInstr::getOperandNo to avoid the extra counting variable in the few loops that previously used MIOperands::getOperandNo.
llvm-svn: 238539
show more ...
|
#
aa9fa355 |
| 27-May-2015 |
Matthias Braun <matze@braunis.de> |
ARMLoadStoreOptimizer: Code cleanup; NFC
llvm-svn: 238289
|
#
fa3872e7 |
| 18-May-2015 |
Matthias Braun <matze@braunis.de> |
MachineInstr: Change return value of getOpcode() to unsigned.
This was previously returning int. However there are no negative opcode numbers and more importantly this was needlessly different from
MachineInstr: Change return value of getOpcode() to unsigned.
This was previously returning int. However there are no negative opcode numbers and more importantly this was needlessly different from MCInstrDesc::getOpcode() (which even is the value returned here) and SDValue::getOpcode()/SDNode::getOpcode().
llvm-svn: 237611
show more ...
|
Revision tags: llvmorg-3.6.1, llvmorg-3.6.1-rc1 |
|
#
799003bf |
| 23-Mar-2015 |
Benjamin Kramer <benny.kra@googlemail.com> |
Re-sort includes with sort-includes.py and insert raw_ostream.h where it's used.
llvm-svn: 232998
|
Revision tags: llvmorg-3.5.2, llvmorg-3.5.2-rc1 |
|
#
ae32649f |
| 12-Mar-2015 |
Eric Christopher <echristo@gmail.com> |
In preparation for moving ARM's TargetRegisterInfo to the TargetMachine merge Thumb1RegisterInfo and Thumb2RegisterInfo. This will enable us to match the TargetMachine for our TargetRegisterInfo clas
In preparation for moving ARM's TargetRegisterInfo to the TargetMachine merge Thumb1RegisterInfo and Thumb2RegisterInfo. This will enable us to match the TargetMachine for our TargetRegisterInfo classes.
llvm-svn: 232117
show more ...
|
#
b9887ef3 |
| 25-Feb-2015 |
Renato Golin <renato.golin@linaro.org> |
Improve handling of stack accesses in Thumb-1
Thumb-1 only allows SP-based LDR and STR to be word-sized, and SP-base LDR, STR, and ADD only allow offsets that are a multiple of 4. Make some changes
Improve handling of stack accesses in Thumb-1
Thumb-1 only allows SP-based LDR and STR to be word-sized, and SP-base LDR, STR, and ADD only allow offsets that are a multiple of 4. Make some changes to better make use of these instructions:
* Use word loads for anyext byte and halfword loads from the stack. * Enforce 4-byte alignment on objects accessed in this way, to ensure that the offset is valid. * Do the same for objects whose frame index is used, in order to avoid having to use more than one ADD to generate the frame index. * Correct how many bits of offset we think AddrModeT1_s has.
Patch by John Brawn.
llvm-svn: 230496
show more ...
|
Revision tags: llvmorg-3.6.0, llvmorg-3.6.0-rc4, llvmorg-3.6.0-rc3, llvmorg-3.6.0-rc2 |
|
#
1b21f009 |
| 29-Jan-2015 |
Eric Christopher <echristo@gmail.com> |
Migrate ARM except for TTI, AsmPrinter, and frame lowering away from getSubtargetImpl.
llvm-svn: 227399
|
#
8b770651 |
| 26-Jan-2015 |
Eric Christopher <echristo@gmail.com> |
Move DataLayout back to the TargetMachine from TargetSubtargetInfo derived classes.
Since global data alignment, layout, and mangling is often based on the DataLayout, move it to the TargetMachine.
Move DataLayout back to the TargetMachine from TargetSubtargetInfo derived classes.
Since global data alignment, layout, and mangling is often based on the DataLayout, move it to the TargetMachine. This ensures that global data is going to be layed out and mangled consistently if the subtarget changes on a per function basis. Prior to this all targets(*) have had subtarget dependent code moved out and onto the TargetMachine.
*One target hasn't been migrated as part of this change: R600. The R600 port has, as a subtarget feature, the size of pointers and this affects global data layout. I've currently hacked in a FIXME to enable progress, but the port needs to be updated to either pass the 64-bitness to the TargetMachine, or fix the DataLayout to avoid subtarget dependent features.
llvm-svn: 227113
show more ...
|