oota-llvm.git
13 years agoAllow user-specified program entry point for llvm-rtdyld.
Jim Grosbach [Wed, 13 Apr 2011 15:38:30 +0000 (15:38 +0000)]
Allow user-specified program entry point for llvm-rtdyld.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129446 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoMCJIT relocation resolution.
Jim Grosbach [Wed, 13 Apr 2011 15:28:10 +0000 (15:28 +0000)]
MCJIT relocation resolution.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129445 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoExport LLVM_TARGETS_WITH_JIT in LLVMConfig.cmake.in. Without this,
Oscar Fuentes [Wed, 13 Apr 2011 15:25:31 +0000 (15:25 +0000)]
Export LLVM_TARGETS_WITH_JIT in LLVMConfig.cmake.in. Without this,
component names such as "engine" do not expand to "jit" and hence to
the native target libraries for external users.

Thanks to arrowdodger for reporting and diagnosing the problem.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129444 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoPR9214: Convert ConstantExpr::getIndices() to return an ArrayRef, plus
Jay Foad [Wed, 13 Apr 2011 15:22:40 +0000 (15:22 +0000)]
PR9214: Convert ConstantExpr::getIndices() to return an ArrayRef, plus
related tweaks to ExprMapKeyType.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129443 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoStop using dead function.
Jakob Stoklund Olesen [Wed, 13 Apr 2011 15:00:11 +0000 (15:00 +0000)]
Stop using dead function.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129442 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoRemove some redundant llvm:: prefixes.
Jay Foad [Wed, 13 Apr 2011 14:39:42 +0000 (14:39 +0000)]
Remove some redundant llvm:: prefixes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129441 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoFix a comment.
Jay Foad [Wed, 13 Apr 2011 13:48:09 +0000 (13:48 +0000)]
Fix a comment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129440 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoPR9214: Convert ConstantExpr::getWithOperands() to use ArrayRef.
Jay Foad [Wed, 13 Apr 2011 13:46:01 +0000 (13:46 +0000)]
PR9214: Convert ConstantExpr::getWithOperands() to use ArrayRef.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129439 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoFix typo.
Jay Foad [Wed, 13 Apr 2011 13:03:56 +0000 (13:03 +0000)]
Fix typo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129437 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoFix typo in comment.
Jay Foad [Wed, 13 Apr 2011 12:50:47 +0000 (12:50 +0000)]
Fix typo in comment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129436 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoLike the coding standards say, do not use "using namespace std".
Jay Foad [Wed, 13 Apr 2011 12:46:01 +0000 (12:46 +0000)]
Like the coding standards say, do not use "using namespace std".

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129435 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoFix an obvious problem with an alignment computation. AsmPrinter actually does
Cameron Zwarich [Wed, 13 Apr 2011 09:02:43 +0000 (09:02 +0000)]
Fix an obvious problem with an alignment computation. AsmPrinter actually does
the max itself, so it is not easy to write a test case for this, but I added a
test case that would fail if the code in AsmPrinter were removed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129432 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoFix a typo.
Cameron Zwarich [Wed, 13 Apr 2011 06:39:16 +0000 (06:39 +0000)]
Fix a typo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129429 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoIf a global variable has a specified alignment that is less than the preferred
Cameron Zwarich [Wed, 13 Apr 2011 06:03:16 +0000 (06:03 +0000)]
If a global variable has a specified alignment that is less than the preferred
alignment for its type, use the minimum of the specified alignment and the ABI
alignment. This fixes <rdar://problem/9275290>.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129428 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoUse %ull here.
Nick Lewycky [Wed, 13 Apr 2011 01:05:45 +0000 (01:05 +0000)]
Use %ull here.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129423 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoRecommit r129383. PreRA scheduler heuristic fixes: VRegCycle, TokenFactor latency.
Andrew Trick [Wed, 13 Apr 2011 00:38:32 +0000 (00:38 +0000)]
Recommit r129383. PreRA scheduler heuristic fixes: VRegCycle, TokenFactor latency.

