platform/upstream/llvm.git
10 years agoEnable clang to continue to parse libstdc++4.6 and stlport after r210091.
Nico Weber [Wed, 2 Jul 2014 23:51:09 +0000 (23:51 +0000)]
Enable clang to continue to parse libstdc++4.6 and stlport after r210091.

r210091 made initialization checking more strict in c++11 mode. LWG2193 is
about changing standard libraries to still be valid under these new rules,
but older libstdc++ (e.g. libstdc++4.6 in -D_GLIBCXX_DEBUG=1 mode, or stlport)
do not implement that yet.  So fall back to the C++03 semantics for container
classes in system headers below the std namespace.

llvm-svn: 212238

10 years agoUpdate the MSVC compatibilty document for class template parsing
Reid Kleckner [Wed, 2 Jul 2014 23:37:33 +0000 (23:37 +0000)]
Update the MSVC compatibilty document for class template parsing

llvm-svn: 212237

10 years agoSo that we can include frame lowering in the subtarget, remove include
Eric Christopher [Wed, 2 Jul 2014 23:29:55 +0000 (23:29 +0000)]
So that we can include frame lowering in the subtarget, remove include
circular dependency with the subtarget by inlining accessor methods and
outlining a routine.

llvm-svn: 212236

10 years agoAdd the -reverse-sort flag (aka -r) to llvm-nm
Kevin Enderby [Wed, 2 Jul 2014 23:23:58 +0000 (23:23 +0000)]
Add the -reverse-sort flag (aka -r) to llvm-nm
which exists in other Unix nm(1)’s.

llvm-svn: 212235

10 years agoSo that we can include target lowering in the subtarget, remove include
Eric Christopher [Wed, 2 Jul 2014 23:18:40 +0000 (23:18 +0000)]
So that we can include target lowering in the subtarget, remove include
circular dependency with the subtarget by inlining accessor methods and
outlining a routine.

llvm-svn: 212234

10 years agoFix linkage bug that miscompiled variable templates instantiated from similarly named...
Larisse Voufo [Wed, 2 Jul 2014 23:08:34 +0000 (23:08 +0000)]
Fix linkage bug that miscompiled variable templates instantiated from similarly named local types. In essence, this bug ensures that the x<Foo> specialization in function foo() defined as follows differs between two distinct translation units.
    static int &foo() {
       struct Foo { };
       return x<Foo>;
    }

llvm-svn: 212233

10 years agoFix a warning about undeclared call to abort().
Dan Albert [Wed, 2 Jul 2014 22:44:35 +0000 (22:44 +0000)]
Fix a warning about undeclared call to abort().

llvm-svn: 212232

10 years agoUpdate comment and include guard.
Rafael Espindola [Wed, 2 Jul 2014 22:31:51 +0000 (22:31 +0000)]
Update comment and include guard.

I missed these when moving the files.

llvm-svn: 212231

10 years ago[OCaml] Documentation improvements.
Peter Zotov [Wed, 2 Jul 2014 22:17:20 +0000 (22:17 +0000)]
[OCaml] Documentation improvements.

Patch by Julien Sagot

llvm-svn: 212230

10 years agoMore editorial issues in MSVCCompatibility.rst
David Majnemer [Wed, 2 Jul 2014 22:14:34 +0000 (22:14 +0000)]
More editorial issues in MSVCCompatibility.rst

Make the status text for lambdas green.

llvm-svn: 212229

10 years agoFix typos.
Eric Christopher [Wed, 2 Jul 2014 22:05:40 +0000 (22:05 +0000)]
Fix typos.

llvm-svn: 212228

10 years agoFix Typo in MSVCCompatibility.rst
Warren Hunt [Wed, 2 Jul 2014 21:46:03 +0000 (21:46 +0000)]
Fix Typo in MSVCCompatibility.rst
Also removed a sentance that was no longer relevant.

llvm-svn: 212227

10 years agoRevert "DebugInfo: Ensure that all debug location scope chains from instructions...
David Blaikie [Wed, 2 Jul 2014 21:42:28 +0000 (21:42 +0000)]
Revert "DebugInfo: Ensure that all debug location scope chains from instructions within a function, lead to the function itself."

This reverts commit r212205.

Reverting this again, still seeing crashes when building compiler-rt...
Sorry for the continued noise, not sure why I'm failing to reproduce
this locally.

llvm-svn: 212226

10 years agolldb - problem with some PTRACE_* constants in NativeProcessLinux.cpp file
Todd Fiala [Wed, 2 Jul 2014 21:34:04 +0000 (21:34 +0000)]
lldb - problem with some PTRACE_* constants in NativeProcessLinux.cpp file

See http://reviews.llvm.org/D4366 for details.

Change by Paul Paul Osmialowski

Today this is the only problem that I'm facing trying to cross-compile lldb for AArch64 using Linaro's toolchain.

