oota-llvm.git
12 years agoImprove the implementation of .incbin directive by replacing a loop by using
Kevin Enderby [Wed, 14 Dec 2011 22:34:45 +0000 (22:34 +0000)]
Improve the implementation of .incbin directive by replacing a loop by using
getStreamer().EmitBytes.  Suggestion by Benjamin Kramer!

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

12 years agoLSR: Fold redundant bitcasts on-the-fly.
Andrew Trick [Wed, 14 Dec 2011 22:07:19 +0000 (22:07 +0000)]
LSR: Fold redundant bitcasts on-the-fly.

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

12 years agoARM NEON fix alignment encoding for VST2 w/ writeback.
Jim Grosbach [Wed, 14 Dec 2011 21:49:24 +0000 (21:49 +0000)]
ARM NEON fix alignment encoding for VST2 w/ writeback.

Add tests for w/ writeback instruction parsing and encoding.

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

12 years agoAdd the .incbin directive which takes the binary data from a file and emits
Kevin Enderby [Wed, 14 Dec 2011 21:47:48 +0000 (21:47 +0000)]
Add the .incbin directive which takes the binary data from a file and emits
it to the streamer.  rdar://10383898

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

12 years agoNuke old code. Missed in last commit.
Jim Grosbach [Wed, 14 Dec 2011 21:41:32 +0000 (21:41 +0000)]
Nuke old code. Missed in last commit.

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

12 years agoAdd high level description of MachineInstr bundles.
Evan Cheng [Wed, 14 Dec 2011 21:32:14 +0000 (21:32 +0000)]
Add high level description of MachineInstr bundles.

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

12 years agoARM NEON refactor VST2 w/ writeback instructions.
Jim Grosbach [Wed, 14 Dec 2011 21:32:11 +0000 (21:32 +0000)]
ARM NEON refactor VST2 w/ writeback instructions.

In addition to improving the representation, this adds support for assembly
parsing of these instructions.

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

12 years agoARM NEON improve factoring a bit. No functional change.
Jim Grosbach [Wed, 14 Dec 2011 20:59:15 +0000 (20:59 +0000)]
ARM NEON improve factoring a bit. No functional change.

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

12 years agoModel ARM predicated write as read-mod-write. e.g.
Evan Cheng [Wed, 14 Dec 2011 20:00:08 +0000 (20:00 +0000)]
Model ARM predicated write as read-mod-write. e.g.
r0 = mov #0
r0 = moveq #1

Then the second instruction has an implicit data dependency on the first
instruction. Sadly I have yet to come up with a small test case that
demonstrate the post-ra scheduler taking advantage of this.

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

12 years agoARM NEON VST2 assembly parsing and encoding.
Jim Grosbach [Wed, 14 Dec 2011 19:35:22 +0000 (19:35 +0000)]
ARM NEON VST2 assembly parsing and encoding.

Work in progress. Parsing for non-writeback, single spaced register lists
works now. The rest have the representations better factored, but still
need more to be able to parse properly.

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

12 years agoFix for bug #11429: Wrong behaviour for switches. Small improvement for code size...
Stepan Dyatkovskiy [Wed, 14 Dec 2011 19:19:17 +0000 (19:19 +0000)]
Fix for bug #11429: Wrong behaviour for switches. Small improvement for code size heuristics.

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

12 years agoIt turns out that clang does use pointer-to-function types to
Dan Gohman [Wed, 14 Dec 2011 19:10:53 +0000 (19:10 +0000)]
It turns out that clang does use pointer-to-function types to
point to ARC-managed pointers sometimes. This fixes rdar://10551239.

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

12 years agoFix speling and 80-col.
Jakob Stoklund Olesen [Wed, 14 Dec 2011 18:49:13 +0000 (18:49 +0000)]
Fix speling and 80-col.

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

12 years agoAdd support for local dynamic TLS model in LowerGlobalTLSAddress. Direct object
Akira Hatanaka [Wed, 14 Dec 2011 18:26:41 +0000 (18:26 +0000)]
Add support for local dynamic TLS model in LowerGlobalTLSAddress. Direct object
emission is not supported yet, but a patch that adds the support should follow
soon.

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

