platform/upstream/llvm.git
10 years ago[msan] Fix bad interaction between with-calls mode and chained origin tracking.
Evgeniy Stepanov [Wed, 25 Jun 2014 14:41:57 +0000 (14:41 +0000)]
[msan] Fix bad interaction between with-calls mode and chained origin tracking.

Origin history should only be recorded for uninitialized values, because it is
meaningless otherwise. This change moves __msan_chain_origin to the runtime
library side and makes it conditional on the corresponding shadow value.

Previous code was correct, but _very_ inefficient.

llvm-svn: 211700

10 years agoDon't leak a file descriptor.
Rafael Espindola [Wed, 25 Jun 2014 14:35:59 +0000 (14:35 +0000)]
Don't leak a file descriptor.

llvm-svn: 211699

10 years agoAdd clang-tidy-diff.py script to run clang-tidy and display warnings on changed lines...
Alexander Kornienko [Wed, 25 Jun 2014 14:09:52 +0000 (14:09 +0000)]
Add clang-tidy-diff.py script to run clang-tidy and display warnings on changed lines only.

Reviewers: djasper

Reviewed By: djasper

Subscribers: cfe-commits

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

llvm-svn: 211698

10 years agoCode cleanup.
Logan Chien [Wed, 25 Jun 2014 13:46:17 +0000 (13:46 +0000)]
Code cleanup.

llvm-svn: 211697

10 years agorelational: Implement signbit
Aaron Watry [Wed, 25 Jun 2014 13:29:23 +0000 (13:29 +0000)]
relational: Implement signbit

v2 Changes:
   - use __builtin_signbit instead of shifting by hand
   - significantly improve vector shuffling
   - Works correctly now for signbit(float16) on radeonsi

Signed-off-by: Aaron Watry <awatry@gmail.com>
Reviewed-by: Tom Stellard <thomas.stellard@amd.com>
llvm-svn: 211696

10 years agoAdd Polly to the ignored trees.
Chandler Carruth [Wed, 25 Jun 2014 13:13:36 +0000 (13:13 +0000)]
Add Polly to the ignored trees.

llvm-svn: 211695

10 years ago[x86] Add intrinsics for the pshufd, pshuflw, and pshufhw instructions.
Chandler Carruth [Wed, 25 Jun 2014 13:12:54 +0000 (13:12 +0000)]
[x86] Add intrinsics for the pshufd, pshuflw, and pshufhw instructions.

llvm-svn: 211694

10 years agoFixing the RST markup for the #pragma loop attribute documentation.
Aaron Ballman [Wed, 25 Jun 2014 12:49:05 +0000 (12:49 +0000)]
Fixing the RST markup for the #pragma loop attribute documentation.

llvm-svn: 211693

10 years agoFixing the position of the supported syntax marker when generating attribute document...
Aaron Ballman [Wed, 25 Jun 2014 12:48:06 +0000 (12:48 +0000)]
Fixing the position of the supported syntax marker when generating attribute documentation.

llvm-svn: 211692

10 years agoRe-apply r211399, "Generate native unwind info on Win64" with a fix to ignore SEH...
NAKAMURA Takumi [Wed, 25 Jun 2014 12:41:52 +0000 (12:41 +0000)]
Re-apply r211399, "Generate native unwind info on Win64" with a fix to ignore SEH pseudo ops in X86 JIT emitter.

--
This patch enables LLVM to emit Win64-native unwind info rather than
DWARF CFI.  It handles all corner cases (I hope), including stack
realignment.

Because the unwind info is not flexible enough to describe stack frames
with a gap of unknown size in the middle, such as the one caused by
stack realignment, I modified register spilling code to place all spills
into the fixed frame slots, so that they can be accessed relative to the
frame pointer.

Patch by Vadim Chugunov!

Reviewed By: rnk

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

llvm-svn: 211691

10 years agoEscaping a literal character to fix an RST warning.
Aaron Ballman [Wed, 25 Jun 2014 12:41:28 +0000 (12:41 +0000)]
Escaping a literal character to fix an RST warning.

llvm-svn: 211690

10 years agoReformat.
NAKAMURA Takumi [Wed, 25 Jun 2014 12:40:56 +0000 (12:40 +0000)]
Reformat.

llvm-svn: 211689

10 years agoAlign with new GCC options for x86 Android
Alexey Volkov [Wed, 25 Jun 2014 12:15:36 +0000 (12:15 +0000)]
Align with new GCC options for x86 Android
32-bit: +ssse3
64-bit: +sse4.2 +popcnt

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

llvm-svn: 211688

10 years agoCHECK-LABEL'ify this test.
James Molloy [Wed, 25 Jun 2014 11:50:56 +0000 (11:50 +0000)]
CHECK-LABEL'ify this test.

llvm-svn: 211687

10 years ago[AArch32] Fix a stupid error in an architectural guard
James Molloy [Wed, 25 Jun 2014 11:46:24 +0000 (11:46 +0000)]
[AArch32] Fix a stupid error in an architectural guard

The < 8 instead of <= 8 meant that a bunch of vreinterprets were not available on v8 AArch32. Simplify the guard to just !defined(aarch64) while we're at it, and enable some v8 AArch32 testing.