Additional fixes:
Do something reasonable for subtargets with generic
itineraries by handle node latency the same as for an empty
itinerary. Now nodes default to unit latency unless an itinerary
explicitly specifies a zero cycle stage or it is a TokenFactor chain.

Original fixes:
UnitsSharePred was a source of randomness in the scheduler: node
priority depended on the queue data structure. I rewrote the recent
VRegCycle heuristics to completely replace the old heuristic without
any randomness. To make the ndoe latency adjustments work, I also
needed to do something a little more reasonable with TokenFactor. I
gave it zero latency to its consumers and always schedule it as low as
possible.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129421 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoReapply r129401 with patch for clang.
Bill Wendling [Wed, 13 Apr 2011 00:36:11 +0000 (00:36 +0000)]
Reapply r129401 with patch for clang.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129419 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoTemporarily revert r129408 to see if it brings the bots back.
Eric Christopher [Wed, 13 Apr 2011 00:20:59 +0000 (00:20 +0000)]
Temporarily revert r129408 to see if it brings the bots back.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129417 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoBe consistent about being virtual and returning void in the cfi methods.
Rafael Espindola [Tue, 12 Apr 2011 23:59:07 +0000 (23:59 +0000)]
Be consistent about being virtual and returning void in the cfi methods.
Implement the ones that were missing in the asm streamer.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129413 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoAdd sanity check for Ld/St Dual forms of Thumb2 instructions.
Johnny Chen [Tue, 12 Apr 2011 23:31:00 +0000 (23:31 +0000)]
Add sanity check for Ld/St Dual forms of Thumb2 instructions.

rdar://problem/9273947

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129411 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoAdd @earlyclobber constraints to the writeback register of all ARM store instructions.
Jakob Stoklund Olesen [Tue, 12 Apr 2011 23:27:48 +0000 (23:27 +0000)]
Add @earlyclobber constraints to the writeback register of all ARM store instructions.

The ARMARM specifies these instructions as unpredictable when storing the
writeback register. This shouldn't affect code generation much since storing a
pointer to itself is quite rare.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129409 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoFix a bug where we were counting the alias sets as completely used
Eric Christopher [Tue, 12 Apr 2011 23:23:14 +0000 (23:23 +0000)]
Fix a bug where we were counting the alias sets as completely used
registers for fast allocation.

Fixes rdar://9207598

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129408 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoI missed this new file in previous commit.
Devang Patel [Tue, 12 Apr 2011 23:21:44 +0000 (23:21 +0000)]
I missed this new file in previous commit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129407 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoSimplify. There is no need to use static variable.
Devang Patel [Tue, 12 Apr 2011 23:10:47 +0000 (23:10 +0000)]
Simplify. There is no need to use static variable.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129406 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoDo not reuse parameter name.
Devang Patel [Tue, 12 Apr 2011 23:09:06 +0000 (23:09 +0000)]
Do not reuse parameter name.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129405 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoFix a hole in the definition of "dependence" used by trap values. Trap
Dan Gohman [Tue, 12 Apr 2011 23:05:59 +0000 (23:05 +0000)]
Fix a hole in the definition of "dependence" used by trap values. Trap
values are also transmitted through branches which cause side effects to
be skipped altogether.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129404 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoRevert r129401 for now. Clang is using the old way of doing things.
Bill Wendling [Tue, 12 Apr 2011 22:59:27 +0000 (22:59 +0000)]
Revert r129401 for now. Clang is using the old way of doing things.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129403 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoThis mechanical patch moves type handling into CompileUnit from DwarfDebug. In case...
Devang Patel [Tue, 12 Apr 2011 22:53:02 +0000 (22:53 +0000)]
This mechanical patch moves type handling into CompileUnit from DwarfDebug. In case of multiple compile unit in one object file, each compile unit is responsible for its own set of type entries anyway. This refactoring makes this obvious.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129402 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoRemove the unaligned load intrinsics in favor of using native unaligned loads.
Bill Wendling [Tue, 12 Apr 2011 22:46:31 +0000 (22:46 +0000)]
Remove the unaligned load intrinsics in favor of using native unaligned loads.

