platform/upstream/llvm.git
11 years ago[lit] Remove uses of deprecated except syntax.
Daniel Dunbar [Wed, 7 Aug 2013 03:16:19 +0000 (03:16 +0000)]
[lit] Remove uses of deprecated except syntax.

 - Since we only have a few of these, use the cumbersome method of getting the
   exception object from 'sys' to retain the current pre-2.6 compatibility.

llvm-svn: 187854

11 years ago[lit] Use more modern syntax for constructing exceptions.
Daniel Dunbar [Wed, 7 Aug 2013 03:15:10 +0000 (03:15 +0000)]
[lit] Use more modern syntax for constructing exceptions.

llvm-svn: 187853

11 years ago[lit] Drop --no-execute, which isn't generally useful.
Daniel Dunbar [Wed, 7 Aug 2013 03:14:00 +0000 (03:14 +0000)]
[lit] Drop --no-execute, which isn't generally useful.

llvm-svn: 187852

11 years ago[lit] tests: Change discovery test to use --show-tests.
Daniel Dunbar [Wed, 7 Aug 2013 03:12:51 +0000 (03:12 +0000)]
[lit] tests: Change discovery test to use --show-tests.

llvm-svn: 187851

11 years ago[lit] Add a --show-tests option.
Daniel Dunbar [Wed, 7 Aug 2013 03:11:42 +0000 (03:11 +0000)]
[lit] Add a --show-tests option.

llvm-svn: 187850

11 years ago[lit] Remove dead ignoreStdError argument.
Daniel Dunbar [Wed, 7 Aug 2013 03:08:46 +0000 (03:08 +0000)]
[lit] Remove dead ignoreStdError argument.

llvm-svn: 187849

11 years agoDisabled columnWidth test for OSX, need someone with Mac to deal with this effectively.
Alexander Kornienko [Wed, 7 Aug 2013 02:08:31 +0000 (02:08 +0000)]
Disabled columnWidth test for OSX, need someone with Mac to deal with this effectively.

llvm-svn: 187848

11 years agoUse correct platform detection macro: __MACOSX__ -> __APPLE__
Alexander Kornienko [Wed, 7 Aug 2013 01:23:28 +0000 (01:23 +0000)]
Use correct platform detection macro: __MACOSX__ -> __APPLE__

llvm-svn: 187847

11 years agoFix boolean logic in LockFileManager and test it
Reid Kleckner [Wed, 7 Aug 2013 01:22:04 +0000 (01:22 +0000)]
Fix boolean logic in LockFileManager and test it

This fixes a bug from r187826.

Reviewers: hans

Differential Revision: http://llvm-reviews.chandlerc.com/D1304

llvm-svn: 187846

11 years agoAvoid using alloca in Windows/Program.inc
Reid Kleckner [Wed, 7 Aug 2013 01:21:33 +0000 (01:21 +0000)]
Avoid using alloca in Windows/Program.inc

One use needs to copy the alloca into a std::string, and the other use
is before calling CreateProcess, which is very heavyweight anyway.

llvm-svn: 187845

11 years agoAdd a way to grab a particular attribute out of a DIE.
Eric Christopher [Wed, 7 Aug 2013 01:18:33 +0000 (01:18 +0000)]
Add a way to grab a particular attribute out of a DIE.
Use it when we're looking for a string in particular. Update comments
as well.

llvm-svn: 187844

11 years agoMove somewhat messy conditional out of line.
Eric Christopher [Wed, 7 Aug 2013 01:18:24 +0000 (01:18 +0000)]
Move somewhat messy conditional out of line.
No functional change.

llvm-svn: 187843