llvm-svn: 211686

10 years ago[OPENMP] Initial support for 'sections' directive.
Alexey Bataev [Wed, 25 Jun 2014 11:44:49 +0000 (11:44 +0000)]
[OPENMP] Initial support for 'sections' directive.

llvm-svn: 211685

10 years ago[sanitizer] Fix build on platforms where dtls support is disabled.
Evgeniy Stepanov [Wed, 25 Jun 2014 11:43:46 +0000 (11:43 +0000)]
[sanitizer] Fix build on platforms where dtls support is disabled.

llvm-svn: 211684

10 years ago[msan] Fix false positive on dynamic tls.
Evgeniy Stepanov [Wed, 25 Jun 2014 11:30:35 +0000 (11:30 +0000)]
[msan] Fix false positive on dynamic tls.

Use existing DTLS code in sanitizer_tls_get_addr.{h,cc} to unpoison DTLS
blocks both on allocation and deallocation.

https://code.google.com/p/memory-sanitizer/issues/detail?id=44

llvm-svn: 211683

10 years ago[mach-o]: atomize zero-terminated literals correctly.
Tim Northover [Wed, 25 Jun 2014 11:21:51 +0000 (11:21 +0000)]
[mach-o]: atomize zero-terminated literals correctly.

When looking through sections with zero-terminated string-literals (__cstring
or __ustring) we were constantly rechecking the first few bytes of the string
for '\0' rather than advancing along. This obviously failed unless all strings
within the section had the same length as that first one.

llvm-svn: 211682

10 years ago[mach-o] don't assume all sections have symbols
Tim Northover [Wed, 25 Jun 2014 10:59:37 +0000 (10:59 +0000)]
[mach-o] don't assume all sections have symbols

We were trying to examine the first symbol in a section that we wanted to
atomize by symbols, even when there wasn't one. Instead, we should make the
initial anonymous symbol cover the entire section in that situation.

llvm-svn: 211681

10 years agoAdd exp10
Jeroen Ketema [Wed, 25 Jun 2014 10:06:35 +0000 (10:06 +0000)]
Add exp10

Reviewed-by: Tom Stellard <tom@stellard.net>
llvm-svn: 211680

10 years ago[X86] Add target combine rule to select ADDSUB instructions from a build_vector
Andrea Di Biagio [Wed, 25 Jun 2014 10:02:21 +0000 (10:02 +0000)]
[X86] Add target combine rule to select ADDSUB instructions from a build_vector

This patch teaches the backend how to combine a build_vector that implements
an 'addsub' between packed float vectors into a sequence of vector add
and vector sub followed by a VSELECT.

The new VSELECT is expected to be lowered into a BLENDI.
At ISel stage, the sequence 'vector add + vector sub + BLENDI' is
pattern-matched against ISel patterns added at r211427 to select
'addsub' instructions.
Added three more ISel patterns for ADDSUB.

Added test sse3-avx-addsub-2.ll to verify that we correctly emit 'addsub'
instructions.

llvm-svn: 211679

10 years agoFactor out part of LICM::sink into a helper function.
Evgeniy Stepanov [Wed, 25 Jun 2014 09:17:21 +0000 (09:17 +0000)]
Factor out part of LICM::sink into a helper function.

llvm-svn: 211678

10 years agoAST: Initialization with dllimport functions in C
David Majnemer [Wed, 25 Jun 2014 08:15:07 +0000 (08:15 +0000)]
AST: Initialization with dllimport functions in C

The C++ language requires that the address of a function be the same
across all translation units.  To make __declspec(dllimport) useful,
this means that a dllimported function must also obey this rule.  MSVC
implements this by dynamically querying the import address table located
in the linked executable.  This means that the address of such a
function in C++ is not constant (which violates other rules).

However, the C language has no notion of ODR nor does it permit dynamic
initialization whatsoever.  This requires implementations to _not_
dynamically query the import address table and instead utilize a wrapper
function that will be synthesized by the linker which will eventually
query the import address table.  The effect this has is, to say the
least, perplexing.

Consider the following C program:
__declspec(dllimport) void f(void);

typedef void (*fp)(void);

static const fp var = &f;

const fp fun() { return &f; }

int main() { return fun() == var; }

MSVC will statically initialize "var" with the address of the wrapper
function and "fun" returns the address of the actual imported function.
This means that "main" will return false!

Note that LLVM's optimizers are strong enough to figure out that "main"
should return true.  However, this result is dependent on having
optimizations enabled!

N.B.  This change also permits the usage of dllimport declarators inside
of template arguments; they are sufficiently constant for such a
purpose.  Add tests to make sure we don't regress here.

llvm-svn: 211677

10 years agoAdded a test to ensure -Wimplicit-fallthrough works with -fblocks correctly.
Alexander Kornienko [Wed, 25 Jun 2014 08:09:35 +0000 (08:09 +0000)]
Added a test to ensure -Wimplicit-fallthrough works with -fblocks correctly.

llvm-svn: 211676

10 years agoFix unresolved symbols when loading gold plugin
Alexey Volkov [Wed, 25 Jun 2014 08:04:58 +0000 (08:04 +0000)]
Fix unresolved symbols when loading gold plugin

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