Now that we have a first-class way to represent unaligned loads, the unaligned
load intrinsics are superfluous.

First part of <rdar://problem/8460511>.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129401 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoAdd more comments... err debug statements to the fast allocator.
Eric Christopher [Tue, 12 Apr 2011 22:17:44 +0000 (22:17 +0000)]
Add more comments... err debug statements to the fast allocator.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129400 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoFix compiler command line used by lit.py when working with NMake
Oscar Fuentes [Tue, 12 Apr 2011 22:10:38 +0000 (22:10 +0000)]
Fix compiler command line used by lit.py when working with NMake
generators. It may improve robustness when testing from VS too.

Based on a patch by David Neto!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129398 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoThe Thumb2 RFE instructions need to have their second halfword fully specified.
Johnny Chen [Tue, 12 Apr 2011 21:41:51 +0000 (21:41 +0000)]
The Thumb2 RFE instructions need to have their second halfword fully specified.
In addition, the base register is not rGPR, but GPR with th exception that:

    if n == 15 then UNPREDICTABLE

rdar://problem/9273836

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129391 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoSparseBitVector is SLOW.
Jakob Stoklund Olesen [Tue, 12 Apr 2011 21:30:53 +0000 (21:30 +0000)]
SparseBitVector is SLOW.

Use a Bitvector instead, we didn't need the smaller memory footprint anyway.
This makes the greedy register allocator 10% faster.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129390 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoMCJIT lazy relocation resolution and symbol address re-assignment.
Jim Grosbach [Tue, 12 Apr 2011 21:20:41 +0000 (21:20 +0000)]
MCJIT lazy relocation resolution and symbol address re-assignment.

Add handling for tracking the relocations on symbols and resolving them.
Keep track of the relocations even after they are resolved so that if
the RuntimeDyld client moves the object, it can update the address and any
relocations to that object will be updated.

For our trival object file load/run test harness (llvm-rtdyld), this enables
relocations between functions located in the same object module. It should
be trivially extendable to load multiple objects with mutual references.

As a simple example, the following now works (running on x86_64 Darwin 10.6):

$ cat t.c
int bar() {
  return 65;
}

int main() {
  return bar();
}
$ clang t.c -fno-asynchronous-unwind-tables -o t.o -c
$ otool -vt t.o
t.o:
(__TEXT,__text) section
_bar:
0000000000000000  pushq %rbp
0000000000000001  movq  %rsp,%rbp
0000000000000004  movl  $0x00000041,%eax
0000000000000009  popq  %rbp
000000000000000a  ret
000000000000000b  nopl  0x00(%rax,%rax)
_main:
0000000000000010  pushq %rbp
0000000000000011  movq  %rsp,%rbp
0000000000000014  subq  $0x10,%rsp
0000000000000018  movl  $0x00000000,0xfc(%rbp)
000000000000001f  callq 0x00000024
0000000000000024  addq  $0x10,%rsp
0000000000000028  popq  %rbp
0000000000000029  ret
$ llvm-rtdyld t.o -debug-only=dyld ; echo $?
Function sym: '_bar' @ 0
Function sym: '_main' @ 16
Extracting function: _bar from [0, 15]
    allocated to 0x100153000
Extracting function: _main from [16, 41]
    allocated to 0x100154000
Relocation at '_main' + 16 from '_bar(Word1: 0x2d000000)
Resolving relocation at '_main' + 16 (0x100154010) from '_bar (0x100153000)(pcrel, type: 2, Size: 4).
loaded '_main' at: 0x100154000
65
$

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129388 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoAdd bad register checks for Thumb2 Ld/St instructions.
Johnny Chen [Tue, 12 Apr 2011 21:17:51 +0000 (21:17 +0000)]
Add bad register checks for Thumb2 Ld/St instructions.