11 years agoDisable tests on WIN32 (which has incorrect implementation of isPrint and
Alexander Kornienko [Wed, 7 Aug 2013 00:41:18 +0000 (00:41 +0000)]
Disable tests on WIN32 (which has incorrect implementation of isPrint and
columnWidth), and partially disable tests on MACOSX (which handles some
characters differently).

llvm-svn: 187842

11 years agoRevert "[sanitizer] Intercept sched_getaffinity."
David Blaikie [Wed, 7 Aug 2013 00:37:26 +0000 (00:37 +0000)]
Revert "[sanitizer] Intercept sched_getaffinity."

This reverts commit r187788.

The test case is unreliable (as the test may be run in a situation in
which it has no affinity with cpu0). This can be recommitted with a more
reliable test - possibly using CPU_COUNT != 0 instead (I wasn't entirely
sure that a process was guaranteed to have at least one affinity, though
it seems reasonable, or I'd have made the change myself).

llvm-svn: 187841

11 years agoclang-cl: Use .obj as object file extension instead of .o
Hans Wennborg [Wed, 7 Aug 2013 00:32:15 +0000 (00:32 +0000)]
clang-cl: Use .obj as object file extension instead of .o

Differential Revision: http://llvm-reviews.chandlerc.com/D1302

llvm-svn: 187840

11 years agoCheck for _strtoi64 in the cmake build if strtoll is missing
Reid Kleckner [Wed, 7 Aug 2013 00:29:15 +0000 (00:29 +0000)]
Check for _strtoi64 in the cmake build if strtoll is missing

Previously this check was guarded by MSVC, which doesn't distinguish
between the compiler and the headers/library.  This enables clang to
compile more of LLVM on Windows with Microsoft headers.

Remove some unused macros while I'm here: error_t and LTDL stuff.

llvm-svn: 187839

11 years agoRemove unused functions introduced in r172685 to unbreak the Clang -Werror build
David Blaikie [Wed, 7 Aug 2013 00:25:12 +0000 (00:25 +0000)]
Remove unused functions introduced in r172685 to unbreak the Clang -Werror build

llvm-svn: 187838

11 years agoImplemented llvm::sys::locale::columnWidth and isPrint for the case of generic UTF8...
Alexander Kornienko [Wed, 7 Aug 2013 00:07:07 +0000 (00:07 +0000)]
Implemented llvm::sys::locale::columnWidth and isPrint for the case of generic UTF8-capable terminal.

Summary:
This is a second attempt to get this right. After reading the Unicode
Standard I came up with the code that uses definitions of "printable" and
"column width" more suitable for terminal output (i.e. fixed-width fonts and
special treatment of many control characters).
The implementation here can probably be used for Windows and MacOS if someone
can test it properly.
The patch addresses PR14910.

Reviewers: jordan_rose, gribozavr

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

llvm-svn: 187837

11 years agoReplacing /GR with /GR- instead of applying both options to the project. This should...
Aaron Ballman [Tue, 6 Aug 2013 23:34:04 +0000 (23:34 +0000)]
Replacing /GR with /GR- instead of applying both options to the project.  This should reduce some build bot warnings (D9025: "overriding '/GR' with '/GR-'").

llvm-svn: 187836

11 years agoPatch to fix doxygen trailing comments for ObjectiveC properties.
Fariborz Jahanian [Tue, 6 Aug 2013 23:29:00 +0000 (23:29 +0000)]
Patch to fix doxygen trailing comments for ObjectiveC properties.
// rdar://14258334

llvm-svn: 187835

11 years agoR600: Add new file from r187831 to CMakeLists.txt
Tom Stellard [Tue, 6 Aug 2013 23:12:34 +0000 (23:12 +0000)]
R600: Add new file from r187831 to CMakeLists.txt

llvm-svn: 187834

11 years agoTest to see if logging is enabled before printing
Jason Molenda [Tue, 6 Aug 2013 23:08:59 +0000 (23:08 +0000)]
Test to see if logging is enabled before printing
to a log channel in StopInfoBreakpoint::PerformAction().
<rdar://problem/14651751>

llvm-svn: 187833

11 years ago[mips] Rename register classes CPURegs and CPU64Regs.
Akira Hatanaka [Tue, 6 Aug 2013 23:08:38 +0000 (23:08 +0000)]
[mips] Rename register classes CPURegs and CPU64Regs.

llvm-svn: 187832

11 years agoR600/SI: Use VSrc_* register classes as the default classes for types
Tom Stellard [Tue, 6 Aug 2013 23:08:28 +0000 (23:08 +0000)]
R600/SI: Use VSrc_* register classes as the default classes for types

Since the VSrc_* register classes contain both VGPRs and SGPRs, copies
that used be emitted by isel like this:

SGPR = COPY VGPR

Will now be emitted like this:

VSrC = COPY VGPR

This patch also adds a pass that tries to identify and fix situations where
a VGPR to SGPR copy may occur.  Hopefully, these changes will make it
impossible for the compiler to generate illegal VGPR to SGPR copies.

llvm-svn: 187831

11 years agoR600/SI: Add more special cases for opcodes to ensureSRegLimit()
Tom Stellard [Tue, 6 Aug 2013 23:08:18 +0000 (23:08 +0000)]
R600/SI: Add more special cases for opcodes to ensureSRegLimit()

Also factor out the register class lookup to its own function.

llvm-svn: 187830

11 years ago[NVPTX] We dont have any target specific flags yet for generating symbol references...
Justin Holewinski [Tue, 6 Aug 2013 23:06:42 +0000 (23:06 +0000)]
[NVPTX] We dont have any target specific flags yet for generating symbol references, so get rid of the default-only switch statement.  Fixes an MSVC warning.

llvm-svn: 187829

11 years ago[mips] Mark instructions defined in Mips64InstrInfo.td that are duplicates of
Akira Hatanaka [Tue, 6 Aug 2013 23:01:10 +0000 (23:01 +0000)]
[mips] Mark instructions defined in Mips64InstrInfo.td that are duplicates of
instructions defined in MipsInstrInfo.td as codegen-only instructions.

llvm-svn: 187828

11 years agoChange the linkage of these global values to 'internal'.
Bill Wendling [Tue, 6 Aug 2013 22:52:42 +0000 (22:52 +0000)]
Change the linkage of these global values to 'internal'.

The globals being generated here were given the 'private' linkage type. However,
this caused them to end up in different sections with the wrong prefix. E.g.,
they would be in the __TEXT,__const section with an 'L' prefix instead of an 'l'
(lowercase ell) prefix.

The problem is that the linker will eat a literal label with 'L'. If a weak
symbol is then placed into the __TEXT,__const section near that literal, then it
cannot distinguish between the literal and the weak symbol.

Part of the problems here was introduced because the address sanitizer converted
some C strings into constant initializers with trailing nuls. (Thus putting them
in the __const section with the wrong prefix.) The others were variables that
the address sanitizer created but simply had the wrong linkage type.

llvm-svn: 187827

11 years agoRemove some std stream usage from Support and TableGen
Reid Kleckner [Tue, 6 Aug 2013 22:51:21 +0000 (22:51 +0000)]
Remove some std stream usage from Support and TableGen

LLVM's coding standards recommend raw_ostream and MemoryBuffer for
reading and writing text.

This has the side effect of allowing clang to compile more of Support
and TableGen in the Microsoft C++ ABI.

llvm-svn: 187826

11 years agoLoopVectorize: Allow vectorization of loops with lifetime markers
Arnold Schwaighofer [Tue, 6 Aug 2013 22:37:52 +0000 (22:37 +0000)]
LoopVectorize: Allow vectorization of loops with lifetime markers

Patch by Marc Jessome!

llvm-svn: 187825

11 years ago[mips] Delete unnecessary InstAliases. Also, clear some of the InstAlias'
Akira Hatanaka [Tue, 6 Aug 2013 22:35:29 +0000 (22:35 +0000)]
[mips] Delete unnecessary InstAliases. Also, clear some of the InstAlias'
EmitAlias flag and have MipsInstPrinter::printAlias print the aliases.

llvm-svn: 187824

11 years agoRename TargetInfo -> LinkingContext.
Rui Ueyama [Tue, 6 Aug 2013 22:31:59 +0000 (22:31 +0000)]
Rename TargetInfo -> LinkingContext.

Also change some local variable names: "ti" -> "context" and
"_targetInfo" -> "_context".

Differential Revision: http://llvm-reviews.chandlerc.com/D1301

llvm-svn: 187823

11 years agoInitialize m_leak member variable.
Michael Sartain [Tue, 6 Aug 2013 22:21:08 +0000 (22:21 +0000)]
Initialize m_leak member variable.

llvm-svn: 187822

11 years ago[mips] Replace usages of register classes with register operands. Also, remove
Akira Hatanaka [Tue, 6 Aug 2013 22:20:40 +0000 (22:20 +0000)]
[mips] Replace usages of register classes with register operands. Also, remove
unnecessary jalr InstAliases in Mips64InstrInfo.td and add the code to print
jalr InstAliases in MipsInstPrinter::printAlias.

llvm-svn: 187821

11 years agoclang-cl: Implement support for the /Fo option
Hans Wennborg [Tue, 6 Aug 2013 22:11:28 +0000 (22:11 +0000)]
clang-cl: Implement support for the /Fo option

This implements support for the /Fo option, which is used
to set the filename or output dir for object files.

Differential Revision: http://llvm-reviews.chandlerc.com/D1302

llvm-svn: 187820

11 years agoChange private functions of LTOCodeGenerator from ret-false-on-succ to ret-true-on...
Shuxin Yang [Tue, 6 Aug 2013 21:51:21 +0000 (21:51 +0000)]
Change private functions of LTOCodeGenerator from ret-false-on-succ to ret-true-on-succ.

llvm-svn: 187819

11 years agoFix bug in Host::getLLDBPath() due to misusing Twine
Daniel Malea [Tue, 6 Aug 2013 21:40:08 +0000 (21:40 +0000)]
Fix bug in Host::getLLDBPath() due to misusing Twine
- use SmallString instead
- original implementation resulted in incorrect behaviour of lldb -P

Fix by Kal Conley!

llvm-svn: 187818

11 years agoAdd a new warning to -Wloop-analysis to detect suspicious increments or
Richard Trieu [Tue, 6 Aug 2013 21:31:54 +0000 (21:31 +0000)]
Add a new warning to -Wloop-analysis to detect suspicious increments or
decrements inside for loops.  Idea for this warning proposed in PR15636:

http://llvm.org/bugs/show_bug.cgi?id=15636

llvm-svn: 187817

11 years agoCentralizing Intel compiler detection logic in lldbtest.py to avoid duplication in...
Daniel Malea [Tue, 6 Aug 2013 20:51:41 +0000 (20:51 +0000)]
Centralizing Intel compiler detection logic in lldbtest.py to avoid duplication in the future.
- Addresses review comments from Stefanus!

llvm-svn: 187816

11 years agoSupport one more flavour of Intel compiler in TestThreadStepOut
Daniel Malea [Tue, 6 Aug 2013 20:39:27 +0000 (20:39 +0000)]
Support one more flavour of Intel compiler in TestThreadStepOut

- Thanks to Matt Kopec for noticing the failure!

llvm-svn: 187815

11 years agoMark remaining failing test on icc as expected fail..
Matt Kopec [Tue, 6 Aug 2013 20:15:03 +0000 (20:15 +0000)]
Mark remaining failing test on icc as expected fail..

llvm-svn: 187814

11 years agoUse gnu style builtins in MathExtras.h with clang on Windows
Reid Kleckner [Tue, 6 Aug 2013 19:45:27 +0000 (19:45 +0000)]
Use gnu style builtins in MathExtras.h with clang on Windows

Clang does not provide BitScan* intrinsic implementations yet.

llvm-svn: 187813

11 years agoDebug Info Finder|Verifier: handle DbgLoc attached to instructions.
Manman Ren [Tue, 6 Aug 2013 19:38:43 +0000 (19:38 +0000)]
Debug Info Finder|Verifier: handle DbgLoc attached to instructions.

Also remove checking of llvm.dbg.sp since it is not used in generating dwarf.

Current state of Finder:
DebugInfoFinder tries to list all debug info MDNodes used in a module. To
list debug info MDNodes used by an instruction, DebugInfoFinder provides
processDeclare, processValue and processLocation to handle DbgDeclareInst,
DbgValueInst and DbgLoc attached to instructions. processModule will go
through all DICompileUnits in llvm.dbg.cu and list debug info MDNodes
used by the CUs.

TODO:
1> Finder has a list of CUs, SPs, Types, Scopes and global variables. We
need to add a list of variables that are used by DbgDeclareInst and
DbgValueInst.
2> MDString fields should be null or isa<MDString> and MDNode fields should be
null or isa<MDNode>. We currently use empty string or int 0 to represent null.
3> Go though Verify functions and make sure that they check field types.
4> Clean up existing testing cases to remove llvm.dbg.sp and make sure each
testing case has a llvm.dbg.cu.

Re-apply r187609 with fix to pass ocaml binding. vmcore.ml generates a debug
location with scope being metadata !{}, in verifier we treat this as a null
scope.

llvm-svn: 187812

11 years ago[LangRef] Alphabetize function attribute listing.
Sean Silva [Tue, 6 Aug 2013 19:34:37 +0000 (19:34 +0000)]
[LangRef] Alphabetize function attribute listing.

No content change.

Patch by Andrea Di Biagio!

llvm-svn: 187811

11 years agoObjectiveC migration: tweak setting of lifetime attribute
Fariborz Jahanian [Tue, 6 Aug 2013 18:06:23 +0000 (18:06 +0000)]
ObjectiveC migration: tweak setting of lifetime attribute
on @property migration. Don't set unsafe_unretained
on non-object properties. Set 'retain' on strong
properties. Makecertain properties with specific
names unsafe_unretained as well.

llvm-svn: 187810

11 years agoImplement tests for NULL iterators for <array> re: N3644
Marshall Clow [Tue, 6 Aug 2013 17:17:13 +0000 (17:17 +0000)]
Implement tests for NULL iterators for <array> re: N3644

llvm-svn: 187809

11 years agoAdjust file to the coding standard.
Jakub Staszak [Tue, 6 Aug 2013 17:03:42 +0000 (17:03 +0000)]
Adjust file to the coding standard.

llvm-svn: 187808

11 years agoAdd PPC64 mulli pattern
Hal Finkel [Tue, 6 Aug 2013 17:03:03 +0000 (17:03 +0000)]
Add PPC64 mulli pattern

The PPC backend had been missing a pattern to generate mulli for 64-bit
multiples. We had been generating it only for 32-bit multiplies. Unfortunately,
generating li + mulld unnecessarily increases register pressure.

llvm-svn: 187807

11 years agoRemove extraneous semicolon.
Jakub Staszak [Tue, 6 Aug 2013 16:40:40 +0000 (16:40 +0000)]
Remove extraneous semicolon.

llvm-svn: 187806

11 years agoImplement NULL iterators for <forward_list> and <deque> re: N3644
Marshall Clow [Tue, 6 Aug 2013 16:14:36 +0000 (16:14 +0000)]
Implement NULL iterators for <forward_list> and <deque> re: N3644

llvm-svn: 187805

11 years agoThis corrects creation of operands for t2PLDW. It also removes the definition of...
Mihai Popa [Tue, 6 Aug 2013 16:07:46 +0000 (16:07 +0000)]
This corrects creation of operands for t2PLDW. It also removes the definition of t2PLDWpci,
as pldw does not have a literal variant (i.e. pc relative version)

llvm-svn: 187804

11 years agoSupport APSR_nzcv as operand for Thumb2 mrc. Deprecate pre-UAL syntax (pc instead...
Mihai Popa [Tue, 6 Aug 2013 15:52:36 +0000 (15:52 +0000)]
Support APSR_nzcv as operand for Thumb2 mrc. Deprecate pre-UAL syntax (pc instead of apsr_nzcv)

llvm-svn: 187803

11 years agoAllow building test suite with non-default libc++
Daniel Malea [Tue, 6 Aug 2013 15:02:32 +0000 (15:02 +0000)]
Allow building test suite with non-default libc++
- add new "--libcxx" parameter to dotest.py to specify path to custom libc++

llvm-svn: 187802

11 years agoTest compatibility improvements for ICC
Daniel Malea [Tue, 6 Aug 2013 15:00:23 +0000 (15:00 +0000)]
Test compatibility improvements for ICC
- update TestThreadStepOut.py to work with Intel compilers
- fix typo in TestConcurrentEvents

llvm-svn: 187801

11 years ago[NVPTX] Add missing patterns for i1 [s,u]int_to_fp
Justin Holewinski [Tue, 6 Aug 2013 14:13:34 +0000 (14:13 +0000)]
[NVPTX] Add missing patterns for i1 [s,u]int_to_fp

llvm-svn: 187800

11 years ago[NVPTX] Fix bug in stack code generation causes by MC conversion
Justin Holewinski [Tue, 6 Aug 2013 14:13:31 +0000 (14:13 +0000)]
[NVPTX] Fix bug in stack code generation causes by MC conversion

We do use a very small set of physical registers, so account for
them in the virtual register encoding between MachineInstr and MC

llvm-svn: 187799

11 years ago[NVPTX] Start conversion to MC infrastructure
Justin Holewinski [Tue, 6 Aug 2013 14:13:27 +0000 (14:13 +0000)]
[NVPTX] Start conversion to MC infrastructure

This change converts the NVPTX target to use the MC infrastructure
instead of directly emitting MachineInstr instances. This brings
the target more up-to-date with LLVM TOT, and should fix PR15175
and PR15958 (libNVPTXInstPrinter is empty) as a side-effect.

llvm-svn: 187798

11 years ago[libsanitizer] Drive-by fix for -Wempty-body in sanitizer_common_syscalls.inc
Alexander Potapenko [Tue, 6 Aug 2013 14:07:46 +0000 (14:07 +0000)]
[libsanitizer] Drive-by fix for -Wempty-body in sanitizer_common_syscalls.inc
This makes the file consistently use { } around the if statements containing the PRE_/POST_ macros.

llvm-svn: 187797

11 years agoFix comment typo.
John Thompson [Tue, 6 Aug 2013 14:05:43 +0000 (14:05 +0000)]
Fix comment typo.

llvm-svn: 187796

11 years agoARM: implement allowTruncateForTailCall
Tim Northover [Tue, 6 Aug 2013 13:58:03 +0000 (13:58 +0000)]
ARM: implement allowTruncateForTailCall

Now that it's in place, it seems silly not to let ARM make use of the extra
tail call opportunities.

llvm-svn: 187795

11 years agoAdd a release not about llvm-ar.
Rafael Espindola [Tue, 6 Aug 2013 13:16:28 +0000 (13:16 +0000)]
Add a release not about llvm-ar.

Thanks to Bill Wendling for the reminder.

llvm-svn: 187794

11 years agoRemove oddly named libraries with "make uninstall-local"
Tim Northover [Tue, 6 Aug 2013 12:50:45 +0000 (12:50 +0000)]
Remove oddly named libraries with "make uninstall-local"

Patch by Edward-san.

llvm-svn: 187793

11 years agoStore compile unit corresponding to each chain of inlined debug info entries. No...
Alexey Samsonov [Tue, 6 Aug 2013 10:49:15 +0000 (10:49 +0000)]
Store compile unit corresponding to each chain of inlined debug info entries. No functionality change.

llvm-svn: 187792

11 years agoLLVM Interpreter: fixed bug 16694
Elena Demikhovsky [Tue, 6 Aug 2013 10:40:45 +0000 (10:40 +0000)]
LLVM Interpreter: fixed bug 16694
fix for: Bug 16694 - ExecutionEngine/test-interp-vec-loadstore.ll failing on powerpc-darwin8 (http://llvm.org/bugs/show_bug.cgi?id=16694)
The ExecutionEngine/test-interp-vec-loadstore.ll test has been failing on powerpc-darwin8 (on other platforms it passed)

the reason of fail was wrong output by printf. this output is checked by FileCheck, but on little-endian powerpc the output numeric data were printed inside out and FileCheck reported fail.
the printfs have been replaced by checking data inside test and numeric output has been replaced by the text output like : "int test passed, float test passed". The text output is checked by FileCheck.
the dependency on data layout has been removed.

done by Yuri Veselov (Intel)

llvm-svn: 187791

11 years agoAdd LLVM-style RTTI to DIContext/DWARFContext classes
Alexey Samsonov [Tue, 6 Aug 2013 10:32:39 +0000 (10:32 +0000)]
Add LLVM-style RTTI to DIContext/DWARFContext classes

llvm-svn: 187790

11 years ago[sanitizer] Fix NULL arg handling in setitimer/getitimer interceptors.
Evgeniy Stepanov [Tue, 6 Aug 2013 09:54:33 +0000 (09:54 +0000)]
[sanitizer] Fix NULL arg handling in setitimer/getitimer interceptors.

llvm-svn: 187789

11 years ago[sanitizer] Intercept sched_getaffinity.
Evgeniy Stepanov [Tue, 6 Aug 2013 09:29:01 +0000 (09:29 +0000)]
[sanitizer] Intercept sched_getaffinity.

llvm-svn: 187788

11 years agoRefactor isInTailCallPosition handling
Tim Northover [Tue, 6 Aug 2013 09:12:35 +0000 (09:12 +0000)]
Refactor isInTailCallPosition handling

This change came about primarily because of two issues in the existing code.
Niether of:

define i64 @test1(i64 %val) {
  %in = trunc i64 %val to i32
  tail call i32 @ret32(i32 returned %in)
  ret i64 %val
}

define i64 @test2(i64 %val) {
  tail call i32 @ret32(i32 returned undef)
  ret i32 42
}

should be tail calls, and the function sameNoopInput is responsible. The main
problem is that it is completely symmetric in the "tail call" and "ret" value,
but in reality different things are allowed on each side.

For these cases:
1. Any truncation should lead to a larger value being generated by "tail call"
   than needed by "ret".
2. Undef should only be allowed as a source for ret, not as a result of the
   call.

Along the way I noticed that a mismatch between what this function treats as a
valid truncation and what the backends see can lead to invalid calls as well
(see x86-32 test case).

This patch refactors the code so that instead of being based primarily on
values which it recurses into when necessary, it starts by inspecting the type
and considers each fundamental slot that the backend will see in turn. For
example, given a pathological function that returned {{}, {{}, i32, {}}, i32}
we would consider each "real" i32 in turn, and ask if it passes through
unchanged. This is much closer to what the backend sees as a result of
ComputeValueVTs.

Aside from the bug fixes, this eliminates the recursion that's going on and, I
believe, makes the bulk of the code significantly easier to understand. The
trade-off is the nasty iterators needed to find the real types inside a
returned value.

llvm-svn: 187787

11 years agoUnbreak Debug build on Windows
Serge Pavlov [Tue, 6 Aug 2013 08:44:18 +0000 (08:44 +0000)]
Unbreak Debug build on Windows

llvm-svn: 187786

11 years agoUpdate status of support for variable templates on website.
Larisse Voufo [Tue, 6 Aug 2013 07:37:09 +0000 (07:37 +0000)]
Update status of support for variable templates on website.

llvm-svn: 187785

11 years agoA bit of clean up based on peer's feedback...
Larisse Voufo [Tue, 6 Aug 2013 07:33:00 +0000 (07:33 +0000)]
A bit of clean up based on peer's feedback...

llvm-svn: 187784

11 years agoSimplify vector lane handling math a bit. No functional change intended.
Craig Topper [Tue, 6 Aug 2013 07:23:12 +0000 (07:23 +0000)]
Simplify vector lane handling math a bit. No functional change intended.

llvm-svn: 187783

11 years agoPR16755: When initializing or modifying a bitfield member in a constant
Richard Smith [Tue, 6 Aug 2013 07:09:20 +0000 (07:09 +0000)]
PR16755: When initializing or modifying a bitfield member in a constant
expression, truncate the stored value to the size of the bitfield.

llvm-svn: 187782

11 years agoSimplify math a little bit.
Craig Topper [Tue, 6 Aug 2013 06:54:25 +0000 (06:54 +0000)]
Simplify math a little bit.

llvm-svn: 187781

11 years agoTarget/*/CMakeLists.txt: Add the dependency to CommonTableGen explicitly for each...
NAKAMURA Takumi [Tue, 6 Aug 2013 06:38:37 +0000 (06:38 +0000)]
Target/*/CMakeLists.txt: Add the dependency to CommonTableGen explicitly for each corresponding CodeGen.

Without explicit dependencies, both per-file action and in-CommonTableGen action could run in parallel.
It races to emit *.inc files simultaneously.

llvm-svn: 187780

11 years agoReplace EVT with MVT in isHorizontalBinOp as it is only called with legal types.
Craig Topper [Tue, 6 Aug 2013 06:05:05 +0000 (06:05 +0000)]
Replace EVT with MVT in isHorizontalBinOp as it is only called with legal types.

llvm-svn: 187779

11 years agoAsmPrinter/CMakeLists.txt: Add explicit dependency to intrinsics_gen here.
NAKAMURA Takumi [Tue, 6 Aug 2013 05:56:39 +0000 (05:56 +0000)]
AsmPrinter/CMakeLists.txt: Add explicit dependency to intrinsics_gen here.

llvm-svn: 187778

11 years agoOption/CMakeLists.txt: Don't use target_link_libraries. LLVMBuild knows dependencies.
NAKAMURA Takumi [Tue, 6 Aug 2013 05:56:32 +0000 (05:56 +0000)]
Option/CMakeLists.txt: Don't use target_link_libraries. LLVMBuild knows dependencies.

llvm-svn: 187777

11 years agoRemoved hack that was used to properly restore the nested name specifier of qualified...
Larisse Voufo [Tue, 6 Aug 2013 05:49:26 +0000 (05:49 +0000)]
Removed hack that was used to properly restore the nested name specifier of qualified variable template ids. It turns out that the current implementation was just not logical setup for it. This commit has made it so.

llvm-svn: 187776

11 years agoPut an llvm_unreachable at the end of getSplatIndex as its loop should never find...
Craig Topper [Tue, 6 Aug 2013 05:41:22 +0000 (05:41 +0000)]
Put an llvm_unreachable at the end of getSplatIndex as its loop should never find all undef elements.

llvm-svn: 187775

11 years agoCheck against >= 0 instead of != -1 in getSplatIndex because it generally compiles...
Craig Topper [Tue, 6 Aug 2013 05:07:37 +0000 (05:07 +0000)]
Check against >= 0 instead of != -1 in getSplatIndex because it generally compiles to better code and is equivalent for shuffle indices.

llvm-svn: 187774

11 years agoRemove trailing whitespace and fix an 80-column violation. No functional change.
Craig Topper [Tue, 6 Aug 2013 05:01:21 +0000 (05:01 +0000)]
Remove trailing whitespace and fix an 80-column violation. No functional change.

llvm-svn: 187773

11 years agoScopInfo: add a testcase that share parameters within nested start.
Tobias Grosser [Tue, 6 Aug 2013 04:36:45 +0000 (04:36 +0000)]
ScopInfo: add a testcase that share parameters within nested start.

Contributed-by: Star Tan <tanmx_star@yeah.net>
llvm-svn: 187772

11 years agoSimplify code slightly. No functional change.
Craig Topper [Tue, 6 Aug 2013 04:12:40 +0000 (04:12 +0000)]
Simplify code slightly. No functional change.

llvm-svn: 187771

11 years agoFixing commit r187768: Moved diagnosis of forward declarations of variable templates...
Larisse Voufo [Tue, 6 Aug 2013 03:57:41 +0000 (03:57 +0000)]
Fixing commit r187768: Moved diagnosis of forward declarations of variable templates from Parser to Sema.

llvm-svn: 187770

11 years agoFix for PR16570: when comparing two function pointers, discard qualifiers when
Richard Trieu [Tue, 6 Aug 2013 03:44:10 +0000 (03:44 +0000)]
Fix for PR16570: when comparing two function pointers, discard qualifiers when
comparing non-reference function parameters.  The qualifiers don't matter for
comparisons.

llvm-svn: 187769

11 years agoMoved diagnosis of forward declarations of variable templates from Parser to Sema.
Larisse Voufo [Tue, 6 Aug 2013 03:43:07 +0000 (03:43 +0000)]
Moved diagnosis of forward declarations of variable templates from Parser to Sema.

llvm-svn: 187768

11 years agoclang/test/Driver/crash-report.c: Mark it as XFAIL:mingw32, for now. Investigating.
NAKAMURA Takumi [Tue, 6 Aug 2013 03:31:55 +0000 (03:31 +0000)]
clang/test/Driver/crash-report.c: Mark it as XFAIL:mingw32, for now. Investigating.

I met a message, "fatal error: file 'nul' modified since it was first processed".

llvm-svn: 187767

11 years agoAST/DeclTemplate.h: Possibly fix a warning. [-Wuninitialized]
NAKAMURA Takumi [Tue, 6 Aug 2013 03:29:01 +0000 (03:29 +0000)]
AST/DeclTemplate.h: Possibly fix a warning. [-Wuninitialized]

FIXME: Would '0' be an appropriate value in SequenceNumber?
llvm-svn: 187766

11 years agoSemaTemplateInstantiateDecl.cpp: Suppress a warning. [-Wunused-variable]
NAKAMURA Takumi [Tue, 6 Aug 2013 03:28:54 +0000 (03:28 +0000)]
SemaTemplateInstantiateDecl.cpp: Suppress a warning. [-Wunused-variable]

llvm-svn: 187765

11 years agoFactor FlattenCFG out from SimplifyCFG
Tom Stellard [Tue, 6 Aug 2013 02:43:45 +0000 (02:43 +0000)]
Factor FlattenCFG out from SimplifyCFG

Patch by: Mei Ye

llvm-svn: 187764

11 years agoAllow 4 as a valid debug info version.
Eric Christopher [Tue, 6 Aug 2013 01:38:27 +0000 (01:38 +0000)]
Allow 4 as a valid debug info version.

llvm-svn: 187763

11 years agoStarted implementing variable templates. Top level declarations should be fully suppo...
Larisse Voufo [Tue, 6 Aug 2013 01:03:05 +0000 (01:03 +0000)]
Started implementing variable templates. Top level declarations should be fully supported, up to some limitations documented as FIXMEs or TODO. Static data member templates work very partially. Static data member templates of class templates need particular attention...

llvm-svn: 187762

11 years agoAdd some comment to LTOCodeGenerator class
Shuxin Yang [Tue, 6 Aug 2013 00:45:32 +0000 (00:45 +0000)]
Add some comment to LTOCodeGenerator class

llvm-svn: 187761

11 years agoclang-cl: Implement the /Tc, /TC, /Tp and /TP options.
Hans Wennborg [Tue, 6 Aug 2013 00:20:31 +0000 (00:20 +0000)]
clang-cl: Implement the /Tc, /TC, /Tp and /TP options.

These are used to specify source files, and whether to treat source
files as C or C++.

Differential Revision: http://llvm-reviews.chandlerc.com/D1290

llvm-svn: 187760

11 years agoAdd test for header guard work-around.
John Thompson [Tue, 6 Aug 2013 00:17:40 +0000 (00:17 +0000)]
Add test for header guard work-around.

llvm-svn: 187759

11 years agoFix missing -*- C++ -*-s
Matt Arsenault [Tue, 6 Aug 2013 00:16:21 +0000 (00:16 +0000)]
Fix missing -*- C++ -*-s

llvm-svn: 187758

11 years agoFixed uninitialized member, plus recommit of 187736.
John Thompson [Mon, 5 Aug 2013 23:55:14 +0000 (23:55 +0000)]
Fixed uninitialized member, plus recommit of 187736.

llvm-svn: 187757

11 years agoFileCheckize some of the testcases.
Bill Wendling [Mon, 5 Aug 2013 23:43:18 +0000 (23:43 +0000)]
FileCheckize some of the testcases.

llvm-svn: 187756

11 years agoFix grammar.
Bill Wendling [Mon, 5 Aug 2013 23:29:16 +0000 (23:29 +0000)]
Fix grammar.

llvm-svn: 187755