llvm-svn: 211675

10 years ago[ELF] Add two new virtual functions to the `OutputELFWriter` class to control
Simon Atanasyan [Wed, 25 Jun 2014 07:55:55 +0000 (07:55 +0000)]
[ELF] Add two new virtual functions to the `OutputELFWriter` class to control
dynamic symbol table populating and DT_NEEDED tag creation.

The `isDynSymEntryRequired` function returns true if the specified shared
library atom requires a dynamic symbol table entry. The `isNeededTagRequired`
function returns true if we need to create DT_NEEDED tag for the shared
library defined specified shared atom.

By default the both functions return true. So there is no functional changes
for all targets except MIPS. Probably we need to spread the same modifications
on other ELF targets but I want to implement and fully tested complete set of
changes for MIPS target first.

For MIPS we create a dynamic symbol table entry for a shared library atom iif
this atom is referenced by a regular defined atom. For example, if library L1
defines symbol T1, library L2 defines symbol T2 and uses symbol T1
and executable file E1 uses symbol T2 but does not use symbol T1 we create
an entry in the E1 dynamic symbol table for symbol T2 and do not create
an entry for T1.

The patch creates DT_NEEDED tags for shared libraries contain shared library
atoms which a) referenced by regular defined atoms; b) have corresponding
copy dynamic relocations (R_MIPS_COPY).

Now the patch does not take in account --as-needed / --no-as-needed command
line options. So it is too restrictive and create DT_NEEDED tags for really
needed shared libraries only. I plan to fix that by subsequent patches.

llvm-svn: 211674

10 years ago[LICM] Don't create more than one copy of an instruction per loop exit block when...
Evgeniy Stepanov [Wed, 25 Jun 2014 07:54:58 +0000 (07:54 +0000)]
[LICM] Don't create more than one copy of an instruction per loop exit block when sinking.

Fixes exponential compilation complexity in PR19835, caused by
LICM::sink not handling the following pattern well:

f = op g
e = op f, g
d = op e
c = op d, e
b = op c
a = op b, c

When an instruction with N uses is sunk, each of its operands gets N
new uses (all of them - phi nodes). In the example above, if a had 1
use, c would have 2, e would have 4, and g would have 8.

llvm-svn: 211673

10 years ago[OPENMP] OMPSimdDirective and OMPForDirective: added initialization for CollapsedNum...
Alexey Bataev [Wed, 25 Jun 2014 06:52:00 +0000 (06:52 +0000)]
[OPENMP] OMPSimdDirective and OMPForDirective: added initialization for CollapsedNum member.

llvm-svn: 211672

10 years agotest/ScopInfo: Remove %defaultOpts and list passes explicitly
Tobias Grosser [Wed, 25 Jun 2014 06:38:18 +0000 (06:38 +0000)]
test/ScopInfo: Remove %defaultOpts and list passes explicitly

Due to bad habit we sometimes used a variable %defaultOpts that listed
a set of passes commonly run to prepare for Polly. None of these test cases
actually needs special preparation and only two of them need the 'basicaa' to
be scheduled. Scheduling the required alias analysis explicitly makes the test
cases clearer.

llvm-svn: 211671

10 years agoClean up XFAILed test cases
Tobias Grosser [Wed, 25 Jun 2014 06:31:19 +0000 (06:31 +0000)]
Clean up XFAILed test cases

We had a set of test cases that have been incomplete and XFAILED. This patch
completes a couple of the interesting ones and removes the ones which seem
redundant or not sufficiently reduced to be useful.

llvm-svn: 211670

10 years agoReplace GCC-specific intrinsic with portable alternative.
Zachary Turner [Wed, 25 Jun 2014 05:42:32 +0000 (05:42 +0000)]
Replace GCC-specific intrinsic with portable alternative.

Not all supported compilers have GCC intrinsics, so this patch
uses the correct portable alternative.

Additionally, this patch fixes an off-by-one error.  __builtin_ffs
returns the 1-based index of the least-significant 1-bit, but the
function expects the base 2 logarithm of the number, which is
equivalent to the 0-based index of the least-significant 1-bit.

Reviewed by: Keno Fischer

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

llvm-svn: 211669

10 years agoFix another asserting method in the null streamer.
Rafael Espindola [Wed, 25 Jun 2014 05:37:58 +0000 (05:37 +0000)]
Fix another asserting method in the null streamer.

llvm-svn: 211668

10 years agoDon't go through the TypeSourceInfo when getting the SourceRange.
Zachary Turner [Wed, 25 Jun 2014 05:37:25 +0000 (05:37 +0000)]
Don't go through the TypeSourceInfo when getting the SourceRange.

VarDecl provides a method getSourceRange(), which provides a more
robust way of getting the SourceRange since the TypeSourceInfo can
be null in certain cases.

Reviewed by: majnemer

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

llvm-svn: 211667

10 years agoFix a regression from r211653.
Rafael Espindola [Wed, 25 Jun 2014 05:31:22 +0000 (05:31 +0000)]
Fix a regression from r211653.

The method was empty in the null streamer but I mistakenly replaced it with
the aborting one in MCStreamer.

llvm-svn: 211666

