oota-llvm.git
11 years agoR600: Factorize code handling Const Read Port limitation
Vincent Lejeune [Thu, 14 Mar 2013 15:50:45 +0000 (15:50 +0000)]
R600: Factorize code handling Const Read Port limitation

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

11 years ago[ASan] emit instrumentation for initialization order checking by default
Alexey Samsonov [Thu, 14 Mar 2013 12:38:58 +0000 (12:38 +0000)]
[ASan] emit instrumentation for initialization order checking by default

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

11 years agoPR14972: SROA vs. GVN exposed a really bad bug in SROA.
Chandler Carruth [Thu, 14 Mar 2013 11:32:24 +0000 (11:32 +0000)]
PR14972: SROA vs. GVN exposed a really bad bug in SROA.

The fundamental problem is that SROA didn't allow for overly wide loads
where the bits past the end of the alloca were masked away and the load
was sufficiently aligned to ensure there is no risk of page fault, or
other trapping behavior. With such widened loads, SROA would delete the
load entirely rather than clamping it to the size of the alloca in order
to allow mem2reg to fire. This was exposed by a test case that neatly
arranged for GVN to run first, widening certain loads, followed by an
inline step, and then SROA which miscompiles the code. However, I see no
reason why this hasn't been plaguing us in other contexts. It seems
deeply broken.

Diagnosing all of the above took all of 10 minutes of debugging. The
really annoying aspect is that fixing this completely breaks the pass.
;] There was an implicit reliance on the fact that no loads or stores
extended past the alloca once we decided to rewrite them in the final
stage of SROA. This was used to encode information about whether the
loads and stores had been split across multiple partitions of the
original alloca. That required threading explicit tracking of whether
a *use* of a partition is split across multiple partitions.

Once that was done, another problem arose: we allowed splitting of
integer loads and stores iff they were loads and stores to the entire
alloca. This is a really arbitrary limitation, and splitting at least
some integer loads and stores is crucial to maximize promotion
opportunities. My first attempt was to start removing the restriction
entirely, but currently that does Very Bad Things by causing *many*
common alloca patterns to be fully decomposed into i8 operations and
lots of or-ing together to produce larger integers on demand. The code
bloat is terrifying. That is still the right end-goal, but substantial
work must be done to either merge partitions or ensure that small i8
values are eagerly merged in some other pass. Sadly, figuring all this
out took essentially all the time and effort here.

So the end result is that we allow splitting only when the load or store
at least covers the alloca. That ensures widened loads and stores don't
hurt SROA, and that we don't rampantly decompose operations more than we
have previously.

All of this was already fairly well tested, and so I've just updated the
tests to cover the wide load behavior. I can add a test that crafts the
pass ordering magic which caused the original PR, but that seems really
brittle and to provide little benefit. The fundamental problem is that
widened loads should Just Work.

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

11 years agoAdd two of the float related ARM-specific entries for e_flags needed for
Joerg Sonnenberger [Thu, 14 Mar 2013 08:01:36 +0000 (08:01 +0000)]
Add two of the float related ARM-specific entries for e_flags needed for
linkers to interact with GNU ld.

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

11 years agoFix the name of a variable to match its declaration. Fixes build failure from r177014.
Craig Topper [Thu, 14 Mar 2013 07:47:43 +0000 (07:47 +0000)]
Fix the name of a variable to match its declaration. Fixes build failure from r177014.

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

11 years agoFix a bug in the calculation of the VEX.B bit for FMA4 rr with the VEX.W bit set...
Craig Topper [Thu, 14 Mar 2013 07:40:52 +0000 (07:40 +0000)]
Fix a bug in the calculation of the VEX.B bit for FMA4 rr with the VEX.W bit set. The VEX.B was being calculated from the wrong operand. Fixes at least some portion of PR14185.

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

11 years agoTeach X86 MC instruction lowering that VMOVAPSrr and other VEX-encoded register to...
Craig Topper [Thu, 14 Mar 2013 07:09:57 +0000 (07:09 +0000)]
Teach X86 MC instruction lowering that VMOVAPSrr and other VEX-encoded register to register moves should be switched from using the MRMSrcReg form to the MRMDestReg form if the source register is a 64-bit extended register and the destination register is not. This allows the instruction to be encoded using the 2-byte VEX form instead of the 3-byte VEX form. The GNU assembler has similar behavior.

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

11 years agoFix PR15309
Michael Liao [Thu, 14 Mar 2013 06:57:42 +0000 (06:57 +0000)]
Fix PR15309

