- Jul 08, 2009
-
-
Bill Wendling authored
DWARF requires frame moves be specified at specific times. If you have a prologue like this: __Z3fooi: Leh_func_begin1: LBB1_0: ## entry pushl %ebp Llabel1: movl %esp, %ebp Llabel2: pushl %esi Llabel3: subl $20, %esp call "L1$pb" "L1$pb": popl %esi The "pushl %ebp" needs a table entry specifying the offset. The "movl %esp, %ebp" makes %ebp the new stack frame register, so that needs to be specified in DWARF. And "pushl %esi" saves the callee-saved %esi register, which also needs to be specified in DWARF. Before, all of this logic was in one method. This didn't work too well, because as you can see there are multiple FDE line entries that need to be created. This fix creates the "MachineMove" objects directly when they're needed; instead of waiting until the end, and losing information. There is some ugliness where we generate code like this: LBB22_0: ## entry pushl %ebp Llabel280: movl %esp, %ebp Llabel281: Llabel284: pushl %ebp <---------- pushl %ebx pushl %edi pushl %esi Llabel282: subl $328, %esp Notice the extra "pushl %ebp". If we generate a "machine move" instruction in the FDE for that pushl, the linker may get very confused about what value %ebp should have when exitting the function. I.e., it'll give it the value %esp instead of the %ebp value from the first "pushl". Not to mention that, in this case, %ebp isn't modified in the function (that's a separate bug). I put a small hack in to get it to work. It might be the only solution, but should be revisited once the above case is fixed. llvm-svn: 75047
-
Bill Wendling authored
llvm-svn: 75046
-
Torok Edwin authored
Will convert assert(0) that don't have abort() to LLVM_UNREACHABLE in a later commit. llvm-svn: 75045
-
Torok Edwin authored
Finish converting lib/Target. llvm-svn: 75043
-
Owen Anderson authored
llvm-svn: 75040
-
Chris Lattner authored
llvm-svn: 75039
-
Chris Lattner authored
llvm-svn: 75038
-
Bob Wilson authored
llvm-svn: 75037
-
David Goodwin authored
llvm-svn: 75036
-
Xerxes Ranby authored
Added ARMBaseRegisterInfo.cpp to lib/Target/ARM/CMakeLists.txt llvm-svn: 75035
-
Devang Patel authored
Support MDNode forward reference. llvm-svn: 75031
-
Dan Gohman authored
to a loop deletion more thorough. Don't prune the def-use tree search at instructions that don't have SCEVs computed, because an instruction with a user that has a computed SCEV may itself lack a computed SCEV. Also, remove loop-related values from the ValuesAtScopes and ConstantEvolutionLoopExitValues maps as well. This fixes a regression in 483.xalancbmk. llvm-svn: 75030
-
Dan Gohman authored
This way ScalarEvolution can examine the loop to determine what state it needs to update, if it chooses. llvm-svn: 75029
-
Torok Edwin authored
Also remove trailing semicolon. llvm-svn: 75027
-
Owen Anderson authored
llvm-svn: 75025
-
Chris Lattner authored
llvm-svn: 75024
-
Chris Lattner authored
llvm-svn: 75023
-
Chris Lattner authored
llvm-svn: 75022
-
David Goodwin authored
llvm-svn: 75020
-
Bob Wilson authored
llvm-svn: 75019
-
Torok Edwin authored
cerr+abort -> llvm_report_error assert(0)+abort -> LLVM_UNREACHABLE (assert(0)+llvm_unreachable-> abort() included) llvm-svn: 75018
-
David Goodwin authored
llvm-svn: 75017
-
David Goodwin authored
llvm-svn: 75016
-
Chris Lattner authored
llvm-svn: 75015
-
David Goodwin authored
llvm-svn: 75012
-
David Goodwin authored
llvm-svn: 75011
-
David Goodwin authored
Checkpoint Thumb2 Instr info work. Generalized base code so that it can be shared between ARM and Thumb2. Not yet activated because register information must be generalized first. llvm-svn: 75010
-
Duncan Sands authored
and cases alphabetically. No functionality change. llvm-svn: 75001
-
Rafael Espindola authored
llvm-svn: 75000
-
Alisdair Meredith authored
Fixed build, requires std header before using std::string llvm-svn: 74995
-
Sanjiv Gupta authored
Mark sublw_cc and subfw_cc as Terminator insns so that they are part of the terminator insns for a basic block alongwith branch insns. This way a copy is not getting inserted between cmp and branch during PHIElimination disturbing the status flags. llvm-svn: 74992
-
Nick Lewycky authored
these instructions, no autoupgrade or backwards compatibility support is provided. llvm-svn: 74991
-
Evan Cheng authored
Add a Thumb2 instruction flag to that indicates whether the instruction can be transformed to 16-bit variant. llvm-svn: 74988
-
Owen Anderson authored
llvm-svn: 74985
-
Chris Lattner authored
llvm-svn: 74982
-
Chris Lattner authored
llvm-svn: 74981
-
Chris Lattner authored
llvm-svn: 74980
-
Chris Lattner authored
functionality change. llvm-svn: 74979
-
Chris Lattner authored
VSETCC must define all bits, which is different than it was documented to before. Since all targets that implement VSETCC already have this behavior, and we don't optimize based on this, just change the documentation. We now get nice code for vec_compare.ll llvm-svn: 74978
-
Chris Lattner authored
llvm-svn: 74977
-