10 years ago[Driver] Follow-up to r211598, r211663. Do not build a dynamic linker
Simon Atanasyan [Wed, 25 Jun 2014 05:00:59 +0000 (05:00 +0000)]
[Driver] Follow-up to r211598, r211663. Do not build a dynamic linker
path using sub-strings concatenation. Return the whole string explicitly.

llvm-svn: 211665

10 years agoMCNullStreamer.cpp: Roll back a few empty methods that have been marked as unreachabl...
NAKAMURA Takumi [Wed, 25 Jun 2014 04:34:36 +0000 (04:34 +0000)]
MCNullStreamer.cpp: Roll back a few empty methods that have been marked as unreachable in MCStreamer.cpp.

  void EmitCOFFSecRel32(MCSymbol const *Symbol) override {}
  void EmitGPRel32Value(const MCExpr *Value) override {}

It should fix crash like "llc -mtriple=i686-cygwin -filetype=null".

llvm-svn: 211664

10 years agoTools.cpp: Update getLinuxDynamicLinker() to return Twine instead of StringRef, since...
NAKAMURA Takumi [Wed, 25 Jun 2014 04:34:20 +0000 (04:34 +0000)]
Tools.cpp: Update getLinuxDynamicLinker() to return Twine instead of StringRef, since r211598 has introduced manipulation of return string.

llvm-svn: 211663

10 years agoVirtualFileSystemTest.cpp: Get rid of initializer list on std::vector, to appease...
NAKAMURA Takumi [Wed, 25 Jun 2014 04:34:10 +0000 (04:34 +0000)]
VirtualFileSystemTest.cpp: Get rid of initializer list on std::vector, to appease msc17.

llvm-svn: 211662

10 years agoReformat.
NAKAMURA Takumi [Wed, 25 Jun 2014 04:34:00 +0000 (04:34 +0000)]
Reformat.

llvm-svn: 211661

10 years ago[OPENMP] Improved code and replaced struct by lambda.
Alexey Bataev [Wed, 25 Jun 2014 04:09:13 +0000 (04:09 +0000)]
[OPENMP] Improved code and replaced struct by lambda.

llvm-svn: 211660

10 years agoCodeGen/X86/pr20088.ll: Add -march=x86-64, or llc fails due to non-x86 default target.
NAKAMURA Takumi [Wed, 25 Jun 2014 03:05:47 +0000 (03:05 +0000)]
CodeGen/X86/pr20088.ll: Add -march=x86-64, or llc fails due to non-x86 default target.

llvm-svn: 211659

10 years agoAdded an option to turn OFF the "detach on error" behavior that was added
Jim Ingham [Wed, 25 Jun 2014 02:32:56 +0000 (02:32 +0000)]
Added an option to turn OFF the "detach on error" behavior that was added
to debugserver when launching processes.

<rdar://problem/16216199>

llvm-svn: 211658

10 years agoImplement predefined stdint macros
JF Bastien [Wed, 25 Jun 2014 01:31:33 +0000 (01:31 +0000)]
Implement predefined stdint macros

Add predefined stdint macros that match the given patterns:

U?INT{_,_FAST,_LEAST}{8,16,32,64}_{MAX,TYPE}
U?INT{PTR,MAX}_{MAX,TYPE}

http://reviews.llvm.org/D4141

Author: binji
llvm-svn: 211657

10 years agoUse SourceMgr::getMemoryBuffer() in a couple of places
Alp Toker [Wed, 25 Jun 2014 00:41:15 +0000 (00:41 +0000)]
Use SourceMgr::getMemoryBuffer() in a couple of places

Cleanup only.

llvm-svn: 211656

10 years agoRemove extra newline from log Printf
Ed Maste [Wed, 25 Jun 2014 00:38:35 +0000 (00:38 +0000)]
Remove extra newline from log Printf

Clean up this one specifically, as it has the effect of double-spacing
the list of thread stop reasons, and substantially bloats the log file
when opening a core with hundreds of threads.

There are other cases of extra newlines.  Some of them do increase
readability, so avoid a general sweep for now.

llvm-svn: 211655

10 years agoFix parsing nested __if_exists blocks
Reid Kleckner [Wed, 25 Jun 2014 00:28:35 +0000 (00:28 +0000)]
Fix parsing nested __if_exists blocks

Rather than having kw___if_exists be a special case of
ParseCompoundStatementBody, we can look for kw___if_exists in the big
switch over for valid statement tokens in ParseStatementOrDeclaration.

Nested __if_exists blocks are used in the DECLARE_REGISTRY_RESOURCEID
macro from atlcom.h.

llvm-svn: 211654

10 years agoMove some trivial methods up to MCStreamer.
Rafael Espindola [Wed, 25 Jun 2014 00:27:53 +0000 (00:27 +0000)]
Move some trivial methods up to MCStreamer.

This saves some duplicated boilerplate in RecordStreamer and NullStreamer.

llvm-svn: 211653

10 years ago[RuntimeDyld] Adds the necessary hooks to MCJIT to be able to debug generated
Lang Hames [Wed, 25 Jun 2014 00:20:53 +0000 (00:20 +0000)]
[RuntimeDyld] Adds the necessary hooks to MCJIT to be able to debug generated
MachO files using the GDB JIT debugging interface.