rdar://problem/9269047

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129387 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoRevert 129383. It causes some targets to hit a scheduler assert.
Andrew Trick [Tue, 12 Apr 2011 20:14:07 +0000 (20:14 +0000)]
Revert 129383. It causes some targets to hit a scheduler assert.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129385 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoPrint our uint64_t with the more portable (C99 and C++0x) %PRIu64 format
Nick Lewycky [Tue, 12 Apr 2011 20:06:50 +0000 (20:06 +0000)]
Print our uint64_t with the more portable (C99 and C++0x) %PRIu64 format
specifier.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129384 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoPreRA scheduler heuristic fixes: VRegCycle, TokenFactor latency.
Andrew Trick [Tue, 12 Apr 2011 19:54:36 +0000 (19:54 +0000)]
PreRA scheduler heuristic fixes: VRegCycle, TokenFactor latency.

UnitsSharePred was a source of randomness in the scheduler: node
priority depended on the queue data structure. I rewrote the recent
VRegCycle heuristics to completely replace the old heuristic without
any randomness. To make these heuristic adjustments to node latency work,
I also needed to do something a little more reasonable with TokenFactor. I
gave it zero latency to its consumers and always schedule it as low as
possible.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129383 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoDocument how to build a LLVM pass with CMake out of source.
Oscar Fuentes [Tue, 12 Apr 2011 19:40:35 +0000 (19:40 +0000)]
Document how to build a LLVM pass with CMake out of source.

Patch by arrowdodger!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129381 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoThe counters are unsigned.
Nick Lewycky [Tue, 12 Apr 2011 19:35:45 +0000 (19:35 +0000)]
The counters are unsigned.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129380 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoCreate new intervals for isolated blocks during region splitting.
Jakob Stoklund Olesen [Tue, 12 Apr 2011 19:32:53 +0000 (19:32 +0000)]
Create new intervals for isolated blocks during region splitting.

This merges the behavior of splitSingleBlocks into splitAroundRegion, so the
RS_Region and RS_Block register stages can be coalesced. That means the leftover
intervals after region splitting go directly to spilling instead of a second
pass of per-block splitting.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129379 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoRemove LastOffset from the asm parser.
Rafael Espindola [Tue, 12 Apr 2011 18:53:30 +0000 (18:53 +0000)]
Remove LastOffset from the asm parser.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129378 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoThe Thumb2 Ld, St, and Preload instructions with the i12 forms should have its Inst{23}
Johnny Chen [Tue, 12 Apr 2011 18:48:00 +0000 (18:48 +0000)]
The Thumb2 Ld, St, and Preload instructions with the i12 forms should have its Inst{23}
be specified as '1' (add = TRUE).

Also add a utility function for Thumb2.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129377 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoAdd SplitKit API to query and select the current interval being worked on.
Jakob Stoklund Olesen [Tue, 12 Apr 2011 18:11:31 +0000 (18:11 +0000)]
Add SplitKit API to query and select the current interval being worked on.