- Fix the typo on type checking

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

11 years agotest commit: remove blank line.
Jiong Wang [Thu, 14 Mar 2013 05:43:59 +0000 (05:43 +0000)]
test commit: remove blank line.

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

11 years agoRemove a change to the debug info in this test, that I made while testing
Nick Lewycky [Thu, 14 Mar 2013 05:28:10 +0000 (05:28 +0000)]
Remove a change to the debug info in this test, that I made while testing
something else and forgot to remove.

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

11 years agoTry using %S to find the emitted .gcno file.
Nick Lewycky [Thu, 14 Mar 2013 05:23:30 +0000 (05:23 +0000)]
Try using %S to find the emitted .gcno file.

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

11 years agoRemove accidentally committed debug line.
Nick Lewycky [Thu, 14 Mar 2013 05:19:12 +0000 (05:19 +0000)]
Remove accidentally committed debug line.

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

11 years agoRefactor GCOV's six constructor arguments into a struct with a getter that
Nick Lewycky [Thu, 14 Mar 2013 05:13:26 +0000 (05:13 +0000)]
Refactor GCOV's six constructor arguments into a struct with a getter that
constructs default arguments. It can now take default arguments from
cl::opt'ions. Add a new -default-gcov-version=... option, and actually test it!

Sink the reverse-order of the version into GCOVProfiling, hiding it from our
users.

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

11 years agoFix typo in comment.
Nick Lewycky [Thu, 14 Mar 2013 01:26:17 +0000 (01:26 +0000)]
Fix typo in comment.

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

11 years ago[Support][Test] Missed this in the API change.
Michael J. Spencer [Thu, 14 Mar 2013 00:33:37 +0000 (00:33 +0000)]
[Support][Test] Missed this in the API change.

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

11 years ago[Support] Fix lifetime of file descriptors when using MemoryBuffer.
Michael J. Spencer [Thu, 14 Mar 2013 00:20:10 +0000 (00:20 +0000)]
[Support] Fix lifetime of file descriptors when using MemoryBuffer.

Clients of MemoryBuffer::getOpenFile expect it not to take ownership of the file
descriptor passed in. So don't.

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

11 years agoNo functionality change. Rename emitGCNO() to the more sensible
Nick Lewycky [Wed, 13 Mar 2013 22:55:42 +0000 (22:55 +0000)]
No functionality change. Rename emitGCNO() to the more sensible
emitProfileNotes(), similar to emitProfileArcs(). Also update its comment.

Also add a comment on Version[4] (there will be another comment in clang later),
and compress lines that exceeded 80 columns.

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

11 years agoSimplify file/directory name handling in DILexicalBlock
David Blaikie [Wed, 13 Mar 2013 22:52:59 +0000 (22:52 +0000)]
Simplify file/directory name handling in DILexicalBlock

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

11 years agoRemove an extra operand to a DIFile metadata entry
David Blaikie [Wed, 13 Mar 2013 22:33:09 +0000 (22:33 +0000)]
Remove an extra operand to a DIFile metadata entry