Patch by Keno Fischer. Thanks Keno!

llvm-svn: 211652

10 years agoSimplify the handling of .cfi_endproc.
Rafael Espindola [Wed, 25 Jun 2014 00:13:59 +0000 (00:13 +0000)]
Simplify the handling of .cfi_endproc.

No functionality change.

llvm-svn: 211651

10 years agoAdd a missing test for the __if_exists extension
Reid Kleckner [Wed, 25 Jun 2014 00:10:50 +0000 (00:10 +0000)]
Add a missing test for the __if_exists extension

MSVC does not create a new scope for the body of an __if_exists compound
statement.  Clang already gets this right today, but it was untested.

llvm-svn: 211650

10 years agoSplit tests for __if_exists out into their own file
Reid Kleckner [Wed, 25 Jun 2014 00:08:10 +0000 (00:08 +0000)]
Split tests for __if_exists out into their own file

llvm-svn: 211649

10 years agoMS ABI: Ignore dll attributes on partial template specializations
Hans Wennborg [Tue, 24 Jun 2014 23:57:13 +0000 (23:57 +0000)]
MS ABI: Ignore dll attributes on partial template specializations

llvm-svn: 211648

10 years agoMerge handleDLLImportAttr and handleDLLExportAttr into one function.
Hans Wennborg [Tue, 24 Jun 2014 23:57:05 +0000 (23:57 +0000)]
Merge handleDLLImportAttr and handleDLLExportAttr into one function.

llvm-svn: 211647

10 years agoSimplify EmitLabel.
Rafael Espindola [Tue, 24 Jun 2014 23:54:40 +0000 (23:54 +0000)]
Simplify EmitLabel.

All the "real" streamers were already calling to MCStreamer::EmitLabel
to do part of the work.

llvm-svn: 211646

10 years ago[FastISel][X86] Fold XALU condition into branch and compare.
Juergen Ributzka [Tue, 24 Jun 2014 23:51:21 +0000 (23:51 +0000)]
[FastISel][X86] Fold XALU condition into branch and compare.

Optimize the codegen of select and branch instructions to directly use the
EFLAGS from the {s|u}{add|sub|mul}.with.overflow intrinsics.

llvm-svn: 211645

10 years agoR600/SI: Use a ComplexPattern for MUBUF stores
Tom Stellard [Tue, 24 Jun 2014 23:33:07 +0000 (23:33 +0000)]
R600/SI: Use a ComplexPattern for MUBUF stores

Now that non-leaf ComplexPatterns are allowed we can fold all the MUBUF
store patterns into the instruction definition.  We will also be able to
reuse this new ComplexPattern for MUBUF loads and atomic operations.

llvm-svn: 211644

10 years agoR600: Promote i64 stores to v2i32
Tom Stellard [Tue, 24 Jun 2014 23:33:04 +0000 (23:33 +0000)]
R600: Promote i64 stores to v2i32

Now we need only one 64-bit pattern for stores.

llvm-svn: 211643

10 years agoldr-pseudo-obj-errors.s: Fix silly copypasto.
NAKAMURA Takumi [Tue, 24 Jun 2014 23:18:07 +0000 (23:18 +0000)]
ldr-pseudo-obj-errors.s: Fix silly copypasto.

llvm-svn: 211642

10 years agoProvide a better diagnostic when braces are put before the identifier.
Richard Trieu [Tue, 24 Jun 2014 23:14:24 +0000 (23:14 +0000)]
Provide a better diagnostic when braces are put before the identifier.

When a user types:
  int [4] foo;
assume that the user means:
  int foo[4];

Update the information for 'foo' to prevent additional errors, and provide
a fix-it hint to move the brackets to the correct location.

Additionally, suggest parens for types that require it, such as:
  int [4] *foo;
to:
  int (*foo)[4];

llvm-svn: 211641

10 years agollvm/test/MC/AArch64/ldr-pseudo-obj-errors.s: Add -triple=aarch64-linux. AArch64...
NAKAMURA Takumi [Tue, 24 Jun 2014 23:11:42 +0000 (23:11 +0000)]
llvm/test/MC/AArch64/ldr-pseudo-obj-errors.s: Add -triple=aarch64-linux. AArch64 is unaware of PECOFF for now.

FIXME: This should pass for also targeting aarch64-darwin.
llvm-svn: 211640

10 years agoPrint a=b as an assignment.
Rafael Espindola [Tue, 24 Jun 2014 22:45:16 +0000 (22:45 +0000)]
Print a=b as an assignment.

In assembly the expression a=b is parsed as an assignment, so it should be
printed as one.

This remove a truly horrible hack for producing a label with "a=.". It would
be used by codegen but would never be reached by the asm parser. Sorry I
missed this when it was first committed.

llvm-svn: 211639

10 years agoPatch from Keno Fischer to enable JITLoaderGDB with mach-o file support.
Greg Clayton [Tue, 24 Jun 2014 22:22:43 +0000 (22:22 +0000)]
Patch from Keno Fischer to enable JITLoaderGDB with mach-o file support.