PTRACE_GETREGS, PTRACE_SETREGS, PTRACE_GETFPREGS, PTRACE_SETFPREGS are not defined for AArch64
These things can be defined different ways for other architectures, e.g. for x86_64 Linux, asm/ptrace-abi.h defines them as preprocessor constants while sys/ptrace.h defines them in enum along with corresponding PT_* preprocessor constants
NativeProcessLinux.cpp includes sys/ptrace.h
To avoid accidental redefinition of enums with preprocessor constants, I'm proposing this patch which first checks for PT_* preprocessor constants then checks for PTRACE_* constants then when it still can not find them, it defines preprocessor constants.
Similar approach was already used for PTRACE_GETREGSET and PTRACE_SETREGSET constants; in this case however it was easier, since enum values in sys/ptrace.h and preprocessor constants shared all exactly the same names (e.g. there's no additional PT_GETREGSET name defined).

llvm-svn: 212225

10 years agoMove the data layout and selection dag info from the mips target machine
Eric Christopher [Wed, 2 Jul 2014 21:29:23 +0000 (21:29 +0000)]
Move the data layout and selection dag info from the mips target machine
down to the subtarget.

llvm-svn: 212224

10 years ago[X86] AVX512: Allow writemask argument in vpermt* intrinsics
Adam Nemet [Wed, 2 Jul 2014 21:26:01 +0000 (21:26 +0000)]
[X86] AVX512: Allow writemask argument in vpermt* intrinsics

llvm-svn: 212223

10 years ago[X86] AVX512: Generate Pat<>'s for the vpermt2* intrinsics via multiclass
Adam Nemet [Wed, 2 Jul 2014 21:25:58 +0000 (21:25 +0000)]
[X86] AVX512: Generate Pat<>'s for the vpermt2* intrinsics via multiclass

This new multiclass, avx512_perm_table_3src derives from the current one and
provides the Pat<>.  The next patch will add another Pat<> that uses the
writemask.

Note that I dropped the type annotation from the intrinsic call, i.e.: (v16f32
VR512:$src1) -> R512:$src1.  I think that this should be fine (at least many
intrinsic calls don't provide them) and it greatly reduces the number of
template arguments.

llvm-svn: 212222

10 years ago[X86] AVX512: Add writemask variants for vperm*2*
Adam Nemet [Wed, 2 Jul 2014 21:25:54 +0000 (21:25 +0000)]
[X86] AVX512: Add writemask variants for vperm*2*

This includes assembler and codegen support (see the new tests in
avx512-encodings.s and avx512-shuffle.ll).

<rdar://problem/17492620>

llvm-svn: 212221

10 years agoAdd host layer support for pipes.
Greg Clayton [Wed, 2 Jul 2014 21:10:39 +0000 (21:10 +0000)]
Add host layer support for pipes.

Windows does support pipes, but they do so in a slightly different way. Added a Host layer which abstracts the use of pipes into a new Pipe class that everyone can use.

Windows benefits include:
- Being able to interrupt running processes when IO is directly hooked up
- being able to interrupt long running python scripts
- being able to interrupt anything based on ConnectionFileDescriptor

llvm-svn: 212220

10 years agoFixup typo in MSVCCompatibility.rst
David Majnemer [Wed, 2 Jul 2014 21:09:33 +0000 (21:09 +0000)]
Fixup typo in MSVCCompatibility.rst

llvm-svn: 212219

10 years agoR600: Add a comment that llvm.AMDGPU.trunc is a legacy intrinsic
Tom Stellard [Wed, 2 Jul 2014 20:53:57 +0000 (20:53 +0000)]
R600: Add a comment that llvm.AMDGPU.trunc is a legacy intrinsic

llvm-svn: 212218

10 years agoR600/SI: Use a ComplexPattern for ADDR64 addressing of MUBUF loads
Tom Stellard [Wed, 2 Jul 2014 20:53:56 +0000 (20:53 +0000)]
R600/SI: Use a ComplexPattern for ADDR64 addressing of MUBUF loads

llvm-svn: 212217

10 years agoR600: Promote i64 loads to v2i32
Tom Stellard [Wed, 2 Jul 2014 20:53:54 +0000 (20:53 +0000)]
R600: Promote i64 loads to v2i32

llvm-svn: 212216

10 years agoR600/SI: Adjsut SGPR live ranges before register allocation
Tom Stellard [Wed, 2 Jul 2014 20:53:48 +0000 (20:53 +0000)]
R600/SI: Adjsut SGPR live ranges before register allocation

SGPRs are written by instructions that sometimes will ignore control flow,
which means if you have code like:

if (VGPR0) {
  SGPR0 = S_MOV_B32 0
} else {
  SGPR0 = S_MOV_B32 1
}

The value of SGPR0 will 1 no matter what the condition is.

In order to deal with this situation correctly, we need to view the
program as if it were a single basic block when we calculate the
live ranges for the SGPRs.  They way we actually update the live
range is by iterating over all of the segments in each LiveRange
object and setting the end of each segment equal to the start of
the next segment.  So a live range like:

[3888r,9312r:0)[10032B,10384B:0)  0@3888r

will become:

[3888r,10032B:0)[10032B,10384B:0)  0@3888r

This change will allow us to use SALU instructions within branches.

llvm-svn: 212215

10 years agoR600/SI: Add verifier check for immediates in register operands.
Tom Stellard [Wed, 2 Jul 2014 20:53:44 +0000 (20:53 +0000)]
R600/SI: Add verifier check for immediates in register operands.

llvm-svn: 212214

10 years agoMake LLDB.framework link again on Yosemite.
Greg Clayton [Wed, 2 Jul 2014 20:32:01 +0000 (20:32 +0000)]
Make LLDB.framework link again on Yosemite.

llvm-svn: 212213

10 years agoRemove non-static field initializer to appease MSVC
Alexey Samsonov [Wed, 2 Jul 2014 20:25:42 +0000 (20:25 +0000)]
Remove non-static field initializer to appease MSVC

llvm-svn: 212212

10 years agoXFAIL test on Android (this is a known issue)
Alexey Samsonov [Wed, 2 Jul 2014 20:18:41 +0000 (20:18 +0000)]
XFAIL test on Android (this is a known issue)

llvm-svn: 212211

10 years agoFix configure+make build.
Rafael Espindola [Wed, 2 Jul 2014 20:05:48 +0000 (20:05 +0000)]
Fix configure+make build.

llvm-svn: 212210

10 years agoMove CFG building code to a new lib/MC/MCAnalysis library.
Rafael Espindola [Wed, 2 Jul 2014 19:49:34 +0000 (19:49 +0000)]
Move CFG building code to a new lib/MC/MCAnalysis library.

The new library is 150KB on a Release+Asserts build, so it is quiet a bit of
code that regular users of MC don't need to link with now.

llvm-svn: 212209

10 years agoRemoving Carbon dependency by removing obsolete code.
Jean-Daniel Dupas [Wed, 2 Jul 2014 19:37:25 +0000 (19:37 +0000)]
Removing Carbon dependency by removing obsolete code.
The only part using Carbon is a function in Host.mm used to open a file in Xcode.
That code is broken and it is no longer useful as Xcode supports LLDB natively.

llvm-svn: 212208

10 years agoIf a breakpoint gets deleted, any SBBreakpoints representing that
Jim Ingham [Wed, 2 Jul 2014 18:44:43 +0000 (18:44 +0000)]
If a breakpoint gets deleted, any SBBreakpoints representing that
breakpoint should return false from IsValid.

llvm-svn: 212206

10 years agoDebugInfo: Ensure that all debug location scope chains from instructions within a...
David Blaikie [Wed, 2 Jul 2014 18:32:05 +0000 (18:32 +0000)]
DebugInfo: Ensure that all debug location scope chains from instructions within a function, lead to the function itself.

Originally committed in r211723, reverted in r211724 due to failure
cases found and fixed (ArgumentPromotion: r211872, Inlining: r212065),
committed again in r212085 and reverted again in r212089 after fixing
some other cases, such as debug info subprogram lists not keeping track
of the function they represent (r212128) and then short-circuiting
things like LiveDebugVariables that build LexicalScopes for functions
that might not have full debug info.

And again, I believe the invariant actually holds for some reasonable
amount of code (but I'll keep an eye on the buildbots and see what
happens... ).

Original commit message:

PR20038: DebugInfo: Inlined call sites where the caller has debug info
but the call itself has no debug location.

This situation does bad things when inlined, so I've fixed Clang not to
produce inlinable call sites without locations when the caller has debug
info (in the one case where I could find that this occurred). This
updates the PR20038 test case to be what clang now produces, and readds
the assertion that had to be removed due to this bug.

I've also beefed up the debug info verifier to help diagnose these
issues in the future, and I hope to add checks to the inliner to just
assert-fail if it encounters this situation. If, in the future, we
decide we have to cope with this situation, the right thing to do is
probably to just remove all the DebugLocs from the inlined instructions.

llvm-svn: 212205

10 years ago[RegAllocGreedy] Provide a subtarget hook to disable the local reassignment
Quentin Colombet [Wed, 2 Jul 2014 18:32:04 +0000 (18:32 +0000)]
[RegAllocGreedy] Provide a subtarget hook to disable the local reassignment
heuristic.
By default, no functionality change.
This is a follow-up of r212099.

This hook provides a finer grain to control the optimization.

<rdar://problem/17444599>

llvm-svn: 212204

10 years agoDon't try to construct debug LexicalScopes hierarchy for functions that do not have...
David Blaikie [Wed, 2 Jul 2014 18:31:35 +0000 (18:31 +0000)]
Don't try to construct debug LexicalScopes hierarchy for functions that do not have top level debug information.

If a function isn't actually in a CU's subprogram list in the debug info
metadata, ignore all the DebugLocs and don't try to build scopes, track
variables, etc.

While this is possibly a minor optimization, it's also a correctness fix
for an incoming patch that will add assertions to LexicalScopes and the
debug info verifier to ensure that all scope chains lead to debug info
for the current function.

Fix up a few test cases that had broken/incomplete debug info that could
violate this constraint.

Add a test case where this occurs by design (inlining a
debug-info-having function in an attribute nodebug function - we want
this to work because /if/ the nodebug function is then inlined into a
debug-info-having function, it should be fine (and will work fine - we
just stitch the scopes up as usual), but should the inlining not happen
we need to not assert fail either).

llvm-svn: 212203

10 years agoConstify the Function pointers in the result of makeSubprogramMap
David Blaikie [Wed, 2 Jul 2014 18:30:05 +0000 (18:30 +0000)]
Constify the Function pointers in the result of makeSubprogramMap

These don't need to be mutable and callers being added soon in CodeGen
won't have access to non-const Module&.

llvm-svn: 212202

10 years agoAArch64: Re-enable AArch64AddressTypePromotion
Duncan P. N. Exon Smith [Wed, 2 Jul 2014 18:17:40 +0000 (18:17 +0000)]
AArch64: Re-enable AArch64AddressTypePromotion

This reverts commits r212189 and r212190.

While this pass was accidentally disabled (until r212073), r205437
slipped in a use of `auto` that should have been `auto&`.

This fixes PR20188.

llvm-svn: 212201

10 years agoAdd missing dependency to macho-dump.
Rui Ueyama [Wed, 2 Jul 2014 18:16:31 +0000 (18:16 +0000)]
Add missing dependency to macho-dump.

r212094 added a few tests that use macho-dump.

llvm-svn: 212200

10 years agoAArch64: Remove unnecessary parens
Duncan P. N. Exon Smith [Wed, 2 Jul 2014 18:14:03 +0000 (18:14 +0000)]
AArch64: Remove unnecessary parens

llvm-svn: 212199

10 years agoDerive run-time conditions for delinearization
Tobias Grosser [Wed, 2 Jul 2014 17:47:48 +0000 (17:47 +0000)]
Derive run-time conditions for delinearization

As our delinearization works optimistically, we need in some cases run-time
checks that verify our optimistic assumptions. A simple example is the
following code:

void foo(long n, long m, long o, double A[n][m][o]) {

  for (long i = 0; i < 100; i++)
    for (long j = 0; j < 150; j++)
      for (long k = 0; k < 200; k++)
        A[i][j][k] = 1.0;
}

After clang linearized the access to A and we delinearized it again to
A[i][j][k] we need to ensure that we do not access the delinearized array
out of bounds (this information is not available in LLVM-IR). Hence, we
need to verify the following constraints at run-time:

CHECK:   Assumed Context:
CHECK:   [o, m] -> {  : m >= 150 and o >= 200 }
llvm-svn: 212198

10 years agoR600: Fix crashes when an illegal type load or store is not handled.
Matt Arsenault [Wed, 2 Jul 2014 17:44:53 +0000 (17:44 +0000)]
R600: Fix crashes when an illegal type load or store is not handled.

I don't think anything hits this now, but will be exposed in future
patches.

llvm-svn: 212197

10 years agoCodeGen: make target builtins support languages
Saleem Abdulrasool [Wed, 2 Jul 2014 17:41:27 +0000 (17:41 +0000)]
CodeGen: make target builtins support languages

This extends the target builtin support to allow language specific annotations
(i.e. LANGBUILTIN).  This is to allow MSVC compatibility whilst retaining the
ability to have EABI targets use a __builtin_ prefix.  This is merely to allow
uniformity in the EABI case where the unprefixed name is provided as an alias in
the header.

llvm-svn: 212196

10 years agoJust adding a getHalfTy method to IRBuilder for completeness.
Puyan Lotfi [Wed, 2 Jul 2014 17:33:00 +0000 (17:33 +0000)]
Just adding a getHalfTy method to IRBuilder for completeness.

llvm-svn: 212195

10 years agoAArch64: Merge isa with dyn_cast
Duncan P. N. Exon Smith [Wed, 2 Jul 2014 17:26:39 +0000 (17:26 +0000)]
AArch64: Merge isa with dyn_cast

llvm-svn: 212194

10 years agoUpdate the MSVC Compatibility document
David Majnemer [Wed, 2 Jul 2014 17:26:04 +0000 (17:26 +0000)]
Update the MSVC Compatibility document

It hasn't been updated to reflect the progress we've made.  We've fuzz
tested VFTables, VBTables, layout, and RTTI data.  We support lambdas
that are compatible with their scheme.

llvm-svn: 212193

10 years agoStart converting usages of off_t to other types.
Zachary Turner [Wed, 2 Jul 2014 17:24:07 +0000 (17:24 +0000)]
Start converting usages of off_t to other types.

off_t is a type which is used for file offsets.  Even more
specifically, it is only used by a limited number of C APIs that
deal with files.  Any usage of off_t where the variable is not
intended to be used with one of these APIs is a bug, by definition.

This patch corrects some easy mis-uses of off_t, generally by
converting them to lldb::offset_t, but sometimes by using other
types such as size_t, when appropriate.

The use of off_t to represent these offsets has worked fine in
practice on linux-y platforms, since we used _FILE_OFFSET_64 to
guarantee that off_t was a uint64.  On Windows, however,
_FILE_OFFSET_64 is unrecognized, and off_t will always be 32-bit.
So the usage of off_t on Windows actually leads to legitimate bugs.

Reviewed by: Greg Clayton

Differential Revision: http://reviews.llvm.org/D4358

llvm-svn: 212192

10 years agoARCMigrate: simplify diagnostic handling
Alp Toker [Wed, 2 Jul 2014 17:08:00 +0000 (17:08 +0000)]
ARCMigrate: simplify diagnostic handling

Recent enhancements in the diagnostics engine mean that
TransformActions::report() no longer needs to duplicate this suppression logic.

That's great because the old code was flawed and would have attached notes to
the wrong primary diagnostic in non-trivial use.

With these changes it becomes safe to use reportNote() freely in the migration
tool.

llvm-svn: 212191

10 years agoXFAIL the test to go with r202189
Duncan P. N. Exon Smith [Wed, 2 Jul 2014 17:07:03 +0000 (17:07 +0000)]
XFAIL the test to go with r202189

llvm-svn: 212190

10 years agoAArch64: Temporarily disable AArch64AddressTypePromotion
Duncan P. N. Exon Smith [Wed, 2 Jul 2014 17:03:16 +0000 (17:03 +0000)]
AArch64: Temporarily disable AArch64AddressTypePromotion

Temporarily disable AArch64AddressTypePromotion, which was effectively
re-enabled in r212073 and r212075, while I look into PR20188.

llvm-svn: 212189

10 years ago[ASan] Print exact source location of global variables in error reports.
Alexey Samsonov [Wed, 2 Jul 2014 16:54:41 +0000 (16:54 +0000)]
[ASan] Print exact source location of global variables in error reports.

See https://code.google.com/p/address-sanitizer/issues/detail?id=299 for the
original feature request.

Introduce llvm.asan.globals metadata, which Clang (or any other frontend)
may use to report extra information about global variables to ASan
instrumentation pass in the backend. This metadata replaces
llvm.asan.dynamically_initialized_globals that was used to detect init-order
bugs. llvm.asan.globals contains the following data for each global:
  1) source location (file/line/column info);
  2) whether it is dynamically initialized;
  3) whether it is blacklisted (shouldn't be instrumented).

Source location data is then emitted in the binary and can be picked up
by ASan runtime in case it needs to print error report involving some global.
For example:

  0x... is located 4 bytes to the right of global variable 'C::array' defined in '/path/to/file:17:8' (0x...) of size 40

These source locations are printed even if the binary doesn't have any
debug info.

This is an ABI-breaking change. ASan initialization is renamed to
__asan_init_v4(). Pre-built libraries compiled with older Clang will not work
with the fresh runtime.

llvm-svn: 212188

10 years agoRevert "Revert "MachineScheduler: better book-keeping for asserts.""
Chad Rosier [Wed, 2 Jul 2014 16:46:08 +0000 (16:46 +0000)]
Revert "Revert "MachineScheduler: better book-keeping for asserts.""

This reverts commit r212109, which reverted r212088.

However, disable the assert as it's not necessary for correctness.  There are
several corner cases that the assert needed to handle better for in-order
scheduling, but none of them are incorrect scheduler behavior. The assert is
mainly there to collect good unit tests like this and ensure that the
target-independent scheduler is working as expected with the various machine
models.

llvm-svn: 212187

10 years agoUse arguments of user statements to perform induction variable substitution
Tobias Grosser [Wed, 2 Jul 2014 16:26:47 +0000 (16:26 +0000)]
Use arguments of user statements to perform induction variable substitution

To translate the old induction variables as they exist before Polly to new
new induction variables introduced during AST code generation we need to
generate code that computes the new values from the old ones. We can do this
by just looking at the arguments isl generates in each scheduled statement.

Example:

  // Old
  for i
    S(i)

  // New
  for c0
    for c1
      S(c0 + c1)

To get the value of i, we need to compute 'c0 + c1'. This expression is readily
available in the user statements generated by isl and just needs to be
translated to LLVM-IR.

This replaces an old confusing construct that constructed during ast generation
an isl multi affine expression that described this relation and which was then
again ast generated for each statement and argument when translating the isl ast
to LLVM-IR. This approach was difficult to understand and the additional ast
generation calls where entirely redundant as isl provides the relevant
expressions as arguments of the generated user statements.

llvm-svn: 212186

10 years agoMinor cleanup for string_view; mostly from suggestions by Richard Smith. Also, make...
Marshall Clow [Wed, 2 Jul 2014 15:45:57 +0000 (15:45 +0000)]
Minor cleanup for string_view; mostly from suggestions by Richard Smith. Also, make the tests pass under c++03

llvm-svn: 212185

10 years agoAlso document the 'arc commit' commands in the 'Committing a change' section of the...
Sylvestre Ledru [Wed, 2 Jul 2014 15:25:25 +0000 (15:25 +0000)]
Also document the 'arc commit' commands in the 'Committing a change' section of the Phabricator doc

llvm-svn: 212184

10 years agoAdded standard macro guard. In case __GNUC_VA_LIST was not
Yaron Keren [Wed, 2 Jul 2014 15:25:03 +0000 (15:25 +0000)]
Added standard macro guard. In case __GNUC_VA_LIST was not
defined or defined identically before there will not be any
change in functionality.

MinGW-w64 defines __GNUC_VA_LIST as

  #define __GNUC_VA_LIST

which is different than the definition here, causing
a warning without the guard.

llvm-svn: 212183

10 years ago[mips] Added additional test cases for passing -mabi to the assembler.
Daniel Sanders [Wed, 2 Jul 2014 15:21:50 +0000 (15:21 +0000)]
[mips] Added additional test cases for passing -mabi to the assembler.

Summary:
This patch adds minimal coverage for each -mcpu value to ensure that none of them can pass an empty string in -mabi.

Prior to r212176, many -mcpu values would trigger this.

Differential Revision: http://reviews.llvm.org/D4272

llvm-svn: 212182

10 years agoX86: When combining shuffles just remove shuffles that are completely redundant.
Benjamin Kramer [Wed, 2 Jul 2014 15:09:44 +0000 (15:09 +0000)]
X86: When combining shuffles just remove shuffles that are completely redundant.

CombineTo doesn't allow replacing a node with itself so this would crash if the
combined shuffle is the same as the input shuffle.

llvm-svn: 212181

10 years agoConsistently handle clang-tidy check names in ClangTidyError.
Alexander Kornienko [Wed, 2 Jul 2014 15:05:04 +0000 (15:05 +0000)]
Consistently handle clang-tidy check names in ClangTidyError.

Summary:
This patch removes " [check-name]" from the end of
ClangTidyMessage::Message. The " [check-name]" part is only appended when
printing diagnostics on the console. Clang errors are now marked with
"clang-diagnostic-error" check name, remarks and unknown warnings are marked
with "clang-diagnostic-unknown".

Reviewers: djasper

Reviewed By: djasper

Subscribers: cfe-commits

Differential Revision: http://reviews.llvm.org/D4356

llvm-svn: 212180

10 years agoUndefine R2, R4, R6 after use.
Axel Naumann [Wed, 2 Jul 2014 14:40:35 +0000 (14:40 +0000)]
Undefine R2, R4, R6 after use.

llvm-svn: 212179

10 years agoAVX-512: dec/inc instructions are slow on KNL
Elena Demikhovsky [Wed, 2 Jul 2014 14:11:05 +0000 (14:11 +0000)]
AVX-512: dec/inc instructions are slow on KNL
After Alexey Volkov, I'm adding the same property for KNL, that prefers ADD/SUB instead of INC/DEC.
Added a test.

llvm-svn: 212178

10 years ago[mips] Make FileCheck prefixes match the CPU they check
Daniel Sanders [Wed, 2 Jul 2014 13:21:52 +0000 (13:21 +0000)]
[mips] Make FileCheck prefixes match the CPU they check

Summary:
For example: s/MIPS32-EB-AS/MIPS32R2-EB-AS/ since it is for MIPS32r2 not MIPS32.

This reduces the noise in my next Clang patch.

Differential Revision: http://reviews.llvm.org/D4271

llvm-svn: 212177

10 years ago[Driver][Mips] If ABI name is not provided deduce it from the target triple
Simon Atanasyan [Wed, 2 Jul 2014 13:20:36 +0000 (13:20 +0000)]
[Driver][Mips] If ABI name is not provided deduce it from the target triple
not from the CPU name. This approach is closer to the method used by gcc driver.

llvm-svn: 212176

10 years agoARM: add support for v8 ldaex/stlex builtins.
Tim Northover [Wed, 2 Jul 2014 12:56:02 +0000 (12:56 +0000)]
ARM: add support for v8 ldaex/stlex builtins.

ARMv8 adds (to both AArch32 and AArch64) acquiring and releasing
variants of the exclusive operations, in line with the C++11 memory
model.

This adds support for two new intrinsics to expose them to C & C++
developers directly: __builtin_arm_ldaex and __builtin_arm_stlex, in
direct analogy with the versions with no implicit barrier.

rdar://problem/15885451

llvm-svn: 212175

10 years agoMake FunctionDecl::getReturnTypeSourceRange() support non-builtin types
Alp Toker [Wed, 2 Jul 2014 12:55:58 +0000 (12:55 +0000)]
Make FunctionDecl::getReturnTypeSourceRange() support non-builtin types

Also document that the function is a "best-effort" facility to extract source
ranges from limited AST type location info.

llvm-svn: 212174

10 years agoX86: inline all atomic operations up to 128-bits.
Tim Northover [Wed, 2 Jul 2014 10:25:45 +0000 (10:25 +0000)]
X86: inline all atomic operations up to 128-bits.

The backend *can* cope with all of these now, so Clang should give it the
chance. On CPUs without cmpxchg16b (e.g. the original athlon64) LLVM can reform
the libcalls.

rdar://problem/13496295

llvm-svn: 212173

10 years agoReplace uint32_t by lldb::RegisterKing in register context API.
Jean-Daniel Dupas [Wed, 2 Jul 2014 09:51:28 +0000 (09:51 +0000)]
Replace uint32_t by lldb::RegisterKing in register context API.

llvm-svn: 212172

10 years agoDon't accept qualified 'int' main return types in C++ or standard C mode
Alp Toker [Wed, 2 Jul 2014 07:07:20 +0000 (07:07 +0000)]
Don't accept qualified 'int' main return types in C++ or standard C mode

C++ [basic.start.main]p1: "It shall have a return type of type int"

ISO C is also clear about this, so only accept 'int' with qualifiers in GNUMode
C.

llvm-svn: 212171

10 years agoAdded test for capturing VLA types if the captured variable is a function parameter.
Alexey Bataev [Wed, 2 Jul 2014 07:05:22 +0000 (07:05 +0000)]
Added test for capturing VLA types if the captured variable is a function parameter.

llvm-svn: 212170

10 years agoMove operator[] to DomTreeNodeBase
Matt Arsenault [Wed, 2 Jul 2014 06:50:48 +0000 (06:50 +0000)]
Move operator[] to DomTreeNodeBase

The comment in base even refers to it, but it was only defined
in the subclass.

llvm-svn: 212169

10 years agoFix missing const
Matt Arsenault [Wed, 2 Jul 2014 06:45:26 +0000 (06:45 +0000)]
Fix missing const

llvm-svn: 212168

10 years agoInstCombine: Optimize x/INT_MIN to x==INT_MIN
David Majnemer [Wed, 2 Jul 2014 06:42:13 +0000 (06:42 +0000)]
InstCombine: Optimize x/INT_MIN to x==INT_MIN

The result of x/INT_MIN is either 0 or 1, we can just use an icmp
instead.

llvm-svn: 212167

10 years ago[cleanup] Hoist an if-else chain on ISD opcodes (really designed for
Chandler Carruth [Wed, 2 Jul 2014 06:23:34 +0000 (06:23 +0000)]
[cleanup] Hoist an if-else chain on ISD opcodes (really designed for
switches) into a switch, and sink them into a dispatch function that can
return the result rather than awkward variable setting with breaks.

llvm-svn: 212166

10 years agoInstCombine: Add a vector variant test for PR20186
David Majnemer [Wed, 2 Jul 2014 06:14:13 +0000 (06:14 +0000)]
InstCombine: Add a vector variant test for PR20186

No functional change, just adding more test coverage that was meant to
go in with r212164.

llvm-svn: 212165

10 years agoInstCombine: Don't turn -(x/INT_MIN) -> x/INT_MIN
David Majnemer [Wed, 2 Jul 2014 06:07:09 +0000 (06:07 +0000)]
InstCombine: Don't turn -(x/INT_MIN) -> x/INT_MIN

It is not safe to negate the smallest signed integer, doing so yields
the same number back.

This fixes PR20186.

llvm-svn: 212164

10 years agoAdd range for-loop iterator adapter for cases in SwitchInst.
Owen Anderson [Wed, 2 Jul 2014 05:32:13 +0000 (05:32 +0000)]
Add range for-loop iterator adapter for cases in SwitchInst.

Patch by Marcello Maggioni, reviewed by Reid Kleckner.

llvm-svn: 212163

10 years ago[OPENMP, C++11] Improve code of InitVLACaptures function.
Alexey Bataev [Wed, 2 Jul 2014 05:15:00 +0000 (05:15 +0000)]
[OPENMP, C++11] Improve code of InitVLACaptures function.

llvm-svn: 212162

10 years agoaarch64: support target-specific .req assembler directive
Saleem Abdulrasool [Wed, 2 Jul 2014 04:50:23 +0000 (04:50 +0000)]
aarch64: support target-specific .req assembler directive

Based on the support for .req on ARM. The aarch64 variant has to keep track if
the alias register was a vector register (v0-31) or a general purpose or
VFP/Advanced SIMD ([bhsdq]0-31) register.

Patch by Janne Grunau!

llvm-svn: 212161

10 years agoPrevent Clang from crashing on template code.
Richard Trieu [Wed, 2 Jul 2014 04:39:38 +0000 (04:39 +0000)]
Prevent Clang from crashing on template code.

Fixes PR20110, where Clang hits an assertion failure when it expects that the
sub-expression of a bit cast to pointer to also be a pointer, but gets a value
instead.

Differential Revision: http://reviews.llvm.org/D4280

llvm-svn: 212160

10 years ago[cleanup] Remove dead 'break;' statements that I meant to nuke in
Chandler Carruth [Wed, 2 Jul 2014 04:39:34 +0000 (04:39 +0000)]
[cleanup] Remove dead 'break;' statements that I meant to nuke in
r212158 but missed.

Thanks to Craig for spotting the goof!

llvm-svn: 212159

10 years ago[cleanup] Hoist the promotion dispatch logic into the promote function
Chandler Carruth [Wed, 2 Jul 2014 03:07:15 +0000 (03:07 +0000)]
[cleanup] Hoist the promotion dispatch logic into the promote function
so that we can use return to express it more cleanly and avoid so many
nested switch statements.

llvm-svn: 212158

10 years ago[cleanup] Nuke the 'VectorOp' bit of the promote method names.
Chandler Carruth [Wed, 2 Jul 2014 03:07:11 +0000 (03:07 +0000)]
[cleanup] Nuke the 'VectorOp' bit of the promote method names.

This doesn't add any information for methods in the VectorLegalizer
class that clearly take SDAG operations to legalize.

llvm-svn: 212157

10 years ago[OPENMP] Fixed error message reporting for nesting of regions
Alexey Bataev [Wed, 2 Jul 2014 03:04:53 +0000 (03:04 +0000)]
[OPENMP] Fixed error message reporting for nesting of regions

llvm-svn: 212156

10 years ago[x86] Clean up and modernize the doxygen and API comments for the vector
Chandler Carruth [Wed, 2 Jul 2014 02:16:57 +0000 (02:16 +0000)]
[x86] Clean up and modernize the doxygen and API comments for the vector
operation legalization code.

llvm-svn: 212155

10 years agoIntroduce a FunctionDecl::getReturnTypeSourceRange() utility
Alp Toker [Wed, 2 Jul 2014 01:47:15 +0000 (01:47 +0000)]
Introduce a FunctionDecl::getReturnTypeSourceRange() utility

This source range is useful for all kinds of diagnostic QOI and refactoring
work, so let's make it more discoverable.

This commit also makes use of the new function to enhance various diagnostics
relating to return types and resolves an old FIXME.

llvm-svn: 212154

10 years agoBreak out subtarget initialization that dependent variables need into
Eric Christopher [Wed, 2 Jul 2014 01:14:43 +0000 (01:14 +0000)]
Break out subtarget initialization that dependent variables need into
a separate function and clean up calling convention for helper function.

llvm-svn: 212153

10 years agoUnify these two lines.
Eric Christopher [Wed, 2 Jul 2014 01:02:28 +0000 (01:02 +0000)]
Unify these two lines.

llvm-svn: 212152

10 years agoMove MipsJITInfo to the subtarget rather than the target machine.
Eric Christopher [Wed, 2 Jul 2014 00:54:12 +0000 (00:54 +0000)]
Move MipsJITInfo to the subtarget rather than the target machine.

llvm-svn: 212151

10 years agoRemove unnecessary include.
Eric Christopher [Wed, 2 Jul 2014 00:54:10 +0000 (00:54 +0000)]
Remove unnecessary include.

llvm-svn: 212150

10 years agoRemove the cached InstrItineraryData on the TargetMachine, it's unnecessary.
Eric Christopher [Wed, 2 Jul 2014 00:54:07 +0000 (00:54 +0000)]
Remove the cached InstrItineraryData on the TargetMachine, it's unnecessary.

llvm-svn: 212149

10 years agoRemove the recommendation against using std::function
Reid Kleckner [Wed, 2 Jul 2014 00:42:07 +0000 (00:42 +0000)]
Remove the recommendation against using std::function

Clang-cl supports MSVC-style RTTI now, and we can even compile
typeid(...) with /GR-.  Just don't instantiate std::function with a
polymorphic type, or bad things will happen.

llvm-svn: 212148

10 years agoMove the subtarget dependent features from XCoreTargetMachine
Eric Christopher [Wed, 2 Jul 2014 00:10:09 +0000 (00:10 +0000)]
Move the subtarget dependent features from XCoreTargetMachine
down to the subtarget.

llvm-svn: 212147

10 years agoMake XCoreSelectionDAGInfo take a DataLayout since it only needs
Eric Christopher [Wed, 2 Jul 2014 00:10:05 +0000 (00:10 +0000)]
Make XCoreSelectionDAGInfo take a DataLayout since it only needs
that information.

llvm-svn: 212146

10 years agoAdd Kalimba support to ArchSpec.
Todd Fiala [Tue, 1 Jul 2014 23:33:32 +0000 (23:33 +0000)]
Add Kalimba support to ArchSpec.

See http://lists.cs.uiuc.edu/pipermail/lldb-commits/Week-of-Mon-20140630/011508.html
for more details.

Change by Matthew Gardiner.

llvm-svn: 212145

10 years agoclang/test/CodeGenCXX/microsoft-no-rtti-data.cpp: Relax an expression for -Asserts.
NAKAMURA Takumi [Tue, 1 Jul 2014 23:33:03 +0000 (23:33 +0000)]
clang/test/CodeGenCXX/microsoft-no-rtti-data.cpp: Relax an expression for -Asserts.

llvm-svn: 212144

10 years agoAlso run clang-format on llvm-nm.cpp to tidy things up. No functional changes.
Kevin Enderby [Tue, 1 Jul 2014 22:44:51 +0000 (22:44 +0000)]
Also run clang-format on llvm-nm.cpp to tidy things up. No functional changes.

llvm-svn: 212143

10 years agoCodeGen: Add some comments describing VFTable CG
David Majnemer [Tue, 1 Jul 2014 22:37:08 +0000 (22:37 +0000)]
CodeGen: Add some comments describing VFTable CG

No functionality change, just some comments to describe what is going
on.

llvm-svn: 212142

10 years agoRun clang-format on llvm-size.cpp to tidy things up. No functional changes.
Kevin Enderby [Tue, 1 Jul 2014 22:26:31 +0000 (22:26 +0000)]
Run clang-format on llvm-size.cpp to tidy things up. No functional changes.

llvm-svn: 212141

10 years ago[FastISel] Factor out stackmap intrinsic selection code into a dedicated helper metho...
Juergen Ributzka [Tue, 1 Jul 2014 22:25:49 +0000 (22:25 +0000)]
[FastISel] Factor out stackmap intrinsic selection code into a dedicated helper method. NFCI.

llvm-svn: 212140

10 years agoCodeGenCXX: Add tests for RTTI in VFTables
David Majnemer [Tue, 1 Jul 2014 22:25:00 +0000 (22:25 +0000)]
CodeGenCXX: Add tests for RTTI in VFTables

This test was supposed to go in with r212125.

llvm-svn: 212139

10 years agoDriver: Handle /GR- in a compatible way with MSVC
David Majnemer [Tue, 1 Jul 2014 22:24:56 +0000 (22:24 +0000)]
Driver: Handle /GR- in a compatible way with MSVC

There are slight differences between /GR- and -fno-rtti which made
mapping one to the other inappropriate.

-fno-rtti disables dynamic_cast, typeid, and does not emit RTTI related
information for the v-table.

/GR- does not generate complete object locators and thus will not
reference them in vftables.  However, constructs like dynamic_cast and
typeid are permitted.

This should bring our implementation of RTTI up to semantic parity with
MSVC modulo bugs.

llvm-svn: 212138