(extra cleanup/fallout from r176983 - not sure why I didn't catch this locally)

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

11 years agoReset some of the target options which affect code generation.
Bill Wendling [Wed, 13 Mar 2013 22:26:59 +0000 (22:26 +0000)]
Reset some of the target options which affect code generation.

This doesn't reset all of the target options within the TargetOptions
object. This is because some of those are ABI-specific and must be determined if
it's okay to change those on the fly.

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

11 years agoSimplify directory name handling in DILexicalBlockFile.
David Blaikie [Wed, 13 Mar 2013 22:23:51 +0000 (22:23 +0000)]
Simplify directory name handling in DILexicalBlockFile.

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

11 years agoRemove the unused 4th operand for DIFile debug info metadata
David Blaikie [Wed, 13 Mar 2013 22:05:21 +0000 (22:05 +0000)]
Remove the unused 4th operand for DIFile debug info metadata

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

11 years agoMake LTO codegen use a PassManager, rather than a FunctionPassManager, for the
Lang Hames [Wed, 13 Mar 2013 21:18:46 +0000 (21:18 +0000)]
Make LTO codegen use a PassManager, rather than a FunctionPassManager, for the
codegen passes. This brings it in to line with clang and llc's codegen setup,
and tidies up the code.

If I understand correctly, adding ModulePasses to a FunctionPassManager is
bogus. It only seems to explode if an added ModulePass depends on a
FunctionPass though, which might be why this code has survived so long.

Fixes <rdar://problem/13386816>.

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

11 years agoSimplify CMake rules in HandleLLVMOptions module.
Alexey Samsonov [Wed, 13 Mar 2013 20:50:23 +0000 (20:50 +0000)]
Simplify CMake rules in HandleLLVMOptions module.

Summary: No functionality change.

Reviewers: Bigcheese

Reviewed By: Bigcheese

CC: llvm-commits
Differential Revision: http://llvm-reviews.chandlerc.com/D535

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

11 years agoAdd some additonal attribute helper functions. Test will be on follow
Reed Kotler [Wed, 13 Mar 2013 20:20:08 +0000 (20:20 +0000)]
Add some additonal attribute helper functions. Test will be on follow
up putback to clang for mips16.

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

11 years agoR600: Remove unused Outputs variable
Vincent Lejeune [Wed, 13 Mar 2013 20:13:25 +0000 (20:13 +0000)]
R600: Remove unused Outputs variable

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

11 years agoNo functionality change. Use unreachable in getCUOffset.
Manman Ren [Wed, 13 Mar 2013 18:41:27 +0000 (18:41 +0000)]
No functionality change. Use unreachable in getCUOffset.

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

11 years agoNo functionality change. Use unreachable in getCompileUnit.
Manman Ren [Wed, 13 Mar 2013 18:33:41 +0000 (18:33 +0000)]
No functionality change. Use unreachable in getCompileUnit.

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

11 years agoCheck register classes also when changing them.
Jakob Stoklund Olesen [Wed, 13 Mar 2013 18:11:17 +0000 (18:11 +0000)]
Check register classes also when changing them.

We have the same assertion in createVirtualRegister.

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

11 years agoARM cost model: Add test case to make sure we would notice a change in CodeGen
Arnold Schwaighofer [Wed, 13 Mar 2013 16:25:55 +0000 (16:25 +0000)]
ARM cost model: Add test case to make sure we would notice a change in CodeGen

In r176898 I updated the cost model to reflect the fact that sext/zext/cast on
v8i32 <-> v8i8 and v16i32 <-> v16i8 are expensive.

This test case is so that we make sure to update the cost model once we fix
CodeGen.

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

11 years agoFix a performance regression when combining to smaller types in icmp (shl %v, C1...
Arnaud A. de Grandmaison [Wed, 13 Mar 2013 14:40:37 +0000 (14:40 +0000)]
Fix a performance regression when combining to smaller types in icmp (shl %v, C1), C2 :

Only combine when the shl is only used by the icmp

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

11 years agoAdd one more overload to make VS2008's debug mody happy.
Benjamin Kramer [Wed, 13 Mar 2013 13:50:47 +0000 (13:50 +0000)]
Add one more overload to make VS2008's debug mody happy.

sigh.

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

11 years agoAdd llvm-symbolizer as test dependency.
Evgeniy Stepanov [Wed, 13 Mar 2013 09:35:18 +0000 (09:35 +0000)]
Add llvm-symbolizer as test dependency.

It is required when building tests with ASan or MSan.

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

11 years agoSet symbolizer path in the test environment.
Evgeniy Stepanov [Wed, 13 Mar 2013 06:58:09 +0000 (06:58 +0000)]
Set symbolizer path in the test environment.

This is needed to get symbolized stack traces when running LLVM tests under (A|M)San.

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

11 years agolit.TestFormats.GoogleTest: Honor LitConfig.noExecute, or --no-execute were ignored.
NAKAMURA Takumi [Wed, 13 Mar 2013 06:16:33 +0000 (06:16 +0000)]
lit.TestFormats.GoogleTest: Honor LitConfig.noExecute, or --no-execute were ignored.

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

11 years ago[mips] Define two subclasses of MipsTargetLowering. Mips16TargetLowering is for
Akira Hatanaka [Wed, 13 Mar 2013 00:54:29 +0000 (00:54 +0000)]
[mips] Define two subclasses of MipsTargetLowering. Mips16TargetLowering is for
mips16 and MipsSETargetLowering is for mips32/64.

No functionality changes.

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

11 years agoRefactor filename/directory in DICompileUnit into a DIFile
David Blaikie [Wed, 13 Mar 2013 00:01:35 +0000 (00:01 +0000)]
Refactor filename/directory in DICompileUnit into a DIFile

This is the next step towards making the metadata for DIScopes have a common
prefix rather than having to delegate based on their tag type.

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

11 years agoDon't crash if write_impl() leaves less buffer space available than expected.
Matt Beaumont-Gay [Tue, 12 Mar 2013 23:55:24 +0000 (23:55 +0000)]
Don't crash if write_impl() leaves less buffer space available than expected.

This was tickled by a Clang diagnostic; Clang test case to follow.

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

11 years agoRemove unused "isMain" field from DICompileUnit
David Blaikie [Tue, 12 Mar 2013 22:43:04 +0000 (22:43 +0000)]
Remove unused "isMain" field from DICompileUnit

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

11 years ago[Support][Path] Don't inf loop if creating the parent directory fails.
Michael J. Spencer [Tue, 12 Mar 2013 22:32:39 +0000 (22:32 +0000)]
[Support][Path] Don't inf loop if creating the parent directory fails.

Patch by Paul Robinson.

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

11 years agoUpdate debug info test cases with empty SplitDebugFilename field.
David Blaikie [Tue, 12 Mar 2013 22:25:36 +0000 (22:25 +0000)]
Update debug info test cases with empty SplitDebugFilename field.

This could be 'null' or the empty string, DIDescriptor::getStringField
coalesces the two cases anyway so it's just a matter of legible/efficient
representation.

The change in behavior of the DICompileUnit::get* functions could be
subsumed by the full verification check - but ideally that should just be an
assertion if we could front-load the actual debug info metadata failure paths.

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

11 years agoARM cost model: Increase the cost for vector casts that use the stack
Arnold Schwaighofer [Tue, 12 Mar 2013 21:19:22 +0000 (21:19 +0000)]
ARM cost model: Increase the cost for vector casts that use the stack

Increase the cost of v8/v16-i8 to v8/v16-i32 casts and truncates as the backend
currently lowers those using stack accesses.

This was responsible for a significant degradation on
MultiSource/Benchmarks/Trimaran/enc-pc1/enc-pc1
where we vectorize one loop to a vector factor of 16. After this patch we select
a vector factor of 4 which will generate reasonable code.

unsigned char cle[32];

void test(short c) {
  unsigned short compte;
  for (compte = 0; compte <= 31; compte++) {
    cle[compte] = cle[compte] ^ c;
  }
}

radar://13220512

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

11 years agoDebug Info: use SmallVector instead of std::vector in MCDwarfDirsCUMap and MCDwarfFil...
Manman Ren [Tue, 12 Mar 2013 20:17:00 +0000 (20:17 +0000)]
Debug Info: use SmallVector instead of std::vector in MCDwarfDirsCUMap and MCDwarfFilesCUMap

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

11 years ago[Support][MemoryBuffer] Use sys::fs::mapped_file_region instead of sys::Path::MapInFi...
Michael J. Spencer [Tue, 12 Mar 2013 19:28:19 +0000 (19:28 +0000)]
[Support][MemoryBuffer] Use sys::fs::mapped_file_region instead of sys::Path::MapInFilePages.

This gives us memory mapped file I/O on Windows.

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

11 years agoCorrect invalid debug info metadata
David Blaikie [Tue, 12 Mar 2013 19:04:24 +0000 (19:04 +0000)]
Correct invalid debug info metadata

Code review feedback on r176838 by Patrik Hägglund.

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

11 years agoDebug Info: use DW_FORM_ref_addr instead of DW_FORM_ref4 if the referenced DIE
Manman Ren [Tue, 12 Mar 2013 18:27:15 +0000 (18:27 +0000)]
Debug Info: use DW_FORM_ref_addr instead of DW_FORM_ref4 if the referenced DIE
belongs to a different compile unit.

DW_FORM_ref_addr should be used for cross compile-unit reference.

When compiling a large application, we got a dwarfdump verification error where
abstract_origin points to nowhere.

This error can't be reproduced on any testing case in MultiSource.
We may have other cases where we use DW_FORM_ref4 unconditionally.

rdar://problem/13370501

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

11 years agoAvoid generating ISD::SELECT for vector operands to SIGN_EXTEND
Richard Relph [Tue, 12 Mar 2013 18:17:18 +0000 (18:17 +0000)]
Avoid generating ISD::SELECT for vector operands to SIGN_EXTEND

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

11 years agoRemove the assert()'s from the LLVMCreateDisasmCPU() library API and just
Kevin Enderby [Tue, 12 Mar 2013 18:12:17 +0000 (18:12 +0000)]
Remove the assert()'s from the LLVMCreateDisasmCPU() library API and just
return 0 to indicate failure to create the disassembler.  A library routine
should not assert and just let the caller handler the error.  For example
darwin's otool(1) will simply print an error if it ends up using a library
that is not configured for a target it wants:

% otool -tv ViewController.o
ViewController.o:
(__TEXT,__text) section
can't create arm llvm disassembler

This is much better than an abort which appears as a crash to the user or
even the assert when using a Debug+Asserts built library:

Assertion failed: (MAI && "Unable to create target asm info!"), function LLVMCreateDisasmCPU, file /Volumes/SandBox/llvm/lib/MC/MCDisassembler/Disassembler.cpp, line 47.

radr://12539918

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

11 years agoAdd a doFinalization method to the DataLayout pass.
Pete Cooper [Tue, 12 Mar 2013 17:37:31 +0000 (17:37 +0000)]
Add a doFinalization method to the DataLayout pass.

This pass is meant to be immutable, however it holds mutable state to cache StructLayouts.
This method will allow the pass manager to clear the mutable state between runs.

Note that unfortunately it is still necessary to have the destructor, even though it does the
same thing as doFinalization.  This is because most TargetMachines embed a DataLayout on which
doFinalization isn't run as its never added to the pass manager.

I also didn't think it was necessary to complication things with a deInit method for which
doFinalization and ~DataLayout both call as there's only one field of mutable state.  If we had
more fields to finalize i'd have added this.

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

11 years agoRevert the test moves from 176733. Use "REQUIRES: asserts" instead.
Jan Wen Voung [Tue, 12 Mar 2013 16:27:52 +0000 (16:27 +0000)]
Revert the test moves from 176733.  Use "REQUIRES: asserts" instead.

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

11 years agoChange the order of the operands in patchAndReplaceAllUsesWith so
Dan Gohman [Tue, 12 Mar 2013 16:22:56 +0000 (16:22 +0000)]
Change the order of the operands in patchAndReplaceAllUsesWith so
that they're more consistent with Value::replaceAllUsesWith.

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

11 years agoDon't reserve R2 on Darwin/PPC
Hal Finkel [Tue, 12 Mar 2013 15:18:14 +0000 (15:18 +0000)]
Don't reserve R2 on Darwin/PPC

Now that only the register-scavenger version of the CR spilling code remains,
we no longer need the Darwin R2 hack. Darwin can use R0 as a spare register in
any case where the System V ABI uses it (R0 is special architecturally, and so
is reserved under all common ABIs).

A few test cases needed to be updated to reflect the register-allocation changes.

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

11 years agoPPC should always use the register scavenger for CR spilling
Hal Finkel [Tue, 12 Mar 2013 14:12:16 +0000 (14:12 +0000)]
PPC should always use the register scavenger for CR spilling

This removes the -disable-ppc[32|64]-regscavenger options; the code
that uses the register scavenger has been working well (and has been the default)
for some time, and we don't need options to enable the old (broken) CR spilling code.

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

11 years agoSmall fix for cost analysis of ptrtoint.
Patrik Hagglund [Tue, 12 Mar 2013 13:18:30 +0000 (13:18 +0000)]
Small fix for cost analysis of ptrtoint.

This seems to be a "copy-paste error" introducecd in r156140.

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

11 years agoIn r169695, the address space limit for tests was replaced with a data
Patrik Hagglund [Tue, 12 Mar 2013 12:38:10 +0000 (12:38 +0000)]
In r169695, the address space limit for tests was replaced with a data
segment limit. Now, as a complement, add a stack space limit.

Otherwise, tests may grow undesirable large at inifinite
recursion. (Seen at r176838,
test/Assembler/2010-02-05-FunctionLocalMetadataBecomesNull.ll)

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

11 years agoReleaseNotes: Add Hexagon Target section
Matthew Curtis [Tue, 12 Mar 2013 12:20:51 +0000 (12:20 +0000)]
ReleaseNotes: Add Hexagon Target section

And mention removal of hexagonv2 and hexagonv3 support (r176859).

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

11 years agoReflect reality.
Bill Wendling [Tue, 12 Mar 2013 10:38:39 +0000 (10:38 +0000)]
Reflect reality.

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

11 years ago[mips] Rename function and variable names to start with proper case. Fix typos.
Akira Hatanaka [Tue, 12 Mar 2013 00:16:36 +0000 (00:16 +0000)]
[mips] Rename function and variable names to start with proper case. Fix typos.
Delete commented-out code.

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

11 years agoLibCallSimplifier: optimize speed for short-lived instances
Meador Inge [Tue, 12 Mar 2013 00:08:29 +0000 (00:08 +0000)]
LibCallSimplifier: optimize speed for short-lived instances

Nadav reported a performance regression due to the work I did to
merge the library call simplifier into instcombine [1].  The issue
is that a new LibCallSimplifier object is being created whenever
InstCombiner::runOnFunction is called.  Every time a LibCallSimplifier
object is used to optimize a call it creates a hash table to map from
a function name to an object that optimizes functions of that name.
For short-lived LibCallSimplifier instances this is quite inefficient.
Especially for cases where no calls are actually simplified.

This patch fixes the issue by dropping the hash table and implementing
an explicit lookup function to correlate the function name to the object
that optimizes functions of that name.  This avoids the cost of always
building and destroying the hash table in cases where the LibCallSimplifier
object is short-lived and avoids the cost of building the table when no
simplifications are actually preformed.

On a benchmark containing 100,000 calls where none of them are simplified
I noticed a 30% speedup.  On a benchmark containing 100,000 calls where
all of them are simplified I noticed an 8% speedup.

[1] http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20130304/167639.html

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

11 years agoRemove support for versioned debug info.
David Blaikie [Mon, 11 Mar 2013 23:39:23 +0000 (23:39 +0000)]
Remove support for versioned debug info.

Versioned debug info support has been a burden to maintain & also compromised
current debug info verification by causing test cases testing old debug info to
remain rather than being updated to the latest. It also makes it hard to add or
change the metadata schema by requiring various backwards-compatibility in the
DI* hierarchy.

So it's being removed in preparation for new changes to the schema to tidy up
old/unnecessary fields and add new fields needed for new debug info (well, new
to LLVM at least).

The more surprising part of this is the changes to DI*::Verify - this became
necessary due to the changes to AsmWriter. AsmWriter was relying on the version
test to decide which bits of metadata were actually debug info when printing
the comment annotations. Without the version information the tag numbers were
too common & it would print debug info on random metadata that happened to
start with an integer that matched a tag number. Instead this change makes the
Verify functions more precise (just adding "number of operands" checks - not
type checking those operands yet) & relies on that to decide which metadata is
debug info metadata.

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

11 years agoAdd asserts to DIBuilder & fix DINameSpace::Verify to allow unnamed namespaces.
David Blaikie [Mon, 11 Mar 2013 23:21:19 +0000 (23:21 +0000)]
Add asserts to DIBuilder & fix DINameSpace::Verify to allow unnamed namespaces.

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

11 years agoResidual cleanup: live-out set is gone
Eli Bendersky [Mon, 11 Mar 2013 23:18:25 +0000 (23:18 +0000)]
Residual cleanup: live-out set is gone

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

11 years agollvm/test/CodeGen/R600/schedule-*.ll: Let them require +Asserts.
NAKAMURA Takumi [Mon, 11 Mar 2013 23:16:30 +0000 (23:16 +0000)]
llvm/test/CodeGen/R600/schedule-*.ll: Let them require +Asserts.

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

11 years agoUpgrading debug info test cases to be (more) compatible with the current debug info...
David Blaikie [Mon, 11 Mar 2013 22:37:40 +0000 (22:37 +0000)]
Upgrading debug info test cases to be (more) compatible with the current debug info format.

These cases were found by further work to remove support for debug info
versioning. Common cleanups (other than changing the version info in the tag
field) included adding the last parameter to compile_units (recently added for
fission support) and other cases of trailing fields in lexical blocks, compile
units, and subprograms.

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

11 years agoRemove duplicate test contents.
David Blaikie [Mon, 11 Mar 2013 22:10:14 +0000 (22:10 +0000)]
Remove duplicate test contents.

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

11 years agoFix a crasher newly introduced in r176659/r176649, where fast-isel tries to
Nick Lewycky [Mon, 11 Mar 2013 21:44:37 +0000 (21:44 +0000)]
Fix a crasher newly introduced in r176659/r176649, where fast-isel tries to
lower an expect intrinsic that is a constant expression.

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

11 years agoFixes disassembler crashes on 2013 Haswell RTM instructions.
Kevin Enderby [Mon, 11 Mar 2013 21:17:13 +0000 (21:17 +0000)]
Fixes disassembler crashes on 2013 Haswell RTM instructions.

rdar://13318048

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

11 years agoDon't remove a landing pad if the invoke requires a table entry.
Bill Wendling [Mon, 11 Mar 2013 20:53:00 +0000 (20:53 +0000)]
Don't remove a landing pad if the invoke requires a table entry.

An invoke may require a table entry. For instance, when the function it calls
is expected to throw.
<rdar://problem/13360379>

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

11 years agoR600: Fix JUMP handling so that MachineInstr verification can occur
Vincent Lejeune [Mon, 11 Mar 2013 18:15:06 +0000 (18:15 +0000)]
R600: Fix JUMP handling so that MachineInstr verification can occur

This allows R600 Target to use the newly created -verify-misched llc flag

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

11 years agoMissing period in doc
Eli Bendersky [Mon, 11 Mar 2013 16:51:15 +0000 (16:51 +0000)]
Missing period in doc

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

11 years agollvm/test/CodeGen/X86/handle-move.ll: Mark it as XFAIL:cygming. Investigating.
NAKAMURA Takumi [Mon, 11 Mar 2013 16:30:26 +0000 (16:30 +0000)]
llvm/test/CodeGen/X86/handle-move.ll: Mark it as XFAIL:cygming. Investigating.

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

11 years ago[docs] Remove explicit authorship.
Sean Silva [Mon, 11 Mar 2013 16:25:16 +0000 (16:25 +0000)]
[docs] Remove explicit authorship.

In the spirit of r172109. Version control keeps a far more detailed
record of authorship anyways.

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

11 years agoSuppress atomic(32|64).ll as XFAIL on win32 codegen. Investigating.
NAKAMURA Takumi [Mon, 11 Mar 2013 08:39:48 +0000 (08:39 +0000)]
Suppress atomic(32|64).ll as XFAIL on win32 codegen. Investigating.

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

11 years agoR600MachineScheduler.cpp: Fix use cases of dbgs(). Don't include <iostream> here.
NAKAMURA Takumi [Mon, 11 Mar 2013 08:19:28 +0000 (08:19 +0000)]
R600MachineScheduler.cpp: Fix use cases of dbgs(). Don't include <iostream> here.

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

11 years agoRemove date from test case file name. The PR number provides a unique ID already.
Lang Hames [Mon, 11 Mar 2013 03:49:23 +0000 (03:49 +0000)]
Remove date from test case file name. The PR number provides a unique ID already.

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

11 years agoCorrect this error message, and most importantly make it distinct from the
Nick Lewycky [Sun, 10 Mar 2013 22:01:44 +0000 (22:01 +0000)]
Correct this error message, and most importantly make it distinct from the
error above. Based on a patch by Peter Zotov!

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

11 years agoUse LLVMBool instead of 'bool' in the C API. Based on a patch by Peter Zotov!
Nick Lewycky [Sun, 10 Mar 2013 21:58:22 +0000 (21:58 +0000)]
Use LLVMBool instead of 'bool' in the C API. Based on a patch by Peter Zotov!

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

11 years agoBBVectorize: Fixup debugging statements
Hal Finkel [Sun, 10 Mar 2013 20:57:42 +0000 (20:57 +0000)]
BBVectorize: Fixup debugging statements

After the recent data-structure improvements, a couple of debugging statements
were broken (printing pointer values).

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

11 years agoCleanup #includes.
Jakub Staszak [Sun, 10 Mar 2013 13:11:23 +0000 (13:11 +0000)]
Cleanup #includes.

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

11 years agoRemove unneeded #include.
Jakub Staszak [Sun, 10 Mar 2013 01:15:14 +0000 (01:15 +0000)]
Remove unneeded #include.

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

11 years agoAdd some constantness in MachinePostDominators.h.
Jakub Staszak [Sun, 10 Mar 2013 01:14:42 +0000 (01:14 +0000)]
Add some constantness in MachinePostDominators.h.

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

11 years agoRemove unneeded #includes. Use forward declarations instead.
Jakub Staszak [Sun, 10 Mar 2013 00:34:01 +0000 (00:34 +0000)]
Remove unneeded #includes. Use forward declarations instead.

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

11 years agoRemove unneeded #includes. Use forward declarations instead.
Jakub Staszak [Sun, 10 Mar 2013 00:20:16 +0000 (00:20 +0000)]
Remove unneeded #includes. Use forward declarations instead.

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

11 years agoRemove an unused member variable from HelpPrinter. Move another member variable to...
Craig Topper [Sat, 9 Mar 2013 23:29:37 +0000 (23:29 +0000)]
Remove an unused member variable from HelpPrinter. Move another member variable to be a local variable in the only method that uses it.

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

11 years agoDon't glue users to extract_subreg when selecting the llvm.arm.ldrexd
Lang Hames [Sat, 9 Mar 2013 22:56:09 +0000 (22:56 +0000)]
Don't glue users to extract_subreg when selecting the llvm.arm.ldrexd
intrinsic - it can cause impossible-to-schedule subgraphs to be
introduced.

PR15053.

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

11 years agoRemove unneeded cast.
Jakub Staszak [Sat, 9 Mar 2013 19:34:14 +0000 (19:34 +0000)]
Remove unneeded cast.

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

11 years agoRemove a source of nondeterminism from the LoopVectorizer.
Benjamin Kramer [Sat, 9 Mar 2013 19:22:40 +0000 (19:22 +0000)]
Remove a source of nondeterminism from the LoopVectorizer.

This made us emit runtime checks in a random order. Hopefully bootstrap
miscompares will go away now.

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

11 years agoFix test case.
Benjamin Kramer [Sat, 9 Mar 2013 18:34:27 +0000 (18:34 +0000)]
Fix test case.

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

11 years agoTest case hygiene.
Benjamin Kramer [Sat, 9 Mar 2013 18:25:40 +0000 (18:25 +0000)]
Test case hygiene.

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

11 years agoRemove unneeded const_cast.
Jakub Staszak [Sat, 9 Mar 2013 18:24:26 +0000 (18:24 +0000)]
Remove unneeded const_cast.

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

11 years agoUse forward declaration instead of #include.
Jakub Staszak [Sat, 9 Mar 2013 18:05:34 +0000 (18:05 +0000)]
Use forward declaration instead of #include.

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

11 years agoLoopVectorizer: Ignore all dbg intrinisic
Arnold Schwaighofer [Sat, 9 Mar 2013 16:27:27 +0000 (16:27 +0000)]
LoopVectorizer: Ignore all dbg intrinisic

Ignore all DbgIntriniscInfo instructions instead of just DbgValueInst.

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

11 years agoLoopVectorizer: Ignore dbg.value instructions
Arnold Schwaighofer [Sat, 9 Mar 2013 15:56:34 +0000 (15:56 +0000)]
LoopVectorizer: Ignore dbg.value instructions

We want vectorization to happen at -g. Ignore calls to the dbg.value intrinsic
and don't transfer them to the vectorized code.

radar://13378964

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

11 years agoTLI: Microoptimize calls to strlen+memcmp to strncmp.
Benjamin Kramer [Sat, 9 Mar 2013 13:48:23 +0000 (13:48 +0000)]
TLI: Microoptimize calls to strlen+memcmp to strncmp.

The strlen+memcmp was hidden in a call to StringRef::operator==. We check if
there are any null bytes in the string upfront so we can simplify the comparison
Small speedup when compiling code with many function calls.

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

11 years agoSimplify code. No functionality change.
Jakub Staszak [Sat, 9 Mar 2013 11:18:59 +0000 (11:18 +0000)]
Simplify code. No functionality change.

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

11 years agoUse the correct index variable. This is the meat of what was supposed to be in
Nick Lewycky [Sat, 9 Mar 2013 10:13:26 +0000 (10:13 +0000)]
Use the correct index variable. This is the meat of what was supposed to be in
r176751. Also, learn a lesson about applying patches by hand/eyeball.

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

11 years agoCommit the right files for r176762. Sigh.
Nick Lewycky [Sat, 9 Mar 2013 09:32:16 +0000 (09:32 +0000)]
Commit the right files for r176762. Sigh.

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

11 years agoWe need a shndx if the number of sections breaks SHN_LORESERVE. This condition
Nick Lewycky [Sat, 9 Mar 2013 09:31:44 +0000 (09:31 +0000)]
We need a shndx if the number of sections breaks SHN_LORESERVE. This condition
for choosing to emit a shndx was simply testing the wrong variable.

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

11 years agoFix bug introduced in r176616 when making function identifier numbers stable.
Nick Lewycky [Sat, 9 Mar 2013 02:06:37 +0000 (02:06 +0000)]
Fix bug introduced in r176616 when making function identifier numbers stable.
Count the subprograms, not the compile units.

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

11 years agoDon't emit the extra checksum into the .gcda file if the user hasn't asked for
Nick Lewycky [Sat, 9 Mar 2013 01:33:06 +0000 (01:33 +0000)]
Don't emit the extra checksum into the .gcda file if the user hasn't asked for
it. Fortunately, versions of gcov that predate the extra checksum also ignore
any extra data, so this isn't a problem. There will be a matching commit in
compiler-rt.

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