The patch is as is with the functionality left disabled for apple vendors because of performance regressions. If this is enabled it ends up searching for symbols in all shared libraries that are loadeded.

llvm-svn: 211638

10 years agoR600: Fix inconsistency in rsq instructions.
Matt Arsenault [Tue, 24 Jun 2014 22:13:39 +0000 (22:13 +0000)]
R600: Fix inconsistency in rsq instructions.

R600 was using a clamped version of rsq, but SI was not. Add a
new rsq_clamped intrinsic and use them consistently.

It's unclear to me from the documentation what behavior
the R600 instructions have, so I assume they have the legacy behavior
described by the SI documents. For R600, use RECIPSQRT_IEEE
for both llvm.AMDGPU.rsq.legacy and llvm.AMDGPU.rsq. R600 also
has RECIPSQRT_FF, which I'm not sure how it fits in here.

llvm-svn: 211637

10 years agoRework fix in r201744. You really DO need to waitpid twice to get the
Jim Ingham [Tue, 24 Jun 2014 21:51:42 +0000 (21:51 +0000)]
Rework fix in r201744.  You really DO need to waitpid twice to get the
process fully reaped.  The race & bad behavior was because we were letting
the reaping thread in LLDB to also set the Process exit status, so debugserver
would sometimes be shut down before it got a chance to report the exit status,
and then we got confused.

<rdar://problem/16555850>

llvm-svn: 211636

10 years agoFix up Windows build for the SBUnixSignals addition.
Todd Fiala [Tue, 24 Jun 2014 21:38:31 +0000 (21:38 +0000)]
Fix up Windows build for the SBUnixSignals addition.

Change by Zachary Turner.

llvm-svn: 211635

10 years agofixed a few typos in comments
Sanjay Patel [Tue, 24 Jun 2014 21:11:51 +0000 (21:11 +0000)]
fixed a few typos in comments

llvm-svn: 211634

10 years agoFix test issues from r211623 and remove test-only API
Ben Langmuir [Tue, 24 Jun 2014 21:08:13 +0000 (21:08 +0000)]
Fix test issues from r211623 and remove test-only API

1) missing iterator bits needed by libstdc++4.7
Using find_if was convenient, but since operator++ wasn't a good
interface anyway, I just replaced with a range-based for loop and
removed operator++ from the directory_iterator class.

2) stop relying on order of iterating real files

llvm-svn: 211633

10 years agoForgot to add file in r211631
Matt Arsenault [Tue, 24 Jun 2014 20:58:46 +0000 (20:58 +0000)]
Forgot to add file in r211631

llvm-svn: 211632

10 years agoAdd R600 builtin codegen.
Matt Arsenault [Tue, 24 Jun 2014 20:45:01 +0000 (20:45 +0000)]
Add R600 builtin codegen.

llvm-svn: 211631

10 years agoFix missing C++ mode comment
Matt Arsenault [Tue, 24 Jun 2014 20:32:13 +0000 (20:32 +0000)]
Fix missing C++ mode comment

llvm-svn: 211630

10 years agoeliminate install of duplicate headers (take 2)
David Fang [Tue, 24 Jun 2014 20:32:11 +0000 (20:32 +0000)]
eliminate install of duplicate headers (take 2)
Patch by Ryuta Suzuki

llvm-svn: 211629

10 years agoFix up scoping in a few tests (and delete one that validates unnecessary behavior).
David Blaikie [Tue, 24 Jun 2014 20:10:27 +0000 (20:10 +0000)]
Fix up scoping in a few tests (and delete one that validates unnecessary behavior).

Most of this is just tests that were silently succeeding in spite of
schema changes I made over a year ago. Cleaning them up as they lead to
failures in a change I'm working on/will come soon.

test/DebugInfo/2010-01-19-DbgScope.ll was removed as it tested miscoping
where a DebugLoc described a location not in the current function. The
test case doesn't describe why this is a valid situation and should be
supported, so I'm removing it and shortly going to commit changes that
make this firmly unsupported/assert-fail.

llvm-svn: 211628

10 years ago[PPC64] Fix PR20071 (fctiduz generated for targets lacking that instruction)
Bill Schmidt [Tue, 24 Jun 2014 20:05:18 +0000 (20:05 +0000)]
[PPC64] Fix PR20071 (fctiduz generated for targets lacking that instruction)

PR20071 identifies a problem in PowerPC's fast-isel implementation for
floating-point conversion to integer.  The fctiduz instruction was added in
Power ISA 2.06 (i.e., Power7 and later).  However, this instruction is being
generated regardless of which 64-bit PowerPC target is selected.

The intent is for fast-isel to punt to DAG selection when this instruction is
not available.  This patch implements that change.  For testing purposes, the
existing fast-isel-conversion.ll test adds a RUN line for -mcpu=970 and tests
for the expected code generation.  Additionally, the existing test
fast-isel-conversion-p5.ll was found to be incorrectly expecting the
unavailable instruction to be generated.  I've removed these test variants
since we have adequate coverage in fast-isel-conversion.ll.

llvm-svn: 211627

10 years agoCorrectly Load Mixed FP-GP Variadic Arguments for x86-64.
Rafael Espindola [Tue, 24 Jun 2014 20:01:50 +0000 (20:01 +0000)]
Correctly Load Mixed FP-GP Variadic Arguments for x86-64.