This makes it possible to target multiple registers in one pass.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129374 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoFix a bug in RegAllocBase::addMBBLiveIns() where a basic block could accidentally...
Jakob Stoklund Olesen [Tue, 12 Apr 2011 18:11:28 +0000 (18:11 +0000)]
Fix a bug in RegAllocBase::addMBBLiveIns() where a basic block could accidentally be skipped.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129373 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoRemove dead typedef.
Devang Patel [Tue, 12 Apr 2011 17:43:12 +0000 (17:43 +0000)]
Remove dead typedef.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129368 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoRefactor CompileUnit into a separate header.
Devang Patel [Tue, 12 Apr 2011 17:40:32 +0000 (17:40 +0000)]
Refactor CompileUnit into a separate header.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129367 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoPrint out a debug message when the reglist fails the sanity check for Thumb Ld/St...
Johnny Chen [Tue, 12 Apr 2011 17:09:04 +0000 (17:09 +0000)]
Print out a debug message when the reglist fails the sanity check for Thumb Ld/St Multiple.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129365 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoFix the case of a .cfi_rel_offset before any .cfi_def_cfa_offset.
Rafael Espindola [Tue, 12 Apr 2011 16:12:03 +0000 (16:12 +0000)]
Fix the case of a .cfi_rel_offset before any .cfi_def_cfa_offset.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129362 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoImplement .cfi_same_value.
Rafael Espindola [Tue, 12 Apr 2011 15:31:05 +0000 (15:31 +0000)]
Implement  .cfi_same_value.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129361 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoAdded new FIXME note
Garrison Venn [Tue, 12 Apr 2011 12:30:10 +0000 (12:30 +0000)]
Added new FIXME note

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129360 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoSplit a store of a VMOVDRR into two integer stores to avoid mixing NEON and ARM
Cameron Zwarich [Tue, 12 Apr 2011 02:24:17 +0000 (02:24 +0000)]
Split a store of a VMOVDRR into two integer stores to avoid mixing NEON and ARM
stores of arguments in the same cache line. This fixes the second half of
<rdar://problem/8674845>.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129345 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agolib/Transforms/Instrumentation/CMakeLists.txt: Add LineProfiling.cpp to fix up r129340.
NAKAMURA Takumi [Tue, 12 Apr 2011 01:54:40 +0000 (01:54 +0000)]
lib/Transforms/Instrumentation/CMakeLists.txt: Add LineProfiling.cpp to fix up r129340.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129343 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoAdd support for line profiling. Very work-in-progress.
Nick Lewycky [Tue, 12 Apr 2011 01:06:09 +0000 (01:06 +0000)]
Add support for line profiling. Very work-in-progress.

Use debug info in the IR to find the directory/file:line:col. Each time that location changes, bump a counter.

Unlike the existing profiling system, we don't try to look at argv[], and thusly don't require main() to be present in the IR. This matches GCC's technique where you specify the profiling flag when producing each .o file.

The runtime library is minimal, currently just calling printf at program shutdown time. The API is designed to make it possible to emit GCOV data later on.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129340 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoConsider ConstantAggregateZero as well as ConstantArray/Struct.
Nick Lewycky [Tue, 12 Apr 2011 01:02:45 +0000 (01:02 +0000)]
Consider ConstantAggregateZero as well as ConstantArray/Struct.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129338 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoFix typo.
Eric Christopher [Tue, 12 Apr 2011 00:48:08 +0000 (00:48 +0000)]
Fix typo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129334 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoMake IRBuilder support StringRef for building strings.
Nick Lewycky [Tue, 12 Apr 2011 00:29:07 +0000 (00:29 +0000)]
Make IRBuilder support StringRef for building strings.

Also document that the global variables produced are mergable.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129330 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoTidy up a bit now that we're using the MemoryManager interface.
Jim Grosbach [Tue, 12 Apr 2011 00:23:32 +0000 (00:23 +0000)]
Tidy up a bit now that we're using the MemoryManager interface.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129328 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoAdd one test case (svc).
Johnny Chen [Tue, 12 Apr 2011 00:21:48 +0000 (00:21 +0000)]
Add one test case (svc).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129327 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoMatch case for invalid constant error messages and add a new
Eric Christopher [Tue, 12 Apr 2011 00:18:03 +0000 (00:18 +0000)]
Match case for invalid constant error messages and add a new
test for invalid hexadecimals.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129326 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoA8.6.16 B
Johnny Chen [Tue, 12 Apr 2011 00:14:49 +0000 (00:14 +0000)]
A8.6.16 B
Encoding T1 (tBcc)
if cond == '1110' then UNDEFINED;

rdar://problem/9268681

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129325 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoFix reassociate to use a worklist instead of recursing when new
Dan Gohman [Tue, 12 Apr 2011 00:11:56 +0000 (00:11 +0000)]
Fix reassociate to use a worklist instead of recursing when new
reassociation opportunities are exposed. This fixes a bug where
the nested reassociation expects to be the IR to be consistent,
but it isn't, because the outer reassociation has disconnected
some of the operands.  rdar://9167457

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129324 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoTest for invalid constant expr addition - bad octal constant.
Eric Christopher [Tue, 12 Apr 2011 00:03:38 +0000 (00:03 +0000)]
Test for invalid constant expr addition - bad octal constant.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129323 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoTo avoid printing out multiple error messages for cases like:
Eric Christopher [Tue, 12 Apr 2011 00:03:13 +0000 (00:03 +0000)]
To avoid printing out multiple error messages for cases like:

