Daniel Dunbar
fc14f1e5f6
MC: Move target specific fixup info descriptors to TargetAsmBackend instead of
...
the MCCodeEmitter, which seems like a better organization.
- Also, cleaned up some magic constants while in the area.
llvm-svn: 121953
2010-12-16 03:20:06 +00:00
Jason W Kim
2f4a8d7553
1. ARM/MC/ELF: A few more ELF relocs for .o
...
2. Fixed EmitLocalCommonSymbol for ELF (Yes, they exist. :)
Test added.
llvm-svn: 121951
2010-12-16 03:12:17 +00:00
Daniel Dunbar
8ab9be2005
MC: Make TargetAsmBackend available to the AsmStreamer.
...
- Treaty talks on the non-proliferation of MC objects broke down.
llvm-svn: 121949
2010-12-16 03:05:59 +00:00
Daniel Dunbar
b5ea5a74f9
MC: Split MCFixupKindInfo out into its own header.
...
llvm-svn: 121948
2010-12-16 03:05:53 +00:00
Daniel Dunbar
fc4b79c9e8
MC: Remove a FIXME I no longer agree with.
...
llvm-svn: 121947
2010-12-16 03:05:46 +00:00
Dan Gohman
8540450279
Update a comment.
...
llvm-svn: 121946
2010-12-16 02:55:10 +00:00
Dan Gohman
29a260015a
-enable-tbaa is on by default now.
...
llvm-svn: 121945
2010-12-16 02:53:48 +00:00
Dan Gohman
e106936414
Make memcpyopt TBAA-aware.
...
llvm-svn: 121944
2010-12-16 02:51:19 +00:00
NAKAMURA Takumi
b542a59c37
lib/Support/regexec.c: Let Regex LLP64-aware.
...
On LLP64 Win64, 'states1' (for small version) was expanded to 'char *' for large version. Thus small version would be mischosen when nstates > 32 regardless of sizeof(long) on Win64.
llvm-svn: 121942
2010-12-16 01:48:15 +00:00
Matt Beaumont-Gay
9b5939da47
Delete an extra "Imm5 = ", caught by GCC's -Wsequence-point but not by Clang
...
(see PR4579).
llvm-svn: 121939
2010-12-16 01:34:26 +00:00
Jakob Stoklund Olesen
ae68a4eb6d
Add IntervalMapOverlaps - An iterator for overlapping intervals in two
...
IntervalMaps.
The IntervalMaps can have different template parameters, but the KeyT and Traits
types must be the same.
Tests are forthcoming.
llvm-svn: 121935
2010-12-16 01:18:29 +00:00
Bill Wendling
c22ad4d7ae
Remove fixup_arm_thumb_ldst. The code was never calling the "fixup" stuff for
...
it. I.e., it was always an immediate value.
llvm-svn: 121932
2010-12-16 00:50:33 +00:00
Bill Wendling
6ce0807502
Add tSpill and tRestore to the opcodes to replace with tSTRi and tLDRi
...
respectively.
It may be a bug that these opcodes are getting this far into machine code
generation.
llvm-svn: 121931
2010-12-16 00:49:54 +00:00
Bill Wendling
448cd7f1bb
Add encodings for Thumb1 Spill and Restore pseudos.
...
llvm-svn: 121929
2010-12-16 00:38:41 +00:00
Jason W Kim
529d762fff
Fix elf-dump --dump-section-data for .bss section
...
llvm-svn: 121927
2010-12-16 00:15:10 +00:00
Dan Gohman
b9583fff47
Enable TBAA by default.
...
llvm-svn: 121923
2010-12-15 23:58:44 +00:00
Dan Gohman
a2fd4f2e22
Preserve TBAA tags when doing load PRE.
...
llvm-svn: 121921
2010-12-15 23:53:55 +00:00
Jim Grosbach
84c2b29b58
Thumb1 had two patterns for the same load-from-constant-pool instruction.
...
Canonicalize on tLDRpci and remove tLDRcp.
llvm-svn: 121920
2010-12-15 23:52:36 +00:00
Eric Christopher
339499f8f3
Don't handle -arm-long-calls in fast isel for now.
...
llvm-svn: 121919
2010-12-15 23:47:29 +00:00
Jakob Stoklund Olesen
1811e4cb20
Start using SplitKit and MachineLoopRanges in RegAllocGreedy in preparation of
...
live range splitting around loops guided by register pressure.
So far, trySplit() simply prints a lot of debug output.
llvm-svn: 121918
2010-12-15 23:46:13 +00:00
Jakob Stoklund Olesen
d40af5ffbd
Add MachineLoopRanges analysis.
...
A MachineLoopRange contains the intervals of slot indexes covered by the blocks
in a loop. This representation of the loop blocks is more efficient to compare
against interfering registers during register coalescing.
llvm-svn: 121917
2010-12-15 23:41:23 +00:00
Bill Wendling
63ebdf4786
If we're changing the frame register to a physical register other than SP, we
...
need to use tLDRi and tSTRi instead of tLDRspi and tSTRspi respectively.
llvm-svn: 121915
2010-12-15 23:32:27 +00:00
Bill Wendling
ed6c88ead9
Whitespace cleanups.
...
llvm-svn: 121914
2010-12-15 23:31:24 +00:00
Bob Wilson
7e64a19960
Teach the Neon intrinsic generator to widen half-precision float types.
...
This isn't currently used for anything but I ran into it when experimenting
with some changes, and it might be useful in the future.
llvm-svn: 121911
2010-12-15 23:16:25 +00:00
Matt Beaumont-Gay
64b9dd6a4b
Better fix for opt build
...
llvm-svn: 121910
2010-12-15 23:14:45 +00:00
Dan Gohman
4b073c7a7f
Fix a typo that Bill spotted.
...
llvm-svn: 121909
2010-12-15 23:09:41 +00:00
Evan Cheng
72dca1ee17
Only rr forms of ADD*_DB are commutable.
...
llvm-svn: 121908
2010-12-15 22:57:36 +00:00
Rafael Espindola
37a22419ce
Typo.
...
llvm-svn: 121906
2010-12-15 22:33:06 +00:00
Owen Anderson
aefeb448a9
Add an InstCombine transform to recognize instances of manual overflow-safe addition
...
(performing the addition in a wider type and explicitly checking for overflow), and
fold them down to intrinsics. This currently only supports signed-addition, but could
be generalized if someone works out the magic constant formulas for other operations.
Fixes <rdar://problem/8558713>.
llvm-svn: 121905
2010-12-15 22:32:38 +00:00
Matt Beaumont-Gay
d59894002d
Fix opt -Werror build
...
llvm-svn: 121904
2010-12-15 22:21:20 +00:00
Evan Cheng
68e1ed8752
Teach machine cse to commute instructions.
...
llvm-svn: 121903
2010-12-15 22:16:21 +00:00
Bob Wilson
438a9a1367
Add Neon VCVT instructions for f32 <-> f16 conversions.
...
Clang is now providing intrinsics for these and so we need to support them
in the backend. Radar 8068427.
llvm-svn: 121902
2010-12-15 22:14:12 +00:00
Bob Wilson
1082705e72
Fix misspelled target triples in MC/ARM test commands.
...
llvm-svn: 121901
2010-12-15 22:14:01 +00:00
Dan Gohman
7c7b24af4d
Reapply r121886, and also update DecomposeGEPExpression to keep
...
it in sync.
llvm-svn: 121895
2010-12-15 20:49:55 +00:00
Jakob Stoklund Olesen
1fc1f0c4a0
Add SlotIndexes::getMBBRange() to get the range of a basic block in a single
...
lookup.
llvm-svn: 121893
2010-12-15 20:40:22 +00:00
Dan Gohman
4f6b802044
Revert r121886. DecomposeGEPExpression needs to be kept
...
in sync.
llvm-svn: 121892
2010-12-15 20:39:25 +00:00
Wesley Peck
2a376c535e
Lower the MBlaze target specific calling conventions for "interrupt_handler"
...
and "save_volatiles" correctly. This completes the custom calling convention
functionality changes for the MBlaze backend that were started in 121888.
llvm-svn: 121891
2010-12-15 20:27:28 +00:00
Wesley Peck
66ff11fc09
Adding target specific calling conventions to support the MBlaze GCC function
...
attributes "interrupt_handle" and "save_volatiles". Support for lowering these
correctly will be in an upcoming commit.
llvm-svn: 121888
2010-12-15 20:14:09 +00:00
Dan Gohman
8b09daa387
Strengthen GetUnderlyingObject using InstructionSimplify.
...
While LLVM's main design is that analysis code shouldn't
go out of its way to understand code which hasn't been
InstCombined, analysis utility routines like this can
find themselves being called in the middle of transform
passes when instcombine hasn't had a chance to run.
llvm-svn: 121886
2010-12-15 20:10:26 +00:00
Dan Gohman
295ba3ab26
Move Value::getUnderlyingObject to be a standalone
...
function so that it can live in Analysis instead of
VMCore.
llvm-svn: 121885
2010-12-15 20:02:24 +00:00
Wesley Peck
be7405993f
Add some special purpose register definitions to the MBlaze backend and cleanup some old, unused floating point register definitions.
...
llvm-svn: 121882
2010-12-15 19:35:36 +00:00
Owen Anderson
1bf81c7f14
Fix typo in r121875.
...
llvm-svn: 121880
2010-12-15 19:24:24 +00:00
Jim Grosbach
30e7f0d09e
Tweak a few pseudo-inst pattern base classes.
...
llvm-svn: 121878
2010-12-15 19:03:16 +00:00
Nick Lewycky
44b582fb69
Clean up some of LVI:
...
* mergeIn now uses constant folding for constants that are provably not-equal.
* sink some sanity checks from the get*() methods into the mark*() methods, to ensure that we never have a constant/notconstant ConstantInt
* some textual cleanups, whitespace changes, removing "else" after return, that sort of thing.
llvm-svn: 121877
2010-12-15 18:57:18 +00:00
Jim Grosbach
8278d5692a
The new t2LEApcrel* pseudo instructions need the size specified.
...
rdar://8768390
llvm-svn: 121876
2010-12-15 18:48:45 +00:00
Owen Anderson
202d654195
Implement cleanups suggested by Daniel.
...
llvm-svn: 121875
2010-12-15 18:48:27 +00:00
Dan Gohman
0b9ddf4485
Document some more AliasAnalysis infrastructure limitations.
...
llvm-svn: 121874
2010-12-15 18:45:20 +00:00
Jakob Stoklund Olesen
3cfea82733
Fix build.
...
llvm-svn: 121872
2010-12-15 18:07:48 +00:00
Jakob Stoklund Olesen
308656b955
Detect and enumerate bypass loops.
...
Bypass loops have the current live range live through, but contain no uses or
defs. Splitting around a bypass loop can free registers for other uses inside
the loop by spilling the split range.
llvm-svn: 121871
2010-12-15 17:49:52 +00:00
Jakob Stoklund Olesen
849388944e
Separate SplitAnalysis::getSplitLoops().
...
This method returns the set of loops with uses that are candidates for
splitting.
llvm-svn: 121870
2010-12-15 17:41:19 +00:00