According to the x86-64 ABI, structures with both floating point and
integer members are split between floating-point and general purpose
registers, and consecutive 32-bit floats can be packed into a single
floating point register.

In the case of variadic functions these are stored to memory and the position
recorded in the va_list. This was already correctly implemented in
llvm.va_start.

The problem is that the code in clang for implementing va_arg was reading
floating point registers from the wrong location.

Patch by Thomas Jablin.

Fixes PR20018.

llvm-svn: 211626

10 years agoDisable the bits of r211623 that broke the bots
Ben Langmuir [Tue, 24 Jun 2014 20:00:30 +0000 (20:00 +0000)]
Disable the bits of r211623 that broke the bots

Part of my test seems to rely on iterator bits that I didn't implement,
at least in the gcc bots. Disabling while I investigate.

llvm-svn: 211625

10 years agoUse appropriate default PIE settings for OpenBSD.
Brad Smith [Tue, 24 Jun 2014 19:51:29 +0000 (19:51 +0000)]
Use appropriate default PIE settings for OpenBSD.

llvm-svn: 211624

10 years agoAdd directory_iterator for (non-recursive) iteration of VFS directories
Ben Langmuir [Tue, 24 Jun 2014 19:37:16 +0000 (19:37 +0000)]
Add directory_iterator for (non-recursive) iteration of VFS directories

The API is based on sys::fs::directory_iterator, but it allows iterating
over overlays and the yaml-based VFS.  For now, it isn't used by
anything (except its tests).

llvm-svn: 211623

10 years agoSimplify optimization-remark.c test following r211610
Alp Toker [Tue, 24 Jun 2014 19:23:10 +0000 (19:23 +0000)]
Simplify optimization-remark.c test following r211610

With LocTrackingOnly there's no longer a user-facing distinction so the NDEBUG
checks can go away. (Except maybe column info, but -verify only checks line
numbers anyway.)

Also add a RUN line to validate the traditional !LocTrackingOnly case.

llvm-svn: 211622

10 years agoRestore r211547: Add newline on last line of a few files.
Ed Maste [Tue, 24 Jun 2014 19:18:28 +0000 (19:18 +0000)]
Restore r211547: Add newline on last line of a few files.

llvm-svn: 211621

10 years agoRestore fixes reverted by r211607:
Ed Maste [Tue, 24 Jun 2014 19:16:18 +0000 (19:16 +0000)]
Restore fixes reverted by r211607:

r209631: Use MIUtilSystemLinux on FreeBSD as well

  We should later rename this file (probably MIUtilSystemPOSIX), but
  more clean-up is still needed here, and we can wait until we better
  understand how this code may be shared between FreeBSD, Linux, and OS X.

r209632: Add stdlib.h for malloc and friends

r209633: Remove include of obsolete stropts.h header

  The header is for POSIX streams functionality, and does not exist on
  FreeBSD, OS X, or contemporary Linux distributions.

Issue reported by John Wolfe.

llvm-svn: 211620

10 years ago[Driver][Mips] Support mips64-linux-gnuabi64 / mips64el-linux-gnuabi64 target triples.
Simon Atanasyan [Tue, 24 Jun 2014 19:00:12 +0000 (19:00 +0000)]
[Driver][Mips] Support mips64-linux-gnuabi64 / mips64el-linux-gnuabi64 target triples.

The patch fixes the bug #19869.
http://llvm.org/bugs/show_bug.cgi?id=19869

llvm-svn: 211619

10 years agoRemove unused files, causing CMake build error.
Deepak Panickal [Tue, 24 Jun 2014 18:20:51 +0000 (18:20 +0000)]
Remove unused files, causing CMake build error.

llvm-svn: 211618

10 years agovpblend intrinsics combines as shifts intrinsics due to absence return stmt between...
Robert Khasanov [Tue, 24 Jun 2014 18:08:04 +0000 (18:08 +0000)]
vpblend intrinsics combines as shifts intrinsics due to absence return stmt between them
Fix PR20088

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

llvm-svn: 211617

10 years agoR600: Remove DIV_INF
Matt Arsenault [Tue, 24 Jun 2014 17:42:16 +0000 (17:42 +0000)]
R600: Remove DIV_INF

This corresponded to an amdil instruction which there is
a 2 instruction equivalent for.

llvm-svn: 211616

10 years agoFix test added in r211610 so it doesn't race on output file creation.
David Blaikie [Tue, 24 Jun 2014 17:31:05 +0000 (17:31 +0000)]
Fix test added in r211610 so it doesn't race on output file creation.

llvm-svn: 211615

10 years agoR600/SI: Move pattern to instruction definition
Matt Arsenault [Tue, 24 Jun 2014 17:17:06 +0000 (17:17 +0000)]
R600/SI: Move pattern to instruction definition

llvm-svn: 211614

10 years agoFix test case in r211605/r211533
Weiming Zhao [Tue, 24 Jun 2014 17:05:43 +0000 (17:05 +0000)]
Fix test case in r211605/r211533

The test case in
"Fix PR20056: Implement pseudo LDR <reg>, =<literal/label> for AArch64" should
only work with Linux.