.long 80+08

go ahead and assume that if we've got an Error token that we handled it
already. Otherwise if it's a token we can't handle then go ahead and
return the default error.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129322 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoReuse live interval union between functions. This saves a bit of compile time
Jakob Stoklund Olesen [Mon, 11 Apr 2011 23:57:14 +0000 (23:57 +0000)]
Reuse live interval union between functions. This saves a bit of compile time
when compiling many small functions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129321 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoThumb disassembler was erroneously rejecting "blx sp" instruction.
Johnny Chen [Mon, 11 Apr 2011 23:33:30 +0000 (23:33 +0000)]
Thumb disassembler was erroneously rejecting "blx sp" instruction.

rdar://problem/9267838

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129320 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agocomment cleanup, use moveBefore instead of removeFromParent+insertBefore.
Chris Lattner [Mon, 11 Apr 2011 23:24:57 +0000 (23:24 +0000)]
comment cleanup, use moveBefore instead of removeFromParent+insertBefore.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129319 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoTableGen: Keep the order of DECL_CONTEXT() for DeclNodes.td. RecordVector may be...
NAKAMURA Takumi [Mon, 11 Apr 2011 23:20:28 +0000 (23:20 +0000)]
TableGen: Keep the order of DECL_CONTEXT() for DeclNodes.td. RecordVector may be used instead of RecordSet.

The result of DeclNodes.inc was unstable on msys, Windows 7 x64.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129317 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoremove the StructRetPromotion pass. It is unused, not maintained and
Chris Lattner [Mon, 11 Apr 2011 23:09:44 +0000 (23:09 +0000)]
remove the StructRetPromotion pass.  It is unused, not maintained and
has some bugs.  If this is interesting functionality, it should be
reimplemented in the argpromotion pass.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129314 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoFix an error in the MBlaze delay slot filler.
Wesley Peck [Mon, 11 Apr 2011 22:45:02 +0000 (22:45 +0000)]
Fix an error in the MBlaze delay slot filler.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129313 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agobuild: Add support for a SHOW_DIAGNOSTICS build variable.
Daniel Dunbar [Mon, 11 Apr 2011 22:37:39 +0000 (22:37 +0000)]
build: Add support for a SHOW_DIAGNOSTICS build variable.

If enabled, this will attempt to use the CC_LOG_DIAGNOSTICS feature I dropped
into Clang to print a log of all the diagnostics generated during an individual
build (from the top-level). Not sure if this will actually be useful, but for
now it is handy for testing the option.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129312 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoAdd scheduling information for the MBlaze backend.
Wesley Peck [Mon, 11 Apr 2011 22:31:52 +0000 (22:31 +0000)]
Add scheduling information for the MBlaze backend.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129311 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoLex, and then fail on invalid constants.
Eric Christopher [Mon, 11 Apr 2011 22:24:56 +0000 (22:24 +0000)]
Lex, and then fail on invalid constants.

Testcase forthcoming.

rdar://8490596

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129309 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoJust because a GlobalVariable's initializer is [N x { i32, void ()* }] doesn't
Nick Lewycky [Mon, 11 Apr 2011 22:11:20 +0000 (22:11 +0000)]
Just because a GlobalVariable's initializer is [N x { i32, void ()* }] doesn't
mean that it has to be ConstantArray of ConstantStruct. We might have
ConstantAggregateZero, at either level, so don't crash on that.

