1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-22 04:22:57 +02:00
Commit Graph

39841 Commits

Author SHA1 Message Date
Ted Kremenek
1d321b8875 Removed ImmutableMap::SlimFind and replaced it with ImmutableMap::lookup. The new method does the same thing, except that it returns a pointer to the mapped data type, and not to an internal tree node.
llvm-svn: 53171
2008-07-07 16:20:55 +00:00
Evan Cheng
38ce408540 LegalizeSetCCOperands should legalize the result of ExpandLibCall. Patch by Richard Osborne.
llvm-svn: 53169
2008-07-07 07:18:09 +00:00
Nick Lewycky
5b1024c386 Handle 'lshr' instruction with SCEVUDiv object.
Comment the xor %x, -1 case.

llvm-svn: 53167
2008-07-07 06:15:49 +00:00
Bill Wendling
d6bd5ea0b7 Prevent option name conflict.
llvm-svn: 53166
2008-07-07 05:42:27 +00:00
Duncan Sands
0caf597378 LegalizeTypes soft-float support for stores of a
float value.

llvm-svn: 53165
2008-07-07 00:08:12 +00:00
Anton Korobeynikov
47e1a76977 Add convenient helper for checking whether global is weak in linker sense
having weak or linkonce or common or extweak LLVM linkage.

llvm-svn: 53158
2008-07-05 23:48:30 +00:00
Anton Korobeynikov
d1b5a2bf91 Testcase for PR2463
llvm-svn: 53157
2008-07-05 23:33:40 +00:00
Anton Korobeynikov
302db24cf1 Override weak stuff during linking of aliases. This fixes PR2463.
llvm-svn: 53156
2008-07-05 23:33:22 +00:00
Anton Korobeynikov
69c88b40ed Testcase for PR2146
llvm-svn: 53155
2008-07-05 23:03:46 +00:00
Anton Korobeynikov
3593f9f7f1 Properly link alias and function decls. This fixes PR2146
llvm-svn: 53154
2008-07-05 23:03:21 +00:00
Nick Lewycky
e85e0b1bbc 80col
llvm-svn: 53153
2008-07-05 22:41:37 +00:00
Nick Lewycky
94f9c5a42e Fix missed optimization opportunity when analyzing cast of mul and select.
llvm-svn: 53151
2008-07-05 21:19:34 +00:00
Mon P Wang
a43d6758ac Fixed generating incorrect aligned stores that I backout of r53031
that fixed problems in EmitStackConvert where the source and target type
have different alignment by creating a stack slot with the max
alignment of source and target type.

llvm-svn: 53150
2008-07-05 20:40:31 +00:00
Bruno Cardoso Lopes
d738f1e6c7 Several changes to Mips backend, experimental fp support being the most
important.
- Cleanup in the Subtarget info with addition of new features, not all support
  yet, but they allow the future inclusion of features easier. Among new features,
  we have : Arch family info (mips1, mips2, ...), ABI info (o32, eabi), 64-bit
  integer
  and float registers, allegrex vector FPU (VFPU), single float only support.
- TargetMachine now detects allegrex core.
- Added allegrex (Mips32r2) sext_inreg instructions.
- *Added Float Point Instructions*, handling single float only, and
  aliased accesses for 32-bit FPUs.
- Some cleanup in FP instruction formats and FP register classes.
- Calling conventions improved to support mips 32-bit EABI.
- Added Asm Printer support for fp cond codes.
- Added support for sret copy to a return register.
- EABI support added into LowerCALL and FORMAL_ARGS.
- MipsFunctionInfo now keeps a virtual register per function to track the
  sret on function entry until function ret.
- MipsInstrInfo FP support into methods (isMoveInstr, isLoadFromStackSlot, ...),
  FP cond codes mapping and initial FP Branch Analysis.
- Two new Mips SDNode to handle fp branch and compare instructions : FPBrcond,
  FPCmp
- MipsTargetLowering : handling different FP classes, Allegrex support, sret
  return copy, no homing location within EABI, non 32-bit stack objects
  arguments, and asm constraint for float.