llvm-svn: 211613

10 years ago[Refactor] Create nicer test cases from C/C++
Johannes Doerfert [Tue, 24 Jun 2014 17:02:53 +0000 (17:02 +0000)]
[Refactor] Create nicer test cases from C/C++

Insert a header into the new testcase containing a sample RUN line a FIXME and
an XFAIL. Then insert the formated C code and finally the LLVM-IR without
attributes, the module ID or the target triple.

llvm-svn: 211612

10 years agoObjective-C. When we use @selector(save:), etc. there may be more
Fariborz Jahanian [Tue, 24 Jun 2014 17:02:19 +0000 (17:02 +0000)]
Objective-C. When we use @selector(save:), etc. there may be more
than one method with mismatched type of same selector name.
clang issues a warning to point this out since it may cause
undefined behavior. There are cases though that some APIs
don't care about user methods and such warnings are perceived as
noise. This patch allows users to add paren delimiters around
selector name to turn off such warnings. So, @selector((save:)) will
turn off the warning. It also provides 'fixit' so user knows
what to do. // rdar://16458579

llvm-svn: 211611

10 years agoAdd new debug kind LocTrackingOnly.
Diego Novillo [Tue, 24 Jun 2014 17:02:17 +0000 (17:02 +0000)]
Add new debug kind LocTrackingOnly.

Summary:
This new debug emission kind supports emitting line location
information in all instructions, but stops code generation
from emitting debug info to the final output.

This mode is useful when the backend wants to track source
locations during code generation, but it does not want to
produce debug info. This is currently used by optimization
remarks (-Rpass, -Rpass-missed and -Rpass-analysis).

When one of the -Rpass flags is used, the front end will enable
location tracking, only if no other debug option is enabled.

To prevent debug information from being generated, a new debug
info kind LocTrackingOnly causes DIBuilder::createCompileUnit() to
not emit the llvm.dbg.cu annotation. This blocks final code generation
from generating debug info in the back end.

Depends on D4234.

Reviewers: echristo, dblaikie

Subscribers: cfe-commits

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

llvm-svn: 211610

10 years agoAdd new debug kind LocTrackingOnly.
Diego Novillo [Tue, 24 Jun 2014 17:02:03 +0000 (17:02 +0000)]
Add new debug kind LocTrackingOnly.

Summary:
This new debug emission kind supports emitting line location
information in all instructions, but stops code generation
from emitting debug info to the final output.

This mode is useful when the backend wants to track source
locations during code generation, but it does not want to
produce debug info. This is currently used by optimization
remarks (-pass-remarks, -pass-remarks-missed and
-pass-remarks-analysis).

To prevent debug info emission, DIBuilder never inserts the
annotation 'llvm.dbg.cu' when LocTrackingOnly is enabled.

Reviewers: echristo, dblaikie

Subscribers: llvm-commits

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

llvm-svn: 211609

10 years agoRemove ARM XFAIL from passing test
Greg Fitzgerald [Tue, 24 Jun 2014 16:58:59 +0000 (16:58 +0000)]
Remove ARM XFAIL from passing test

llvm-svn: 211608

10 years agoAdded support for new MI commands and bug fixes. More details in MIReadme.txt.
Deepak Panickal [Tue, 24 Jun 2014 16:35:50 +0000 (16:35 +0000)]
Added support for new MI commands and bug fixes. More details in MIReadme.txt.

llvm-svn: 211607

10 years agoAllow static_assert inside an anonymous union; fixes PR20021 as well as implements...
Aaron Ballman [Tue, 24 Jun 2014 16:22:41 +0000 (16:22 +0000)]
Allow static_assert inside an anonymous union; fixes PR20021 as well as implements C++ Issue 1940.

llvm-svn: 211606

10 years agoResubmit commit r211533
Weiming Zhao [Tue, 24 Jun 2014 16:21:38 +0000 (16:21 +0000)]
Resubmit commit r211533

"Fix PR20056: Implement pseudo LDR <reg>, =<literal/label> for AArch64"
Missed files are added in this commit.

llvm-svn: 211605

10 years agoUse lowercase windows.h for mingw cross compilation.
Logan Chien [Tue, 24 Jun 2014 16:18:10 +0000 (16:18 +0000)]
Use lowercase windows.h for mingw cross compilation.

llvm-svn: 211604

10 years agoCodeGen: Avoid multiple strlen calls
David Majnemer [Tue, 24 Jun 2014 16:01:53 +0000 (16:01 +0000)]
CodeGen: Avoid multiple strlen calls

Use a StringRef to hold our section prefix.  This avoids multiple calls
to strlen.

llvm-svn: 211602

10 years agoARM: Fix TPsoft for Thumb mode
Christian Pirker [Tue, 24 Jun 2014 15:45:59 +0000 (15:45 +0000)]
ARM: Fix TPsoft for Thumb mode

Reviewed at http://reviews.llvm.org/D4230

llvm-svn: 211601

10 years agoRemove an empty directory left after r211508.
Alexander Kornienko [Tue, 24 Jun 2014 15:38:38 +0000 (15:38 +0000)]
Remove an empty directory left after r211508.

llvm-svn: 211600