12 years agoFix copy/pasto that skipped the 'modify' step.
Jim Grosbach [Wed, 14 Dec 2011 18:12:37 +0000 (18:12 +0000)]
Fix copy/pasto that skipped the 'modify' step.

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

12 years agoARM/Thumb2 mov vs. mvn alias goes both ways.
Jim Grosbach [Wed, 14 Dec 2011 17:56:51 +0000 (17:56 +0000)]
ARM/Thumb2 mov vs. mvn alias goes both ways.

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

12 years agoVFP2 is required for FP loads. Noticed by inspection.
Chad Rosier [Wed, 14 Dec 2011 17:55:03 +0000 (17:55 +0000)]
VFP2 is required for FP loads.  Noticed by inspection.

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

12 years agoTidy up.
Chad Rosier [Wed, 14 Dec 2011 17:32:02 +0000 (17:32 +0000)]
Tidy up.

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

12 years agoARM/Thumb2 'cmp rn, #imm' alias to cmn.
Jim Grosbach [Wed, 14 Dec 2011 17:30:24 +0000 (17:30 +0000)]
ARM/Thumb2 'cmp rn, #imm' alias to cmn.

When 'cmp rn #imm' doesn't match due to the immediate not being representable,
but 'cmn rn, #-imm' does match, use the latter in place of the former, as
it's equivalent.

rdar://10552389

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

12 years agoFix 80-column violation and extraneous brackets.
Chad Rosier [Wed, 14 Dec 2011 17:26:05 +0000 (17:26 +0000)]
Fix 80-column violation and extraneous brackets.

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

12 years agoVectors are not aggregate types (see isAggregateType).
Duncan Sands [Wed, 14 Dec 2011 15:44:20 +0000 (15:44 +0000)]
Vectors are not aggregate types (see isAggregateType).

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

12 years agollvm/lib/CodeGen: Fix cmake build since r146542.
NAKAMURA Takumi [Wed, 14 Dec 2011 03:50:53 +0000 (03:50 +0000)]
llvm/lib/CodeGen: Fix cmake build since r146542.

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

12 years agoFix a stupid typo in MemDepPrinter.
Eli Friedman [Wed, 14 Dec 2011 02:54:39 +0000 (02:54 +0000)]
Fix a stupid typo in MemDepPrinter.

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

12 years agoAdd missing cases to SDNode::getOperationName(). Patch by Micah Villmow.
Eli Friedman [Wed, 14 Dec 2011 02:28:54 +0000 (02:28 +0000)]
Add missing cases to SDNode::getOperationName().  Patch by Micah Villmow.

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

12 years agoAllow target to specify register output dependency. Still default to one.
Evan Cheng [Wed, 14 Dec 2011 02:28:53 +0000 (02:28 +0000)]
Allow target to specify register output dependency. Still default to one.

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

12 years agoRevert r146481 to review possible miscompilations.
Bill Wendling [Wed, 14 Dec 2011 02:18:26 +0000 (02:18 +0000)]
Revert r146481 to review possible miscompilations.

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

12 years agoDisable to review some failures.
Bill Wendling [Wed, 14 Dec 2011 02:16:54 +0000 (02:16 +0000)]
Disable to review some failures.

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

12 years agoARM assembler support for the target-specific .req directive.
Jim Grosbach [Wed, 14 Dec 2011 02:16:11 +0000 (02:16 +0000)]
ARM assembler support for the target-specific .req directive.

rdar://10549683

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

12 years ago- Add MachineInstrBundle.h and MachineInstrBundle.cpp. This includes a function
Evan Cheng [Wed, 14 Dec 2011 02:11:42 +0000 (02:11 +0000)]
- Add MachineInstrBundle.h and MachineInstrBundle.cpp. This includes a function
  to finalize MI bundles (i.e. add BUNDLE instruction and computing register def
  and use lists of the BUNDLE instruction) and a pass to unpack bundles.
- Teach more of MachineBasic and MachineInstr methods to be bundle aware.
- Switch Thumb2 IT block to MI bundles and delete the hazard recognizer hack to
  prevent IT blocks from being broken apart.

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

12 years agoAdd newline at EOF.
Chad Rosier [Wed, 14 Dec 2011 01:34:39 +0000 (01:34 +0000)]
Add newline at EOF.

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