Also, semi-deprecate the sentinal value. The linker isn't aware of sentinals so
we end up with the two lists appended, each with their "sentinals" on them.
Different parts of LLVM treated sentinals differently, so make them all just
ignore the single entry and continue on with the rest of the list.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129307 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoImplement cfi_rel_offset
Rafael Espindola [Mon, 11 Apr 2011 21:49:50 +0000 (21:49 +0000)]
Implement cfi_rel_offset

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129306 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoSpeed up eviction by stopping collectInterferingVRegs as soon as the spill
Jakob Stoklund Olesen [Mon, 11 Apr 2011 21:47:01 +0000 (21:47 +0000)]
Speed up eviction by stopping collectInterferingVRegs as soon as the spill
weight limit has been exceeded.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129305 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoAdd test for previous commit.
Rafael Espindola [Mon, 11 Apr 2011 21:41:34 +0000 (21:41 +0000)]
Add test for previous commit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129304 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoDon't crash on invalid instructions when disassembling MBlaze code.
Wesley Peck [Mon, 11 Apr 2011 21:35:21 +0000 (21:35 +0000)]
Don't crash on invalid instructions when disassembling MBlaze code.
This fixes http://llvm.org/bugs/show_bug.cgi?id=9653

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129303 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoThe default of the dispatch switch statement was to branch to a BB that executed
Bill Wendling [Mon, 11 Apr 2011 21:32:34 +0000 (21:32 +0000)]
The default of the dispatch switch statement was to branch to a BB that executed
the 'unwind' instruction. However, later on that instruction was converted into
a jump to the basic block it was located in, causing an infinite loop when we
get there.

