| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Creates a configurable regalloc pipeline.
Ensure specific llc options do what they say and nothing more: -reglloc=... has no effect other than selecting the allocator pass itself. This patch introduces a new umbrella flag, "-optimize-regalloc", to enable/disable the optimizing regalloc "superpass". This allows for example testing coalscing and scheduling under -O0 or vice-versa.
When a CodeGen pass requires the MachineFunction to have a particular property, we need to explicitly define that property so it can be directly queried rather than naming a specific Pass. For example, to check for SSA, use MRI->isSSA, not addRequired<PHIElimination>.
CodeGen transformation passes are never "required" as an analysis
ProcessImplicitDefs does not require LiveVariables.
We have a plan to massively simplify some of the early passes within the regalloc superpass.
llvm-svn: 150226
|
| |
|
|
| |
llvm-svn: 150003
|
| |
|
|
|
|
|
| |
This CL delays reading of function bodies from initial parse until
materialization, allowing overlap of compilation with bitcode download.
llvm-svn: 149918
|
| |
|
|
| |
llvm-svn: 149911
|
| |
|
|
|
|
|
|
|
| |
but with a critical fix to the SelectionDAG code that optimizes copies
from strings into immediate stores: the previous code was stopping reading
string data at the first nul. Address this by adding a new argument to
llvm::getConstantStringInfo, preserving the behavior before the patch.
llvm-svn: 149800
|
| |
|
|
|
|
| |
disassembler, just like the generic disassembler.
llvm-svn: 149681
|
| |
|
|
| |
llvm-svn: 149674
|
| |
|
|
|
|
|
| |
dylib. This regressed with r145408. I will try to make a test case and add it
so that this doesn't happen again.
llvm-svn: 149667
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The purpose of refactoring is to hide operand roles from SwitchInst user (programmer). If you want to play with operands directly, probably you will need lower level methods than SwitchInst ones (TerminatorInst or may be User). After this patch we can reorganize SwitchInst operands and successors as we want.
What was done:
1. Changed semantics of index inside the getCaseValue method:
getCaseValue(0) means "get first case", not a condition. Use getCondition() if you want to resolve the condition. I propose don't mix SwitchInst case indexing with low level indexing (TI successors indexing, User's operands indexing), since it may be dangerous.
2. By the same reason findCaseValue(ConstantInt*) returns actual number of case value. 0 means first case, not default. If there is no case with given value, ErrorIndex will returned.
3. Added getCaseSuccessor method. I propose to avoid usage of TerminatorInst::getSuccessor if you want to resolve case successor BB. Use getCaseSuccessor instead, since internal SwitchInst organization of operands/successors is hidden and may be changed in any moment.
4. Added resolveSuccessorIndex and resolveCaseIndex. The main purpose of these methods is to see how case successors are really mapped in TerminatorInst.
4.1 "resolveSuccessorIndex" was created if you need to level down from SwitchInst to TerminatorInst. It returns TerminatorInst's successor index for given case successor.
4.2 "resolveCaseIndex" converts low level successors index to case index that curresponds to the given successor.
Note: There are also related compatability fix patches for dragonegg, klee, llvm-gcc-4.0, llvm-gcc-4.2, safecode, clang.
llvm-svn: 149481
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
test to fail.
These are:
r149348
r149351
r149352
r149354
r149356
r149357
r149361
r149362
r149364
r149365
llvm-svn: 149470
|
| |
|
|
|
|
|
| |
This is the initial checkin of the basic-block autovectorization pass along with some supporting vectorization infrastructure.
Special thanks to everyone who helped review this code over the last several months (especially Tobias Grosser).
llvm-svn: 149468
|
| |
|
|
|
|
| |
ConstantDataArray::getString instead.
llvm-svn: 149365
|
| |
|
|
|
|
| |
the preferred functionality for ripping apart strings, so I have no way to test this.
llvm-svn: 149361
|
| |
|
|
|
|
| |
should be feature complete now. Lets see if it works.
llvm-svn: 149215
|
| |
|
|
|
|
| |
Provide source line number information.
llvm-svn: 149101
|
| |
|
|
| |
llvm-svn: 149091
|
| |
|
|
|
|
| |
mode does not form part of the path.
llvm-svn: 149010
|
| |
|
|
| |
llvm-svn: 148578
|
| |
|
|
| |
llvm-svn: 148442
|
| |
|
|
|
|
| |
necessary)
llvm-svn: 148284
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Move to a by-section allocation and relocation scheme. This allows
better support for sections which do not contain externally visible
symbols.
Flesh out the relocation address vs. local storage address separation a
bit more as well. Remote process JITs use this to tell the relocation
resolution code where the code will live when it executes.
The startFunctionBody/endFunctionBody interfaces to the JIT and the
memory manager are deprecated. They'll stick around for as long as the
old JIT does, but the MCJIT doesn't use them anymore.
llvm-svn: 148258
|
| |
|
|
|
|
|
|
| |
currently basic and will be enhanced with future patches.
Patch developed by Andy Kaylor and Daniel Malea. Reviewed on llvm-commits.
llvm-svn: 148231
|
| |
|
|
| |
llvm-svn: 147970
|
| |
|
|
| |
llvm-svn: 147969
|
| |
|
|
|
|
|
| |
Previously let the JITEmitter do it. That's rather odd, and doesn't play nice
with the MCJIT, so move the (trivial) logic up.
llvm-svn: 147967
|
| |
|
|
| |
llvm-svn: 147855
|
| |
|
|
| |
llvm-svn: 147820
|
| |
|
|
|
|
|
|
| |
file error checking. Use that to error on an unfinished cfi_startproc.
The error is not nice, but is already better than a segmentation fault.
llvm-svn: 147717
|
| |
|
|
| |
llvm-svn: 147379
|
| |
|
|
| |
llvm-svn: 147264
|
| |
|
|
| |
llvm-svn: 147261
|
| |
|
|
| |
llvm-svn: 147197
|
| |
|
|
|
|
| |
http://llvm.org/docs/CodingStandards.html#ll_virtual_anch
llvm-svn: 146960
|
| |
|
|
|
|
|
|
| |
properly initializing the target infos. I decided it wasn't worth linking them
in for this, so just switched back to using the Makefile variable for now. We
can reconsider later if we ever get pluggable targets.
llvm-svn: 146711
|
| |
|
|
| |
llvm-svn: 146708
|
| |
|
|
| |
llvm-svn: 146524
|
| |
|
|
|
|
|
|
|
|
|
| |
subdirectories to traverse into.
- Originally I wanted to avoid this and just autoscan, but this has one key
flaw in that new subdirectories can not automatically trigger a rerun of the
llvm-build tool. This is particularly a pain when switching back and forth
between trees where one has added a subdirectory, as the dependencies will
tend to be wrong. This will also eliminates FIXME implicitly.
llvm-svn: 146436
|
| |
|
|
| |
llvm-svn: 146409
|
| |
|
|
|
|
| |
- Fixes PR11530.
llvm-svn: 146388
|
| |
|
|
|
|
|
|
|
|
| |
generates the dwarf Compile Unit DIE and a dwarf subprogram DIE for each
non-temporary label.
The next part will be to get the clang driver to enable this when assembling
a .s file. rdar://9275556
llvm-svn: 146262
|
| |
|
|
| |
llvm-svn: 146079
|
| |
|
|
| |
llvm-svn: 146071
|
| |
|
|
|
|
| |
"opt -std-compile-opts".
llvm-svn: 146036
|
| |
|
|
| |
llvm-svn: 145870
|
| |
|
|
|
|
|
|
|
|
|
|
| |
change, now you need a TargetOptions object to create a TargetMachine. Clang
patch to follow.
One small functionality change in PTX. PTX had commented out the machine
verifier parts in their copy of printAndVerify. That now calls the version in
LLVMTargetMachine. Users of PTX who need verification disabled should rely on
not passing the command-line flag to enable it.
llvm-svn: 145714
|
| |
|
|
|
|
| |
- Another reapply of r144300, with hopefully one last fix.
llvm-svn: 145623
|
| |
|
|
|
|
| |
directory when running from a build directory.
llvm-svn: 145622
|
| |
|
|
|
|
|
|
| |
Original commit message:
llvm-config: Replace with C++ version (was llvm-config-2).
- Reapply of r144300, with lots of fixes/migration easement in between.
llvm-svn: 145582
|
| |
|
|
|
|
| |
- Reapply of r144300, with lots of fixes/migration easement in between.
llvm-svn: 145449
|
| |
|
|
|
|
|
|
|
|
|
| |
- getSymbolOffset() renamed as getSymbolFileOffset()
- getSymbolFileOffset(), getSymbolAddress(), getRelocationAddress() returns same result for ELFObjectFile, MachOObjectFile and COFFObjectFile.
- added getRelocationOffset()
- fixed MachOObjectFile::getSymbolSize()
- fixed MachOObjectFile::getSymbolSection()
- fixed MachOObjectFile::getSymbolOffset() for symbols without section data.
llvm-svn: 145408
|