12 years agoDW_AT_virtuality is also defined to be constant, not flag.
Nick Lewycky [Wed, 14 Dec 2011 00:56:07 +0000 (00:56 +0000)]
DW_AT_virtuality is also defined to be constant, not flag.

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

12 years agoPer discussion on the list, remove BitcodeVerify pass to reimplement as a free function.
Chad Rosier [Wed, 14 Dec 2011 00:29:31 +0000 (00:29 +0000)]
Per discussion on the list, remove BitcodeVerify pass to reimplement as a free function.

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

12 years ago[asan] remove .preinit_array from the compiler module (it breaks .so builds). This...
Kostya Serebryany [Wed, 14 Dec 2011 00:01:51 +0000 (00:01 +0000)]
[asan] remove .preinit_array from the compiler module (it breaks .so builds). This should be done in the run-time.

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

12 years agollvm-nm: refactor in order to support reading files from stdin.
Michael J. Spencer [Tue, 13 Dec 2011 23:17:29 +0000 (23:17 +0000)]
llvm-nm: refactor in order to support reading files from stdin.

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

12 years agoSupport/FileSystem: Add file_magic and move a vew clients over to it.
Michael J. Spencer [Tue, 13 Dec 2011 23:17:12 +0000 (23:17 +0000)]
Support/FileSystem: Add file_magic and move a vew clients over to it.

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

12 years agoSupport/Program: Make Change<stream>ToBinary return error_code.
Michael J. Spencer [Tue, 13 Dec 2011 23:16:49 +0000 (23:16 +0000)]
Support/Program: Make Change<stream>ToBinary return error_code.

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

12 years agoCleanup whitespace.
Michael J. Spencer [Tue, 13 Dec 2011 23:16:15 +0000 (23:16 +0000)]
Cleanup whitespace.

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

12 years agoThumb2 assembler aliases for "mov(shifted register)"
Jim Grosbach [Tue, 13 Dec 2011 22:45:11 +0000 (22:45 +0000)]
Thumb2 assembler aliases for "mov(shifted register)"

rdar://10549767

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

12 years agoARM LDM/STM system instruction variants.
Jim Grosbach [Tue, 13 Dec 2011 21:48:29 +0000 (21:48 +0000)]
ARM LDM/STM system instruction variants.

rdar://10550269

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

12 years agoThumb2 pre/post indexed stores can be from any non-PC GPR.
Jim Grosbach [Tue, 13 Dec 2011 21:10:25 +0000 (21:10 +0000)]
Thumb2 pre/post indexed stores can be from any non-PC GPR.

rdar://10549786

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

12 years agoTest for 146516
Jim Grosbach [Tue, 13 Dec 2011 21:06:59 +0000 (21:06 +0000)]
Test for 146516

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

12 years agoThumb2 tweak for ccout handling in RSB parsing.
Jim Grosbach [Tue, 13 Dec 2011 21:06:41 +0000 (21:06 +0000)]
Thumb2 tweak for ccout handling in RSB parsing.

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

12 years agoARM thumb2 parsing of "rsb rd, rn, #0".
Jim Grosbach [Tue, 13 Dec 2011 20:50:38 +0000 (20:50 +0000)]
ARM thumb2 parsing of "rsb rd, rn, #0".

rdar://10549741

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

12 years agoARM NEON two-operand aliases for VQDMULH.
Jim Grosbach [Tue, 13 Dec 2011 20:40:37 +0000 (20:40 +0000)]
ARM NEON two-operand aliases for VQDMULH.

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

12 years agoARM pre-UAL NEG mnemonic for convenience when porting old code.
Jim Grosbach [Tue, 13 Dec 2011 20:23:22 +0000 (20:23 +0000)]
ARM pre-UAL NEG mnemonic for convenience when porting old code.

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

12 years agoARM add some more pre-UAL VFP mnemonics for convenience when porting old code.
Jim Grosbach [Tue, 13 Dec 2011 20:13:48 +0000 (20:13 +0000)]
ARM add some more pre-UAL VFP mnemonics for convenience when porting old code.

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