llvm-svn: 53146
2008-07-05 19:05:21 +00:00
Duncan Sands
3ea6f15708 Rather than having a different custom legalization
hook for each way in which a result type can be
legalized (promotion, expansion, softening etc),
just use one: ReplaceNodeResults, which returns
a node with exactly the same result types as the
node passed to it, but presumably with a bunch of
custom code behind the scenes.  No change if the
new LegalizeTypes infrastructure is not turned on.

llvm-svn: 53137
2008-07-04 11:47:58 +00:00
Duncan Sands
aac5c915ed Linux also does not require exception handling
moves in order to get correct debug info.  Since
I can't imagine how any target could possibly
be any different, I've just stripped out the
option: now all the world's like Darwin!

llvm-svn: 53134
2008-07-04 09:55:48 +00:00
Bill Wendling
e3ad6f2249 Don't return std::vector by value, but pass it in by reference to be filled.
llvm-svn: 53123
2008-07-03 23:13:02 +00:00
Bill Wendling
2c9a84d788 Revert my previous check-in that split up MachineModuleInfo. It turns out to
slow the compiler down at -O0 some 30% or more. Ooops.

llvm-svn: 53120
2008-07-03 22:53:42 +00:00
Devang Patel
af72f3b02e Provide a hook to set the code generation debug options to investigate lto failures.
llvm-svn: 53119
2008-07-03 22:53:14 +00:00
Evan Cheng
01e53a3406 Backed out 53031.
llvm-svn: 53110
2008-07-03 18:20:14 +00:00
Evan Cheng
3e6a03a4b6 Back out 53091 for now.
llvm-svn: 53109
2008-07-03 18:11:29 +00:00
Owen Anderson
035bf4d2ca Use information already present in the ValueTable to fast-fail when we know there won't be a value number match. This speeds up GVN on a case where there are very few redundancies by ~25%.
llvm-svn: 53108
2008-07-03 17:44:33 +00:00
Devang Patel
dcfd567cc5 Do not try to update dominator info while manipulating CFG. This code does not handle all cases and keeps invalid dom info around some cases, which misleads other passes down stream.
Right now, dom info is recaluclated in the end if the loop is switched.

llvm-svn: 53106
2008-07-03 17:37:52 +00:00
Owen Anderson
1acfb69ad7 Remove the ability for ADCE to remove unreachable blocks in loop nests, because, as Eli pointed out, SimplifyCFG already does this.
llvm-svn: 53104
2008-07-03 17:21:41 +00:00
Evan Cheng
1f6148a84c - Remove calls to copyKillDeadInfo which is an N^2 function. Instead, propagate kill / dead markers as new instructions are constructed in foldMemoryOperand, convertToThressAddress, etc.
- Also remove LiveVariables::instructionChanged, etc. Replace all calls with cheaper calls which update VarInfo kill list.

llvm-svn: 53097
2008-07-03 09:09:37 +00:00
Evan Cheng
70026d3d13 isel load folding is disabled at -fast. Now hoist the check up to the top level to save some time.
llvm-svn: 53096
2008-07-03 08:39:51 +00:00
Matthijs Kooijman
b7ade2592f Add newline at the end of Constants.cpp.
llvm-svn: 53092
2008-07-03 07:46:41 +00:00
Anton Korobeynikov
f3fc979d9c llvm-gcc sometimes marks external declarations hidden, because intializers are
processed separately. Honour such situation and emit PIC relocations properly
in such case.

