Dan Gohman
b95136e649
Replace TargetInstrInfo::isInvariantLoad and its target-specific
...
implementations with a new MachineInstr::isInvariantLoad, which uses
MachineMemOperands and is target-independent. This brings MachineLICM
and other functionality to targets which previously lacked an
isInvariantLoad implementation.
llvm-svn: 83475
2009-10-07 17:38:06 +00:00
Dan Gohman
aa09eaa3e8
Add a few simple MachineVerifier checks for MachineMemOperands.
...
llvm-svn: 83474
2009-10-07 17:36:00 +00:00
Bob Wilson
b38401ccef
Add codegen support for NEON vld3 intrinsics with 128-bit vectors.
...
llvm-svn: 83471
2009-10-07 17:24:55 +00:00
Bob Wilson
a77f6a7814
Rearrange code for selecting vld2 intrinsics. No functionality change.
...
This is just to be more consistent with the forthcoming code for vld3/4.
llvm-svn: 83470
2009-10-07 17:23:09 +00:00
Bob Wilson
39328dad67
Add tests for vld2 of 128-bit vectors.
...
llvm-svn: 83468
2009-10-07 17:19:13 +00:00
Jim Grosbach
61c5ce1bde
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.
llvm-svn: 83467
2009-10-07 17:12:56 +00:00
Devang Patel
c411175393
Do not assume that the module is set.
...
llvm-svn: 83462
2009-10-07 16:37:55 +00:00
Torok Edwin
8203691f27
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.
llvm-svn: 83458
2009-10-07 09:23:56 +00:00
Torok Edwin
6a66b4edd1
Add PR to this FIXME, looks like I didn't commit this change after all.
...
llvm-svn: 83457
2009-10-07 09:22:55 +00:00
Duncan Sands
27cb155f76
Make getPointerTo return a const PointerType* rather than
...
an unqualified PointerType* because it seems more correct.
llvm-svn: 83454
2009-10-07 07:35:19 +00:00
Dan Gohman
aab60a27fc
INTRINSIC_W_CHAIN and INTRINSIC_VOID do not use MemSDNode. They
...
may access memory, but they don't carry a MachineMemOperand.
llvm-svn: 83449
2009-10-07 03:00:18 +00:00
Eric Christopher
e6bebc66a7
Add FreeInst to the "is a call" check for Insts that are calls, but
...
not intrinsics.
llvm-svn: 83441
2009-10-07 00:54:08 +00:00
Dan Gohman
564b5f75ac
Fix this comment. The loop header is the loop entry point.
...
llvm-svn: 83437
2009-10-07 00:33:10 +00:00
Anton Korobeynikov
aba66ae89b
Add PseudoSourceValues for constpool stuff on ELF (Darwin should use something similar)
...
and register spills.
llvm-svn: 83435
2009-10-07 00:06:35 +00:00
Eric Christopher
8720c9ca69
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...
llvm-svn: 83434
2009-10-07 00:02:18 +00:00
Kevin Enderby
2c772c1ae9
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.
llvm-svn: 83424
2009-10-06 22:26:42 +00:00
Bob Wilson
8cd1ea81c4
Add codegen support for NEON vld2 operations on quad registers.
...
llvm-svn: 83422
2009-10-06 22:01:59 +00:00
Bob Wilson
8c108dc476
Use copyRegToReg hook to copy registers.
...
llvm-svn: 83421
2009-10-06 22:01:15 +00:00
Jeffrey Yasskin
c4f2348fe7
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.
llvm-svn: 83417
2009-10-06 21:45:26 +00:00
Bob Wilson
636d635cc1
Update NEON struct names to match llvm-gcc changes.
...
(This is not required for correctness but might help with sanity.)
llvm-svn: 83415
2009-10-06 21:16:19 +00:00
Bob Wilson
21056e1c2e
Fix a comment typo.
...
Patch by Johnny Chen.
llvm-svn: 83407
2009-10-06 20:18:46 +00:00
Nicolas Geoffray
bde5513d27
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.
llvm-svn: 83405
2009-10-06 19:55:53 +00:00
Ted Kremenek
4b5e7b5661
Update CMake file.
...
llvm-svn: 83404
2009-10-06 19:45:38 +00:00
Jeffrey Yasskin
d326d37781
Fix illegal cross-type aliasing. Found by baldrick on a newer gcc.
...
llvm-svn: 83401
2009-10-06 19:06:16 +00:00
Devang Patel
1639c0e45a
Add support to handle debug info attached to an instruction.
...
This is not yet enabled.
llvm-svn: 83400
2009-10-06 18:37:31 +00:00
Dan Gohman
560feba5c2
Make LLVMContext's pImpl member const.
...
llvm-svn: 83393
2009-10-06 17:43:57 +00:00
Dan Gohman
a803c712dd
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.
llvm-svn: 83392
2009-10-06 17:38:38 +00:00
Jeffrey Yasskin
572ef68cf5
Fix PR5112, a miscompilation on gcc-4.0.3. Patch by Collin Winter!
...
llvm-svn: 83391
2009-10-06 17:25:50 +00:00
Chris Lattner
e87add4b88
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.
llvm-svn: 83390
2009-10-06 16:59:46 +00:00
Richard Osborne
90a7ea5c13
Remove xs1b predicate since it is no longer needed to differentiate betweem
...
xs1a and xs1b.
llvm-svn: 83383
2009-10-06 16:17:57 +00:00
Richard Osborne
b692ade672
Remove xs1a subtarget. xs1a is a preproduction device used in
...
early development boards which is no longer supported in the
XMOS toolchain.
llvm-svn: 83381
2009-10-06 16:01:09 +00:00
Richard Osborne
ebd697eca6
Default to the xs1b subtarget
...
llvm-svn: 83380
2009-10-06 15:41:52 +00:00
Duncan Sands
2400ad7236
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.
llvm-svn: 83379
2009-10-06 15:40:36 +00:00
Jim Grosbach
d8a4aaa624
grammar
...
llvm-svn: 83378
2009-10-06 15:03:44 +00:00
Devang Patel
bad114ca60
Fix cut-n-pasto.
...
llvm-svn: 83367
2009-10-06 03:15:38 +00:00
Devang Patel
2fb4294e97
Update processDebugLoc() to handle requests to process debug info, before and after emitting instructions.
...
llvm-svn: 83364
2009-10-06 03:04:58 +00:00
Devang Patel
a8f35ac640
Update processDebugLoc() so that it can be used to process debug info before and after printing an instruction.
...
llvm-svn: 83363
2009-10-06 02:19:11 +00:00
Devang Patel
3200e99109
Remove dead code.
...
llvm-svn: 83362
2009-10-06 02:01:32 +00:00
Devang Patel
0141a90812
Add utility routine to set begin and end labels for DbgScopes.
...
This will be used by processDebugLoc().
llvm-svn: 83361
2009-10-06 01:50:42 +00:00
Devang Patel
2001f5878b
Remove unintentional function decl.
...
llvm-svn: 83356
2009-10-06 01:31:35 +00:00
Devang Patel
ac511d1acf
Add utility routine to collect variable debug info. This is not yet used.
...
llvm-svn: 83355
2009-10-06 01:26:37 +00:00
Jeffrey Yasskin
4b011e6a51
Fix http://llvm.org/PR5116 by rolling back r60822. This passes `make unittests
...
check-lit` on both x86-64 Linux and x86-32 Darwin.
llvm-svn: 83353
2009-10-06 00:35:55 +00:00
Devang Patel
6a7f2ee022
Set default location for the function if it is not already set.
...
This code is not yet enabled.
llvm-svn: 83349
2009-10-06 00:09:08 +00:00
Devang Patel
3b3d8a9d09
Existence of a compile unit for input source file is a good indicator to check debug info's presence in a module.
...
llvm-svn: 83348
2009-10-06 00:03:14 +00:00
Devang Patel
f129b0d44f
If subprogram die is not available then construct new one.
...
This can happen if debug info is processed lazily.
llvm-svn: 83347
2009-10-05 23:59:00 +00:00
Jeffrey Yasskin
4b0dd74b7f
Add a test for http://llvm.org/PR3043 .
...
llvm-svn: 83346
2009-10-05 23:51:08 +00:00
Devang Patel
dff583ac49
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.
llvm-svn: 83344
2009-10-05 23:40:42 +00:00
Devang Patel
4e9591a170
Set address while constructing DIE.
...
llvm-svn: 83343
2009-10-05 23:22:08 +00:00
Edward O'Callaghan
322db411d4
CMake misses a check for sbrk on NetBSD.
...
llvm-svn: 83341
2009-10-05 23:05:32 +00:00
Evan Phoenix
1b803795c7
Extend ConstantFolding to understand signed overflow variants
...
llvm-svn: 83338
2009-10-05 22:53:52 +00:00