12 years agoARM add more 'gas' compatibility aliases for NEON instructions.
Jim Grosbach [Tue, 13 Dec 2011 20:08:32 +0000 (20:08 +0000)]
ARM add more 'gas' compatibility aliases for NEON instructions.

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

12 years agomention AddressSanitizer in 3.1 release notes
Kostya Serebryany [Tue, 13 Dec 2011 19:46:24 +0000 (19:46 +0000)]
mention AddressSanitizer in 3.1 release notes

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

12 years ago[asan] report an error if blacklist file contains a malformed regex. fixes asan issue 17
Kostya Serebryany [Tue, 13 Dec 2011 19:34:53 +0000 (19:34 +0000)]
[asan] report an error if blacklist file contains a malformed regex. fixes asan issue 17

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

12 years ago[fast-isel] Unaligned loads of floats are not supported. Therefore, convert to a...
Chad Rosier [Tue, 13 Dec 2011 19:22:14 +0000 (19:22 +0000)]
[fast-isel] Unaligned loads of floats are not supported.  Therefore, convert to a regular
load and then move the result from a GPR to a FPR.

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

12 years agoRip llvm 3.0 out of the release notes, making room for LLVM 3.1
Chris Lattner [Tue, 13 Dec 2011 17:55:30 +0000 (17:55 +0000)]
Rip llvm 3.0 out of the release notes, making room for LLVM 3.1

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

12 years ago[fast-isel] Remove SelectInsertValue() as fast-isel wasn't designed to handle
Chad Rosier [Tue, 13 Dec 2011 17:45:06 +0000 (17:45 +0000)]
[fast-isel] Remove SelectInsertValue() as fast-isel wasn't designed to handle
instructions that define aggregate types.

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

12 years agoAvoid using the 'insertvalue' instruction here.
Bill Wendling [Tue, 13 Dec 2011 09:22:43 +0000 (09:22 +0000)]
Avoid using the 'insertvalue' instruction here.

Fast ISel isn't able to handle 'insertvalue' and it causes a large slowdown
during -O0 compilation. We don't necessarily need to generate an aggregate of
the values here if they're just going to be extracted directly afterwards.
<rdar://problem/10530851>

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

12 years agoDW_AT_accessibility is "constant" class, not form class, so it may not use
Nick Lewycky [Tue, 13 Dec 2011 05:09:11 +0000 (05:09 +0000)]
DW_AT_accessibility is "constant" class, not form class, so it may not use
DW_FORM_flag. Use DW_FORM_data1 for one byte.

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

12 years agoAdd test/MC/Mips/dg.exp.
Akira Hatanaka [Tue, 13 Dec 2011 04:12:49 +0000 (04:12 +0000)]
Add test/MC/Mips/dg.exp.

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

12 years agoMove direct object emitter test to directory test/MC/Mips. Rename it to
Akira Hatanaka [Tue, 13 Dec 2011 03:50:34 +0000 (03:50 +0000)]
Move direct object emitter test to directory test/MC/Mips. Rename it to
elf-relsym.ll.

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

12 years agoExpand .cprestore directive to multiple instructions if the offset does not fit
Akira Hatanaka [Tue, 13 Dec 2011 03:09:05 +0000 (03:09 +0000)]
Expand .cprestore directive to multiple instructions if the offset does not fit
in a 16-bit field.

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

12 years agoRelocation against a symbol, instead of against section. We had some extreme
Akira Hatanaka [Tue, 13 Dec 2011 02:27:40 +0000 (02:27 +0000)]
Relocation against a symbol, instead of against section. We had some extreme
test cases where there were a lot of relocations applied relative to a large
rodata section. Gas would create a symbol for each of these whereas we would
be relative to the beginning of the rodata section. This change mimics what
gas does.

Patch by Jack Carter.

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

12 years agoDon't default the *cached* list of targets to build to an explicit list
Chandler Carruth [Tue, 13 Dec 2011 02:19:11 +0000 (02:19 +0000)]
Don't default the *cached* list of targets to build to an explicit list
of the targets we know about. Because this is cached, rebuilds won't
detect when new targets show up. It's also a bit simpler to just say
"all". If users want to restrict the target set, they can still do so,
and then the cache will preserve what they have explicitly set this
field to.

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