It turns out, we get there if the _Unwind_Resume_or_Rethrow call returns (which
it's not supposed to do). It returns if it cannot find a place to unwind
to. Thus we would get what appears to be a "hang" when in reality it's just that
the EH couldn't be propagated further along.

Instead of infinitely looping (or calling `unwind', which none of our back-ends
support (it's lowered into nothing...)), call the @llvm.trap() intrinsic
instead. This may not conform to specific rules of a particular language, but
it's rather better than infinitely looping.

<rdar://problem/9175843&9233582>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129302 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoFix the bug where the immediate shift amount for Thumb logical shift instructions...
Johnny Chen [Mon, 11 Apr 2011 21:14:35 +0000 (21:14 +0000)]
Fix the bug where the immediate shift amount for Thumb logical shift instructions are incorrectly disassembled.

rdar://problem/9266265

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129298 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoLook pass copies when determining whether hoisting would end up inserting more copies...
Evan Cheng [Mon, 11 Apr 2011 21:09:18 +0000 (21:09 +0000)]
Look pass copies when determining whether hoisting would end up inserting more copies. rdar://9266679

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129297 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoimplement .cfi_adjust_cfa_offset.
Rafael Espindola [Mon, 11 Apr 2011 20:29:16 +0000 (20:29 +0000)]
implement .cfi_adjust_cfa_offset.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129296 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoGet rid of useless comment; if a file uses functions from a given header,
Eli Friedman [Mon, 11 Apr 2011 20:16:05 +0000 (20:16 +0000)]
Get rid of useless comment; if a file uses functions from a given header,
it is obvious that it should be included.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129295 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoFix another using-CPSR-twice bug in my ADCS/SBCS cleanups, and make proper use of...
Owen Anderson [Mon, 11 Apr 2011 20:12:19 +0000 (20:12 +0000)]
Fix another using-CPSR-twice bug in my ADCS/SBCS cleanups, and make proper use of the Commutable bit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129294 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoSkip a binary search when possible.
Jakob Stoklund Olesen [Mon, 11 Apr 2011 20:01:44 +0000 (20:01 +0000)]
Skip a binary search when possible.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129293 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoUse a faster algorithm for computing MBB live-in registers after register allocation.
Jakob Stoklund Olesen [Mon, 11 Apr 2011 20:01:41 +0000 (20:01 +0000)]
Use a faster algorithm for computing MBB live-in registers after register allocation.

LiveIntervals::findLiveInMBBs has to do a full binary search for each segment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129292 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoBecause some systems have reported that this example would not build the
Garrison Venn [Mon, 11 Apr 2011 19:52:49 +0000 (19:52 +0000)]
Because some systems have reported that this example would not build the
header file cstdio was added as an include.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129291 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoTrivial comment fix.
Johnny Chen [Mon, 11 Apr 2011 18:51:50 +0000 (18:51 +0000)]
Trivial comment fix.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129288 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoFix a couple of places where changes are made but not tracked.
Evan Cheng [Mon, 11 Apr 2011 18:47:20 +0000 (18:47 +0000)]
Fix a couple of places where changes are made but not tracked.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129287 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoCheck invalid register encodings for LdFrm/StFrm ARM instructions and flag them as
Johnny Chen [Mon, 11 Apr 2011 18:34:12 +0000 (18:34 +0000)]
Check invalid register encodings for LdFrm/StFrm ARM instructions and flag them as
invalid instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129286 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoAdding support for printing operands symbolically to llvm's public 'C'
Kevin Enderby [Mon, 11 Apr 2011 18:08:50 +0000 (18:08 +0000)]
Adding support for printing operands symbolically to llvm's public 'C'
disassembler API.  Hooked this up to the ARM target so such tools as Darwin's
otool(1) can now print things like branch targets for example this:
  blx _puts
instead of this:
  blx #-36
And even print the expression encoded in the Mach-O relocation entried for
things like this:
  movt r0, :upper16:((_foo-_bar)+1234)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129284 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoDon't add live ranges for sub-registers when clobbering a physical register.
Jakob Stoklund Olesen [Mon, 11 Apr 2011 18:08:10 +0000 (18:08 +0000)]
Don't add live ranges for sub-registers when clobbering a physical register.

Both coalescing and register allocation already check aliases for interference,
so these extra segments are only slowing us down.

This speeds up both linear scan and the greedy register allocator.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129283 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoSpeed up LiveIntervalUnion::unify by handling end insertion specially.
Jakob Stoklund Olesen [Mon, 11 Apr 2011 15:00:44 +0000 (15:00 +0000)]
Speed up LiveIntervalUnion::unify by handling end insertion specially.

This particularly helps with the initial transfer of fixed intervals.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129277 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoTime the initial seeding of live registers
Jakob Stoklund Olesen [Mon, 11 Apr 2011 15:00:42 +0000 (15:00 +0000)]
Time the initial seeding of live registers

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129276 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoDon't shrink live ranges after dead code elimination unless it is going to help.
Jakob Stoklund Olesen [Mon, 11 Apr 2011 15:00:39 +0000 (15:00 +0000)]
Don't shrink live ranges after dead code elimination unless it is going to help.

In particular, don't repeatedly recompute the PIC base live range after rematerialization.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129275 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoCMake: remove some unnecesary code and ToDos.
Oscar Fuentes [Mon, 11 Apr 2011 14:52:39 +0000 (14:52 +0000)]
CMake: remove some unnecesary code and ToDos.

Patch by arrowdodger!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129274 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoFix or remove code which seemed to think that the operand of a Constant
Jay Foad [Mon, 11 Apr 2011 09:48:55 +0000 (09:48 +0000)]
Fix or remove code which seemed to think that the operand of a Constant
was always a User.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129272 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoDon't include Operator.h from InstrTypes.h.
Jay Foad [Mon, 11 Apr 2011 09:35:34 +0000 (09:35 +0000)]
Don't include Operator.h from InstrTypes.h.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129271 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoPhi nodes always use an even number of operands, so don't ever allocate
Jay Foad [Mon, 11 Apr 2011 09:25:51 +0000 (09:25 +0000)]
Phi nodes always use an even number of operands, so don't ever allocate
an odd number.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129270 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agodocs/CommandGuide/index.html: Fix CSS url to relative.
NAKAMURA Takumi [Mon, 11 Apr 2011 03:27:38 +0000 (03:27 +0000)]
docs/CommandGuide/index.html: Fix CSS url to relative.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129268 91177308-0d34-0410-b5e6-96231b3b80d8