llvm-svn: 53091
2008-07-03 07:43:14 +00:00
Bill Wendling
c4b5d8e1c3 Remove unused function.
llvm-svn: 53090
2008-07-03 07:10:03 +00:00
Devang Patel
6dd6992a45 Preserve dom info.
llvm-svn: 53089
2008-07-03 07:04:22 +00:00
Devang Patel
f3ca5b9a8b Keep track of inherited analysis (e.g. dominator tree).
llvm-svn: 53088
2008-07-03 07:02:30 +00:00
Devang Patel
7a65306299 Remove extra FIXME
llvm-svn: 53087
2008-07-03 06:50:04 +00:00
Devang Patel
889fe6f848 Reconstruct dom info, if loop is unswitched.
llvm-svn: 53086
2008-07-03 06:48:21 +00:00
Devang Patel
f999e47e64 LoopUnswitch does not preserve dominator info in all cases.
llvm-svn: 53085
2008-07-03 05:55:03 +00:00
Dan Gohman
ca3abd7409 Reapply r52988, "Simplify addRegisterKilled and addRegisterDead." The
254.gap failure was not due to this mod.

llvm-svn: 53068
2008-07-03 01:18:51 +00:00
Dan Gohman
9c78662057 Use operator new instead of new char[].
llvm-svn: 53067
2008-07-03 00:59:36 +00:00
Dan Gohman
b4de0f42af Use operator new instead of new char[].
llvm-svn: 53066
2008-07-03 00:53:09 +00:00
Dan Gohman
3a3ea83ef7 Avoid unnecessarily copying APInt objects.
llvm-svn: 53065
2008-07-03 00:52:03 +00:00
Dan Gohman
27986beb10 Correct a comment.
llvm-svn: 53064
2008-07-03 00:51:05 +00:00
Evan Cheng
67ab36cb9d Use std::replace instead of std::find and push_back.
llvm-svn: 53063
2008-07-03 00:28:27 +00:00
Devang Patel
f9e8484756 Undo previous patch. It is not that simple to fix dom info here.
llvm-svn: 53062
2008-07-03 00:08:13 +00:00
Evan Cheng
7c3920e692 - Add LiveVariables::replaceKillInstruction. This does a subset of instructionChanged. That is, it only update the VarInfo.kills if the new instruction is known to have the correct dead and kill markers.
- CommuteInstruction copies kill / dead markers over to new instruction. So use replaceKillInstruction instead.

llvm-svn: 53061
2008-07-03 00:07:19 +00:00
Evan Cheng
6d84ad83ca commuteInstruction should preserve dead markers.
llvm-svn: 53060
2008-07-03 00:04:51 +00:00
Owen Anderson
604f9f722d Make LiveVariables even more optional, by making it optional in the call to TargetInstrInfo::convertToThreeAddressInstruction
Also, if LV isn't around, then TwoAddr doesn't need to be updating flags, since they won't have been set in the first place.

llvm-svn: 53058
2008-07-02 23:41:07 +00:00
Dan Gohman
741cda0ac8 Replace a few uses of SelectionDAG::getTargetNode with
SelectionDAG::SelectNodeTo in the instruction selector. This
updates existing nodes in place instead of creating new ones.

Go back to selecting ISD::DBG_LABEL nodes into
TargetInstrInfo::DBG_LABEL nodes instead of leaving them
unselected, now that SelectNodeTo allows us to update them
in place.

llvm-svn: 53057
2008-07-02 23:23:19 +00:00
Devang Patel
db4a6944ec Preserve dom info while simplifing loop after the unswitch.
llvm-svn: 53052
2008-07-02 22:58:54 +00:00
Eric Christopher
4c3e39e220 Add a couple more helper functions to deal with
creating global constant strings and pointers
to global constant strings.

llvm-svn: 53051
2008-07-02 22:57:59 +00:00
Dan Gohman
d9458e2d39 Revert r52988. It broke 254.gap on x86-64.
llvm-svn: 53050
2008-07-02 22:12:55 +00:00
Owen Anderson
a420723feb TwoAddressInstructionPass doesn't really require LiveVariables, it just needs to update it if it's already around.
llvm-svn: 53049
2008-07-02 21:28:58 +00:00
Chuck Rose III
8e0b9566a3 VStudio x64 build fixes. Looks like the x64 projects got out of date and this brings them up to code. I've built the project with these new vcproj files for win32 and x64 both debug and release.
llvm-svn: 53047
2008-07-02 21:02:51 +00:00