12 years agoInitial CodeGen support for CTTZ/CTLZ where a zero input produces an
Chandler Carruth [Tue, 13 Dec 2011 01:56:10 +0000 (01:56 +0000)]
Initial CodeGen support for CTTZ/CTLZ where a zero input produces an
undefined result. This adds new ISD nodes for the new semantics,
selecting them when the LLVM intrinsic indicates that the undef behavior
is desired. The new nodes expand trivially to the old nodes, so targets
don't actually need to do anything to support these new nodes besides
indicating that they should be expanded. I've done this for all the
operand types that I could figure out for all the targets. Owners of
various targets, please review and let me know if any of these are
incorrect.

Note that the expand behavior is *conservatively correct*, and exactly
matches LLVM's current behavior with these operations. Ideally this
patch will not change behavior in any way. For example the regtest suite
finds the exact same instruction sequences coming out of the code
generator. That's why there are no new tests here -- all of this is
being exercised by the existing test suite.

Thanks to Duncan Sands for reviewing the various bits of this patch and
helping me get the wrinkles ironed out with expanding for each target.
Also thanks to Chris for clarifying through all the discussions that
this is indeed the approach he was looking for. That said, there are
likely still rough spots. Further review much appreciated.

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

12 years agoUse the example from clang, not the GCC frontend, which doesn't exist anymore.
Bill Wendling [Tue, 13 Dec 2011 01:07:07 +0000 (01:07 +0000)]
Use the example from clang, not the GCC frontend, which doesn't exist anymore.

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

12 years agoCleanup. Clarify LSRInstance public methods.
Andrew Trick [Tue, 13 Dec 2011 00:55:33 +0000 (00:55 +0000)]
Cleanup. Clarify LSRInstance public methods.

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

12 years agoAccount for CPE alignment when searching for new water.
Jakob Stoklund Olesen [Tue, 13 Dec 2011 00:44:30 +0000 (00:44 +0000)]
Account for CPE alignment when searching for new water.

Constant pool entries with different alignment may cause more alignment
padding to be inserted. Compute the amount of padding needed, and try to
pick the location that requires the least amount of padding.

Also take the extra padding into account when the water is above the
use.

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

12 years agoTarget/Hexagon: Fix CMake build. We don't use add_llvm_library_dependencies().
NAKAMURA Takumi [Tue, 13 Dec 2011 00:36:04 +0000 (00:36 +0000)]
Target/Hexagon: Fix CMake build. We don't use add_llvm_library_dependencies().

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

12 years agoDon't rely on a particular version string for llvm.
Nick Lewycky [Tue, 13 Dec 2011 00:34:14 +0000 (00:34 +0000)]
Don't rely on a particular version string for llvm.

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

12 years agoTemporarily disable Hexagon tests. They are failing on OS X
Tony Linthicum [Tue, 13 Dec 2011 00:33:45 +0000 (00:33 +0000)]
Temporarily disable Hexagon tests.  They are failing on OS X

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

12 years ago[fast-isel] Guard "exhastive" fast-isel output with -fast-isel-verbose2.
Chad Rosier [Tue, 13 Dec 2011 00:05:11 +0000 (00:05 +0000)]
[fast-isel] Guard "exhastive" fast-isel output with -fast-isel-verbose2.

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

12 years agoAdd BitcodeVerifier.cpp to CMakeList.
Chad Rosier [Mon, 12 Dec 2011 23:11:26 +0000 (23:11 +0000)]
Add BitcodeVerifier.cpp to CMakeList.

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

12 years agoFix unused value warning for value used only in assert.
Nick Lewycky [Mon, 12 Dec 2011 22:59:34 +0000 (22:59 +0000)]
Fix unused value warning for value used only in assert.

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

12 years agoBegin sketching out a bitcode verifier pass. Idea is to emit a .bc file and
Chad Rosier [Mon, 12 Dec 2011 22:57:31 +0000 (22:57 +0000)]
Begin sketching out a bitcode verifier pass.  Idea is to emit a .bc file and
then read the file back in to verify use-list serialization/deserialization.

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

