Jim Grosbach
b58f498f75
Add register-reuse to frame-index register scavenging. When a target uses
...
a virtual register to eliminate a frame index, it can return that register
and the constant stored there to PEI to track. When scavenging to allocate
for those registers, PEI then tracks the last-used register and value, and
if it is still available and matches the value for the next index, reuses
the existing value rather and removes the re-materialization instructions.
Fancier tracking and adjustment of scavenger allocations to keep more
values live for longer is possible, but not yet implemented and would likely
be better done via a different, less special-purpose, approach to the
problem.
eliminateFrameIndex() is modified so the target implementations can return
the registers they wish to be tracked for reuse.
ARM Thumb1 implements and utilizes the new mechanism. All other targets are
simply modified to adjust for the changed eliminateFrameIndex() prototype.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83467 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-07 17:12:56 +00:00
Devang Patel
7f93f4d66c
Do not assume that the module is set.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83462 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-07 16:37:55 +00:00
Torok Edwin
127445818e
Add a comment explaining how DenseMap::insert works, because it is not
...
intuitive.
It does NOT update the value if the key is already in the map,
it also returns false if the key is already in the map, regardless
if the value matched.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83458 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-07 09:23:56 +00:00
Torok Edwin
4de86fe0d7
Add PR to this FIXME, looks like I didn't commit this change after all.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83457 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-07 09:22:55 +00:00
Duncan Sands
83ed76869e
Make getPointerTo return a const PointerType* rather than
...
an unqualified PointerType* because it seems more correct.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83454 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-07 07:35:19 +00:00
Dan Gohman
ad29b756e0
INTRINSIC_W_CHAIN and INTRINSIC_VOID do not use MemSDNode. They
...
may access memory, but they don't carry a MachineMemOperand.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83449 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-07 03:00:18 +00:00
Eric Christopher
00d67db384
Add FreeInst to the "is a call" check for Insts that are calls, but
...
not intrinsics.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83441 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-07 00:54:08 +00:00
Dan Gohman
bd31b173d2
Fix this comment. The loop header is the loop entry point.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83437 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-07 00:33:10 +00:00
Anton Korobeynikov
249fb339ad
Add PseudoSourceValues for constpool stuff on ELF (Darwin should use something similar)
...
and register spills.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83435 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-07 00:06:35 +00:00
Eric Christopher
0704300d88
While we still have a MallocInst treat it as a call like any other
...
for inlining.
When MallocInst goes away this code will be subsumed as part of
calls and work just fine...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83434 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-07 00:02:18 +00:00
Kevin Enderby
a7ba3a81c0
Added bits of the ARM target assembler to llvm-mc to parse some load instruction
...
operands. Some parsing of arm memory operands for preindexing and postindexing
forms including with register controled shifts. This is a work in progress.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83424 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-06 22:26:42 +00:00
Bob Wilson
3bf12ab860
Add codegen support for NEON vld2 operations on quad registers.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83422 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-06 22:01:59 +00:00
Bob Wilson
349d82d400
Use copyRegToReg hook to copy registers.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83421 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-06 22:01:15 +00:00
Jeffrey Yasskin
0b22873adc
r83391 was completely broken since Twines keep references to their inputs, and
...
some of the inputs were temporaries. Here's a real fix for the miscompilation.
Thanks to sabre for pointing out the problem.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83417 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-06 21:45:26 +00:00
Bob Wilson
ec1d81c389
Update NEON struct names to match llvm-gcc changes.
...
(This is not required for correctness but might help with sanity.)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83415 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-06 21:16:19 +00:00
Bob Wilson
a3e8bf8412
Fix a comment typo.
...
Patch by Johnny Chen.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83407 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-06 20:18:46 +00:00
Nicolas Geoffray
35b305863a
Bugfix for the CommaSeparated option. The original code was adding the whole
...
string at the end of the list, instead of the last comma-separated string.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83405 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-06 19:55:53 +00:00
Ted Kremenek
3351085d84
Update CMake file.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83404 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-06 19:45:38 +00:00
Jeffrey Yasskin
0f2ba783d9
Fix illegal cross-type aliasing. Found by baldrick on a newer gcc.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83401 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-06 19:06:16 +00:00
Devang Patel
60b35bd8ec
Add support to handle debug info attached to an instruction.
...
This is not yet enabled.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83400 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-06 18:37:31 +00:00
Dan Gohman
82a47e9118
Make LLVMContext's pImpl member const.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83393 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-06 17:43:57 +00:00
Dan Gohman
e3cc3f3c84
Instead of printing unnecessary basic block labels as labels in
...
verbose-asm mode, print comments instead. This eliminates a non-comment
difference between verbose-asm mode and non-verbose-asm mode.
Also, factor out the relevant code out of all the targets and into
target-independent code.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83392 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-06 17:38:38 +00:00
Jeffrey Yasskin
6cf4963cdc
Fix PR5112, a miscompilation on gcc-4.0.3. Patch by Collin Winter!
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83391 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-06 17:25:50 +00:00
Chris Lattner
7963e15951
remove predicate simplifier, it never got the last bugs beaten
...
out of it, and jump threading, condprop and gvn are now getting
most of the benefit. This was approved by Nicholas and Nicolas.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83390 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-06 16:59:46 +00:00
Richard Osborne
f9416ea0cd
Remove xs1b predicate since it is no longer needed to differentiate betweem
...
xs1a and xs1b.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83383 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-06 16:17:57 +00:00
Richard Osborne
34bee6da7a
Remove xs1a subtarget. xs1a is a preproduction device used in
...
early development boards which is no longer supported in the
XMOS toolchain.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83381 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-06 16:01:09 +00:00
Richard Osborne
acfbb92824
Default to the xs1b subtarget
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83380 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-06 15:41:52 +00:00
Duncan Sands
ac53a0b272
Introduce and use convenience methods for getting pointer types
...
where the element is of a basic builtin type. For example, to get
an i8* use getInt8PtrTy.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83379 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-06 15:40:36 +00:00
Jim Grosbach
6e214805b1
grammar
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83378 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-06 15:03:44 +00:00
Devang Patel
8a4087ddc7
Fix cut-n-pasto.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83367 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-06 03:15:38 +00:00
Devang Patel
02c04237d0
Update processDebugLoc() to handle requests to process debug info, before and after emitting instructions.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83364 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-06 03:04:58 +00:00
Devang Patel
af0e272683
Update processDebugLoc() so that it can be used to process debug info before and after printing an instruction.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83363 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-06 02:19:11 +00:00
Devang Patel
89703cf838
Remove dead code.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83362 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-06 02:01:32 +00:00
Devang Patel
0d20ac8d17
Add utility routine to set begin and end labels for DbgScopes.
...
This will be used by processDebugLoc().
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83361 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-06 01:50:42 +00:00
Devang Patel
b39566d719
Remove unintentional function decl.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83356 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-06 01:31:35 +00:00
Devang Patel
e717faa467
Add utility routine to collect variable debug info. This is not yet used.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83355 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-06 01:26:37 +00:00
Jeffrey Yasskin
ea5ed00ea3
Fix http://llvm.org/PR5116 by rolling back r60822. This passes `make unittests
...
check-lit` on both x86-64 Linux and x86-32 Darwin.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83353 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-06 00:35:55 +00:00
Devang Patel
454e957979
Set default location for the function if it is not already set.
...
This code is not yet enabled.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83349 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-06 00:09:08 +00:00
Devang Patel
6f3dc920b0
Existence of a compile unit for input source file is a good indicator to check debug info's presence in a module.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83348 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-06 00:03:14 +00:00
Devang Patel
ffd9c3dd4a
If subprogram die is not available then construct new one.
...
This can happen if debug info is processed lazily.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83347 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-05 23:59:00 +00:00
Jeffrey Yasskin
4ece4e26f2
Add a test for http://llvm.org/PR3043 .
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83346 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-05 23:51:08 +00:00
Devang Patel
fd07cf56cd
Adjust context for the global variables that are not at file scope, e.g.
...
void foo() { static int bar = 42; }
Here, foo's DIE is parent of bar's DIE.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83344 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-05 23:40:42 +00:00
Devang Patel
b71a16d10d
Set address while constructing DIE.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83343 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-05 23:22:08 +00:00
Edward O'Callaghan
a2c7535e64
CMake misses a check for sbrk on NetBSD.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83341 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-05 23:05:32 +00:00
Evan Phoenix
1614e50d9f
Extend ConstantFolding to understand signed overflow variants
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83338 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-05 22:53:52 +00:00
Jim Grosbach
540b05d227
In Thumb1, the register scavenger is not always able to use an emergency
...
spill slot. When frame references are via the frame pointer, they will be
negative, but Thumb1 load/store instructions only allow positive immediate
offsets. Instead, Thumb1 will spill to R12.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83336 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-05 22:30:23 +00:00
Evan Phoenix
303bf73ebd
First test commit
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83334 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-05 22:29:11 +00:00
Torok Edwin
85c005af0d
Don't treat malloc calls with non-matching prototype as malloc.
...
Fixes second part of PR5130, miscompilation in FreeBSD kernel, where malloc takes 3 params,
and *does* initialize memory.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83324 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-05 21:15:43 +00:00
Edward O'Callaghan
aa5c1b7f93
No newline at end of files.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83318 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-05 18:43:19 +00:00
Devang Patel
f84548db63
Gracefully handle various scopes while recording source line info.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83317 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-05 18:03:19 +00:00