12 years agoIndvars: guard against exponential behavior in isHighCostExpansion.
Andrew Trick [Mon, 12 Dec 2011 22:46:16 +0000 (22:46 +0000)]
Indvars: guard against exponential behavior in isHighCostExpansion.

This should always be done as a matter of principal. I don't have a
case that exposes the problem. I just noticed this recently while
scanning the code and realized I meant to fix it long ago.

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

12 years agollvm-build: Switch to using the common subdirectory list instead of
Daniel Dunbar [Mon, 12 Dec 2011 22:45:59 +0000 (22:45 +0000)]
llvm-build: Switch to using the common subdirectory list instead of
autodiscovery.

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

12 years agoLLVMBuild: Introduce a common section which currently has a list of the
Daniel Dunbar [Mon, 12 Dec 2011 22:45:54 +0000 (22:45 +0000)]
LLVMBuild: Introduce a common section which currently has a list of the
subdirectories to traverse into.
 - Originally I wanted to avoid this and just autoscan, but this has one key
   flaw in that new subdirectories can not automatically trigger a rerun of the
   llvm-build tool. This is particularly a pain when switching back and forth
   between trees where one has added a subdirectory, as the dependencies will
   tend to be wrong. This will also eliminates FIXME implicitly.

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

12 years agollvm-build: Don't write out the required_libraries list for "special" components...
Daniel Dunbar [Mon, 12 Dec 2011 22:45:41 +0000 (22:45 +0000)]
llvm-build: Don't write out the required_libraries list for "special" components, it is generated.

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

12 years agollvm-build: Add sketchy support for preserving comments when using
Daniel Dunbar [Mon, 12 Dec 2011 22:45:35 +0000 (22:45 +0000)]
llvm-build: Add sketchy support for preserving comments when using
--write-llvmbuild.

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

12 years agoTest case for r146432 by Jack Carter.
Akira Hatanaka [Mon, 12 Dec 2011 22:41:39 +0000 (22:41 +0000)]
Test case for r146432 by Jack Carter.

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

12 years agoEmit B (unconditional branch) when -relocation-model=pic and J (jump) when
Akira Hatanaka [Mon, 12 Dec 2011 22:39:35 +0000 (22:39 +0000)]
Emit B (unconditional branch) when -relocation-model=pic and J (jump) when
-relocation-model=static.

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

12 years agoFix indentation.
Akira Hatanaka [Mon, 12 Dec 2011 22:38:19 +0000 (22:38 +0000)]
Fix indentation.

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

12 years agoFixed register allocator splitting a live range on a spilling variable.
Pete Cooper [Mon, 12 Dec 2011 22:16:27 +0000 (22:16 +0000)]
Fixed register allocator splitting a live range on a spilling variable.

If we create new intervals for a variable that is being spilled, then those new intervals are not guaranteed to also spill.  This means that anything reading from the original spilling value might not get the correct value if spills were missed.

Fixes <rdar://problem/10546864>

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

12 years agofix warning
Tony Linthicum [Mon, 12 Dec 2011 21:52:59 +0000 (21:52 +0000)]
fix warning

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

12 years agoImplement 'e' and 'f' modifiers for Neon inline asm. <rdar://problem/10551006>
Bob Wilson [Mon, 12 Dec 2011 21:45:15 +0000 (21:45 +0000)]
Implement 'e' and 'f' modifiers for Neon inline asm.  <rdar://problem/10551006>

These modifiers simply select either the low or high D subregister of a Neon
Q register.  I've also removed the unimplemented 'p' modifier, which turns out
to be a bit different than the comment here suggests and as far as I can tell
was only intended for internal use in Apple's version of gcc.

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

12 years agoHexagon backend support
Tony Linthicum [Mon, 12 Dec 2011 21:14:40 +0000 (21:14 +0000)]
Hexagon backend support

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

12 years agoOnly replace fwrite with fputc, if the return value is unused.
Joerg Sonnenberger [Mon, 12 Dec 2011 20:18:31 +0000 (20:18 +0000)]
Only replace fwrite with fputc, if the return value is unused.

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

12 years agoLLVMBuild: Remove trailing newline, which irked me.
Daniel Dunbar [Mon, 12 Dec 2011 19:48:00 +0000 (19:48 +0000)]
LLVMBuild: Remove trailing newline, which irked me.

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

12 years agoWhen computing reverse-CFG reverse-post-order, skip backedges, as
Dan Gohman [Mon, 12 Dec 2011 19:42:25 +0000 (19:42 +0000)]
When computing reverse-CFG reverse-post-order, skip backedges, as
detected in the forward-CFG DFS. This prevents the reverse-CFG from
visiting blocks inside loops after blocks that dominate them in the
case where loops have multiple exits.

No testcase, because this fixes a bug which in practice only shows
up in a full optimizer run, due to the use-list order.

This fixes rdar://10422791 and others.

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

12 years agoXOP instructions and encoding tests.
Jan Sjödin [Mon, 12 Dec 2011 19:37:49 +0000 (19:37 +0000)]
XOP instructions and encoding tests.

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

12 years agoAdd a postOffset() alignment argument.
Jakob Stoklund Olesen [Mon, 12 Dec 2011 19:25:54 +0000 (19:25 +0000)]
Add a postOffset() alignment argument.

This computes the offset of the layout sucessor block, considering its
alignment as well.

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

12 years agoFix typo.
Jakob Stoklund Olesen [Mon, 12 Dec 2011 19:25:51 +0000 (19:25 +0000)]
Fix typo.

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

12 years agoXOP encoding bits and logic.
Jan Sjödin [Mon, 12 Dec 2011 19:12:26 +0000 (19:12 +0000)]
XOP encoding bits and logic.

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

12 years agoAlso set the proper alignment on inner islands and the function itself.
Jakob Stoklund Olesen [Mon, 12 Dec 2011 18:45:45 +0000 (18:45 +0000)]
Also set the proper alignment on inner islands and the function itself.

Downgrade the alignment of the initial constant island when constant
pool entries are moved elsewhere.

This is all gated by -arm-align-constant-islands.

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

12 years agoAdd a TODO comment.
Dan Gohman [Mon, 12 Dec 2011 18:30:26 +0000 (18:30 +0000)]
Add a TODO comment.

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

12 years agollvm-config: Default to "all" if no components are specified.
Daniel Dunbar [Mon, 12 Dec 2011 18:22:04 +0000 (18:22 +0000)]
llvm-config: Default to "all" if no components are specified.
 - Fixes PR11530.

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

12 years agoFix a copy+pasto in a comment.
Dan Gohman [Mon, 12 Dec 2011 18:20:00 +0000 (18:20 +0000)]
Fix a copy+pasto in a comment.

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

12 years agoUse getArgOperand instead of getOperand on a call.
Dan Gohman [Mon, 12 Dec 2011 18:19:12 +0000 (18:19 +0000)]
Use getArgOperand instead of getOperand on a call.

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

12 years agoInline SetSeqToRelease into its only caller, since it's more clear that way.
Dan Gohman [Mon, 12 Dec 2011 18:16:56 +0000 (18:16 +0000)]
Inline SetSeqToRelease into its only caller, since it's more clear that way.

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

12 years agoMake MF a class member instead of passing it around everywhere.
Jakob Stoklund Olesen [Mon, 12 Dec 2011 18:16:53 +0000 (18:16 +0000)]
Make MF a class member instead of passing it around everywhere.

Also add an MCP member pointing to the machine constant pool.

No functional change intended.

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

12 years agoFix omitted break statements in a switch.
Dan Gohman [Mon, 12 Dec 2011 18:13:53 +0000 (18:13 +0000)]
Fix omitted break statements in a switch.

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

12 years ago[asan] use .preinit_array only on linux
Kostya Serebryany [Mon, 12 Dec 2011 18:01:46 +0000 (18:01 +0000)]
[asan] use .preinit_array only on linux

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

12 years agoRevert r146363 to allow buildbots to make forward progress.
Chad Rosier [Mon, 12 Dec 2011 17:58:31 +0000 (17:58 +0000)]
Revert r146363 to allow buildbots to make forward progress.

Original commit message:
Support/FileSystem: Implement canonicalize.

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

12 years agoAdd support for gnu_indirect_function.
Roman Divacky [Mon, 12 Dec 2011 17:34:04 +0000 (17:34 +0000)]
Add support for gnu_indirect_function.

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