platform/upstream/llvm.git
9 years ago[dfsan] Modify build-libc-list.py to filter out local functions in generated
Peter Collingbourne [Wed, 5 Nov 2014 17:21:04 +0000 (17:21 +0000)]
[dfsan] Modify build-libc-list.py to filter out local functions in generated
ABI list.

llvm-svn: 221361

9 years ago[dfsan] Abort at runtime on indirect calls to uninstrumented vararg functions.
Peter Collingbourne [Wed, 5 Nov 2014 17:21:00 +0000 (17:21 +0000)]
[dfsan] Abort at runtime on indirect calls to uninstrumented vararg functions.

We currently have no infrastructure to support these correctly.

This is accomplished by generating a call to a runtime library function that
aborts at runtime in place of the regular wrapper for such functions. Direct
calls are rewritten in the usual way during traversal of the caller's IR.

We also remove the "split-stack" attribute from such wrappers, as the code
generator cannot currently handle split-stack vararg functions.

llvm-svn: 221360

9 years agoIR: MDNode => Value: NamedMDNode::addOperand()
Duncan P. N. Exon Smith [Wed, 5 Nov 2014 17:16:09 +0000 (17:16 +0000)]
IR: MDNode => Value: NamedMDNode::addOperand()

Change `NamedMDNode::addOperand()` to take a `Value *` instead of an
`MDNode *`.  This is part of PR21433.

llvm-svn: 221359

9 years ago[ARM] Remove dead code identified by the Clang static analyzer.
Tilmann Scheller [Wed, 5 Nov 2014 17:10:43 +0000 (17:10 +0000)]
[ARM] Remove dead code identified by the Clang static analyzer.

llvm-svn: 221358

9 years agoRemove superceded warning warn_forgotten_module_header
Ben Langmuir [Wed, 5 Nov 2014 16:43:18 +0000 (16:43 +0000)]
Remove superceded warning warn_forgotten_module_header

This DefaultIgnore warning under -Wincomplete-module was firing on
any module map files that happened to be parsed (it's only supposed to
fire on headers), and it has been superceded by
-Wnon-modular-include-in-module anyway.

For compatibility, I rewired -Wincomplete-module to imply
-Wnon-modular-include-in-module.

llvm-svn: 221357

9 years agoWhen run on a ppc64le based platform, the check-sanitizer build looks for
Will Schmidt [Wed, 5 Nov 2014 16:35:23 +0000 (16:35 +0000)]
When run on a ppc64le based platform, the check-sanitizer build looks for
objects with the powerpc64le name. i.e. asan-powerpc64le.a
This change allows those objects to be built.

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

llvm-svn: 221356

9 years ago[mips][microMIPS] Mark symbols as microMIPS if necessary
Zoran Jovanovic [Wed, 5 Nov 2014 16:35:20 +0000 (16:35 +0000)]
[mips][microMIPS] Mark symbols as microMIPS if necessary
Differential Revision: http://reviews.llvm.org/D6039

llvm-svn: 221355

9 years agoReverted revisions 221351, 221352 and 221353.
Zoran Jovanovic [Wed, 5 Nov 2014 16:19:59 +0000 (16:19 +0000)]
Reverted revisions 221351, 221352 and 221353.

llvm-svn: 221354

9 years ago[mips][microMIPS] Implement CodeGen support for ANDI16 instruction
Zoran Jovanovic [Wed, 5 Nov 2014 15:54:05 +0000 (15:54 +0000)]
[mips][microMIPS] Implement CodeGen support for ANDI16 instruction
Differential Revision: http://reviews.llvm.org/D5797

llvm-svn: 221353

9 years ago[mips][microMIPS] Implement CodeGen support for SLL16 and SRL16 instructions
Zoran Jovanovic [Wed, 5 Nov 2014 15:46:53 +0000 (15:46 +0000)]
[mips][microMIPS] Implement CodeGen support for SLL16 and SRL16 instructions
Differential Revision: http://reviews.llvm.org/D5933

llvm-svn: 221352

9 years ago[mips][microMIPS] Implement ANDI16 instruction
Zoran Jovanovic [Wed, 5 Nov 2014 15:39:41 +0000 (15:39 +0000)]
[mips][microMIPS] Implement ANDI16 instruction
Differential Revision: http://reviews.llvm.org/D5163

llvm-svn: 221351

9 years agoR600/SI: Change all instruction assembly names to lowercase.
Tom Stellard [Wed, 5 Nov 2014 14:50:53 +0000 (14:50 +0000)]
R600/SI: Change all instruction assembly names to lowercase.

This matches the format produced by the AMD proprietary driver.

//==================================================================//
// Shell script for converting .ll test cases: (Pass the .ll files
   you want to convert to this script as arguments).
//==================================================================//

; This was necessary on my system so that A-Z in sed would match only
; upper case.  I'm not sure why.
export LC_ALL='C'

TEST_FILES="$*"

MATCHES=`grep -v Patterns SIInstructions.td | grep -o '"[A-Z0-9_]\+["e]' | grep -o '[A-Z0-9_]\+' | sort -r`

for f in $TEST_FILES; do
  # Check that there are SI tests:
  grep -q -e 'verde' -e 'bonaire' -e 'SI' -e 'tahiti' $f
  if [ $? -eq 0 ]; then
    for match in $MATCHES; do
      sed -i -e "s/\([ :]$match\)/\L\1/" $f
    done

    # Try to get check lines with partial instruction names
    sed -i 's/\(;[ ]*SI[A-Z\\-]*: \)\([A-Z_0-9]\+\)/\1\L\2/' $f
  fi
done

sed -i -e 's/bb0_1/BB0_1/g' ../../../test/CodeGen/R600/infinite-loop.ll
sed -i -e 's/SI-NOT: bfe/SI-NOT: {{[^@]}}bfe/g'../../../test/CodeGen/R600/llvm.AMDGPU.bfe.*32.ll ../../../test/CodeGen/R600/sext-in-reg.ll
sed -i -e 's/exp_IEEE/EXP_IEEE/g' ../../../test/CodeGen/R600/llvm.exp2.ll
sed -i -e 's/numVgprs/NumVgprs/g' ../../../test/CodeGen/R600/register-count-comments.ll
sed -i 's/\(; CHECK[-NOT]*: \)\([A-Z_0-9]\+\)/\1\L\2/' ../../../test/CodeGen/R600/select64.ll ../../../test/CodeGen/R600/sgpr-copy.ll

//==================================================================//
// Shell script for converting .td files (run this last)
//==================================================================//

export LC_ALL='C'
sed -i -e '/Patterns/!s/\("[A-Z0-9_]\+[ "e]\)/\L\1/g' SIInstructions.td
sed -i -e 's/"EXP/"exp/g' SIInstrInfo.td

llvm-svn: 221350

9 years agoR600/SI: Add an extra check line to make test more strict
Tom Stellard [Wed, 5 Nov 2014 14:50:34 +0000 (14:50 +0000)]
R600/SI: Add an extra check line to make test more strict

llvm-svn: 221349

9 years agoDisable backtrace libcxxabi test on ARM
Renato Golin [Wed, 5 Nov 2014 14:45:46 +0000 (14:45 +0000)]
Disable backtrace libcxxabi test on ARM

_Unwind_Backtrace is not clearly defined in EHABI and needs more
testing. A bug was created with some initial investigation done
http://llvm.org/PR21444. This test fails with both libunwind and libgcc_s.

llvm-svn: 221348

9 years agoDisable XFAIL on ARM since the x86_64 specific code is isolated
Renato Golin [Wed, 5 Nov 2014 14:44:58 +0000 (14:44 +0000)]
Disable XFAIL on ARM since the x86_64 specific code is isolated

llvm-svn: 221347

9 years agoSupport LLVM_BUILD_STATIC.
Rafael Espindola [Wed, 5 Nov 2014 14:04:25 +0000 (14:04 +0000)]
Support LLVM_BUILD_STATIC.

llvm-svn: 221346

9 years agoAdd a LLVM_BUILD_STATIC option to cmake.
Rafael Espindola [Wed, 5 Nov 2014 14:03:58 +0000 (14:03 +0000)]
Add a LLVM_BUILD_STATIC option to cmake.

Setting it to true causes all executables to be statically linked.

llvm-svn: 221345

9 years agoMS ABI: Correctly mangle CV qualifiers from typedefs
Will Wilson [Wed, 5 Nov 2014 13:54:21 +0000 (13:54 +0000)]
MS ABI: Correctly mangle CV qualifiers from typedefs

llvm-svn: 221344

9 years ago[X86] Teach method 'isVectorClearMaskLegal' how to check for legal blend masks.
Andrea Di Biagio [Wed, 5 Nov 2014 13:04:14 +0000 (13:04 +0000)]
[X86] Teach method 'isVectorClearMaskLegal' how to check for legal blend masks.

This patch improves the folding of vector AND nodes into blend operations for
targets that feature SSE4.1. A vector AND node where one of the operands is
a constant build_vector with elements that are either zero or all-ones can be
converted into a blend.

This allows for example to simplify the following code:

define <4 x i32> @test(<4 x i32> %A, <4 x i32> %B) {
  %1 = and <4 x i32> %A, <i32 0, i32 0, i32 0, i32 -1>
  %2 = and <4 x i32> %B, <i32 -1, i32 -1, i32 -1, i32 0>
  %3 = or <4 x i32> %1, %2
  ret <4 x i32> %3
}

Before this patch llc (-mcpu=corei7) generated:
        andps  LCPI1_0(%rip), %xmm0, %xmm0
        andps  LCPI1_1(%rip), %xmm1, %xmm1
        orps   %xmm1, %xmm0, %xmm0
        retq

With this patch we generate a single 'vpblendw'.

llvm-svn: 221343

9 years agoFix bashism in tests added by r221341
Oliver Stannard [Wed, 5 Nov 2014 12:40:21 +0000 (12:40 +0000)]
Fix bashism in tests added by r221341

llvm-svn: 221342

9 years ago[ARM] Honor FeatureD16 in the assembler and disassembler
Oliver Stannard [Wed, 5 Nov 2014 12:06:39 +0000 (12:06 +0000)]
[ARM] Honor FeatureD16 in the assembler and disassembler

Some ARM FPUs only have 16 double-precision registers, rather than the
normal 32. LLVM represents this with the D16 target feature. This is
currently used by CodeGen to avoid using high registers when they are
not available, but the assembler and disassembler do not.

I fix this in the assmebler and disassembler rather than the
InstrInfo.td files, as the latter would require a large number of
changes everywhere one of the floating-point instructions is referenced
in the backend. This solution is similar to the one used for
co-processor numbers and MSR masks.

llvm-svn: 221341

9 years ago[clang-tidy] google-readability-function: skip std::nullptr_t
Alexander Kornienko [Wed, 5 Nov 2014 11:08:39 +0000 (11:08 +0000)]
[clang-tidy] google-readability-function: skip std::nullptr_t

Parameters of type std::nullptr_t can only have one value, so it doesn't make
sense to name them.

llvm-svn: 221340

9 years agoclang-format: Add test to prevent regression in r221125.
Daniel Jasper [Wed, 5 Nov 2014 10:55:36 +0000 (10:55 +0000)]
clang-format: Add test to prevent regression in r221125.

llvm-svn: 221339

9 years agoclang-format: Improve free-standing macro detection.
Daniel Jasper [Wed, 5 Nov 2014 10:48:04 +0000 (10:48 +0000)]
clang-format: Improve free-standing macro detection.

Before:
  SOME_WEIRD_LOG_MACRO
  << "Something long enough to cause a line break";

After:
  SOME_WEIRD_LOG_MACRO
      << "Something long enough to cause a line break";

llvm-svn: 221338

9 years agoGet the Linux ptrace test working on PowerPC64
Jay Foad [Wed, 5 Nov 2014 08:42:48 +0000 (08:42 +0000)]
Get the Linux ptrace test working on PowerPC64

The test refers to user_regs_struct.rip so it can only ever have worked
on x86-64. Put this code inside an appropriate #if, and add a similar
case for PowerPC64. (If we do likewise for ARM we can probably remove
the XFAILs, but I have no way of testing that.)

Those changes are enough to get the test working for me on big-endian
PowerPC64 Fedora 19.

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

llvm-svn: 221337

9 years agoImprove logic that decides if its profitable to commute when some of the virtual...
Craig Topper [Wed, 5 Nov 2014 06:43:02 +0000 (06:43 +0000)]
Improve logic that decides if its profitable to commute when some of the virtual registers involved have uses/defs chains connecting them to physical register. Fix up the tests that this change improves.

llvm-svn: 221336

9 years agoPECOFF: Set the AddressOfRelocationTable in the DOS header
David Majnemer [Wed, 5 Nov 2014 06:37:08 +0000 (06:37 +0000)]
PECOFF: Set the AddressOfRelocationTable in the DOS header

Many programs, for reasons unknown, really like to look at the
AddressOfRelocationTable to determine whether or not they are looking at
a bona fide PE file.  Without this, programs like the UNIX `file'
utility will insist that they are looking at a MS DOS executable.

llvm-svn: 221335

9 years agollvm/test/Transforms/GCOVProfiling: Avoid to parse backslashes in MDString. Use ...
NAKAMURA Takumi [Wed, 5 Nov 2014 06:29:05 +0000 (06:29 +0000)]
llvm/test/Transforms/GCOVProfiling: Avoid to parse backslashes in MDString. Use %/T instead of %T.

LLVM Parser decodes "\bb" as hex in "C:\bb-win7\buildername\build...", with MDString.

See also, http://llvm.org/docs/LangRef.html#metadata-nodes-and-metadata-strings

This reverts r221270, "Disable 3 tests in llvm/test/Transforms/GCOVProfiling/ for now. Investigating."

FIXME: Please check EC in GCOVProfiler::emitProfileNotes().
llvm-svn: 221334

9 years agollvm-readobj: Add support for dumping the DOS header in PE files
David Majnemer [Wed, 5 Nov 2014 06:24:35 +0000 (06:24 +0000)]
llvm-readobj: Add support for dumping the DOS header in PE files

llvm-svn: 221333

9 years agoMark darwin-debug-flags.c as REQUIRES:shell, due to quoting issue.
NAKAMURA Takumi [Wed, 5 Nov 2014 05:04:00 +0000 (05:04 +0000)]
Mark darwin-debug-flags.c as REQUIRES:shell, due to quoting issue.

llvm-svn: 221332

9 years agoRevert 220932.
Jiangning Liu [Wed, 5 Nov 2014 04:44:31 +0000 (04:44 +0000)]
Revert 220932.

Commit 220932 caused crash when building clang-tblgen on aarch64 debian target,
so it's blocking all daily tests.

The std::call_once implementation in pthread has bug for aarch64 debian.

llvm-svn: 221331

9 years agoclang-format: Make it possible to (require 'clang-format)
Justin Bogner [Wed, 5 Nov 2014 04:32:54 +0000 (04:32 +0000)]
clang-format: Make it possible to (require 'clang-format)

This makes the emacs integration ``provide`` a clang-format feature,
so that a .emacs can ``require`` it.

llvm-svn: 221330

9 years ago[PECOFF] Do not skip COMDAT section symbols.
Rui Ueyama [Wed, 5 Nov 2014 02:21:39 +0000 (02:21 +0000)]
[PECOFF] Do not skip COMDAT section symbols.

LLD skipped COMDAT section symbols when reading them because
I thought we don't want to have symbols with the same name.
But they are actually needed because relocations may refer to
the section symbols. So we shoulnd't skip them.

llvm-svn: 221329

9 years agoIR: Metadata: Remove unnecessary dyn_cast
Duncan P. N. Exon Smith [Wed, 5 Nov 2014 01:55:06 +0000 (01:55 +0000)]
IR: Metadata: Remove unnecessary dyn_cast

llvm-svn: 221328

9 years agoFix broken C++ mode comment
Matt Arsenault [Wed, 5 Nov 2014 01:36:22 +0000 (01:36 +0000)]
Fix broken C++ mode comment

llvm-svn: 221327

9 years agoDebug info: Emit the correct type for the __FuncPtr field in a block
Adrian Prantl [Wed, 5 Nov 2014 01:01:30 +0000 (01:01 +0000)]
Debug info: Emit the correct type for the __FuncPtr field in a block
descriptor.

rdar://problem/15984431

llvm-svn: 221326

9 years agoInstSimplify: Exact shifts of X by Y are X if X has the lsb set
David Majnemer [Wed, 5 Nov 2014 00:59:59 +0000 (00:59 +0000)]
InstSimplify: Exact shifts of X by Y are X if X has the lsb set

Exact shifts may not shift out any non-zero bits. Use computeKnownBits
to determine when this occurs and just return the left hand side.

This fixes PR21477.

llvm-svn: 221325

9 years agofor Oleksiy Vyalov - Redirect stdin, stdout and stderr to /dev/null when launching...
Shawn Best [Wed, 5 Nov 2014 00:58:55 +0000 (00:58 +0000)]
for Oleksiy Vyalov - Redirect stdin, stdout and stderr to /dev/null when launching LLGS process. Differential Revision: reviews.llvm.org/D6105

llvm-svn: 221324

9 years agoAdd a check for misbehaving -Wcomment from gcc-4.7 and add
Eric Christopher [Wed, 5 Nov 2014 00:35:15 +0000 (00:35 +0000)]
Add a check for misbehaving -Wcomment from gcc-4.7 and add
-Wno-comment to the compilation flags if so.

Patch by Filipe Cabecinhas, configure regenerated by me.

llvm-svn: 221323

9 years agoRename some classes in ProcessWindows.
Zachary Turner [Wed, 5 Nov 2014 00:33:28 +0000 (00:33 +0000)]
Rename some classes in ProcessWindows.

Renamed monitor -> driver, to make clear that the implementation here
is in no way related to that of other process plugins which have also
implemented classes with similar names such as DebugMonitor.

Also created a DebugEventHandler interface, which will be used by
implementors to get notified when debugging events happen in the
inferiors.

llvm-svn: 221322

9 years agoARM: try to add extra CS-register whenever stack alignment >= 8.
Tim Northover [Wed, 5 Nov 2014 00:27:20 +0000 (00:27 +0000)]
ARM: try to add extra CS-register whenever stack alignment >= 8.

We currently try to push an even number of registers to preserve 8-byte
alignment during a function's prologue, but only when the stack alignment is
prcisely 8. Many of the reasons for doing it apply also when that alignment > 8
(the extra store is often free, and can save another stack adjustment, though
less frequently for 16-byte stack alignment).

llvm-svn: 221321

9 years agoARM/Dwarf: correctly align stack before callee-saved VPRs
Tim Northover [Wed, 5 Nov 2014 00:27:13 +0000 (00:27 +0000)]
ARM/Dwarf: correctly align stack before callee-saved VPRs

We were making an attempt to do this by adding an extra callee-saved GPR (so
that there was an even number in the list), but when that failed we went ahead
and pushed anyway.

This had a couple of potential issues:
  + The .cfi directives we emit misplaced dN because they were based on
    PrologEpilogInserter's calculation.
  + Unaligned stores can be less efficient.
  + Unaligned stores can actually fault (likely only an issue in niche cases,
    but possible).

This adds a final explicit stack adjustment if all other options fail, so that
the actual locations of the registers match up with where they should be.

llvm-svn: 221320

9 years agoFilter out non-static class members when correcting non-member-references.
Kaelyn Takata [Wed, 5 Nov 2014 00:09:29 +0000 (00:09 +0000)]
Filter out non-static class members when correcting non-member-references.

llvm-svn: 221319

9 years agoAnalysis: Make isSafeToSpeculativelyExecute fire less for divides
David Majnemer [Tue, 4 Nov 2014 23:49:08 +0000 (23:49 +0000)]
Analysis: Make isSafeToSpeculativelyExecute fire less for divides

Divides and remainder operations do not behave like other operations
when they are given poison: they turn into undefined behavior.

It's really hard to know if the operands going into a div are or are not
poison.  Because of this, we should only choose to speculate if there
are constant operands which we can easily reason about.

This fixes PR21412.

llvm-svn: 221318

9 years agoRevert "[Reassociate] Canonicalize negative constants out of expressions."
Reid Kleckner [Tue, 4 Nov 2014 23:42:45 +0000 (23:42 +0000)]
Revert "[Reassociate] Canonicalize negative constants out of expressions."

This reverts commit r221171.

It performs this invalid transformation:
-  %div.i = urem i64 -1, %add
-  %sub.i = sub i64 -2, %div.i
+  %div.i = urem i64 1, %add
+  %sub.i1 = add i64 %div.i, -2

llvm-svn: 221317

9 years agoFix the test failure on Windows introduced by r221279.
Kuba Brecka [Tue, 4 Nov 2014 23:38:57 +0000 (23:38 +0000)]
Fix the test failure on Windows introduced by r221279.

http://reviews.llvm.org/D6018

llvm-svn: 221316

9 years agoAvoid building lldb-mi when --enable-werror is set
Eric Christopher [Tue, 4 Nov 2014 23:30:30 +0000 (23:30 +0000)]
Avoid building lldb-mi when --enable-werror is set
as it doesn't build and is optional.

llvm-svn: 221315

9 years agoUse LLVMLIBS here since these are produced by the
Eric Christopher [Tue, 4 Nov 2014 23:27:52 +0000 (23:27 +0000)]
Use LLVMLIBS here since these are produced by the
llvm build and not supposed to be resident on
the system.

llvm-svn: 221314

9 years ago[X86][SSE] Enable commutation for SSE immediate blend instructions
Simon Pilgrim [Tue, 4 Nov 2014 23:25:08 +0000 (23:25 +0000)]
[X86][SSE] Enable commutation for SSE immediate blend instructions

Patch to allow (v)blendps, (v)blendpd, (v)pblendw and vpblendd instructions to be commuted - swaps the src registers and inverts the blend mask.

This is primarily to improve memory folding (see new tests), but it also improves the quality of shuffles (see modified tests).

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

llvm-svn: 221313

9 years agoFix an [-Werror,-Winconsistent-missing-override] error.
Eric Christopher [Tue, 4 Nov 2014 23:21:07 +0000 (23:21 +0000)]
Fix an [-Werror,-Winconsistent-missing-override] error.

llvm-svn: 221312

9 years agoRevert earlier change removing setPreservesCFG from instcombine (r221223) and
Mark Heffernan [Tue, 4 Nov 2014 23:02:09 +0000 (23:02 +0000)]
Revert earlier change removing setPreservesCFG from instcombine (r221223) and
change LoopSimplifyPass to be !isCFGOnly.  The motivation for the earlier patch
(r221223) was that LoopSimplify is not preserved by instcombine though
setPreservesCFG indicates that it is.  This change fixes the issue
by making setPreservesCFG no longer imply LoopSimplifyPass, and is therefore less
invasive.

llvm-svn: 221311

9 years agofor Siva Chandra: Fix compilation of StringPrinter.cpp with GCC. Differential Revisio...
Shawn Best [Tue, 4 Nov 2014 22:43:34 +0000 (22:43 +0000)]
for Siva Chandra: Fix compilation of StringPrinter.cpp with GCC. Differential Revision:  reviews.llvm.org/D6122

llvm-svn: 221310

9 years agoUse backslashes to escape spaces and other backslashes in -dwarf-debug-flags.
Bob Wilson [Tue, 4 Nov 2014 22:28:48 +0000 (22:28 +0000)]
Use backslashes to escape spaces and other backslashes in -dwarf-debug-flags.

The command line options are specified in a space-separated list that is an
argument to -dwarf-debug-flags, so that breaks if there are spaces in the
options. This feature came from Apple's internal version of GCC, so I went back
to check how llvm-gcc handled this and matched that behavior.
rdar://problem/18775420

llvm-svn: 221309

9 years ago[AArch64] Use the correct register class for ORR.
Juergen Ributzka [Tue, 4 Nov 2014 22:20:07 +0000 (22:20 +0000)]
[AArch64] Use the correct register class for ORR.

While fixing up the register classes in the machine combiner in a previous
commit I missed one.

This fixes the last one and adds a test case.

llvm-svn: 221308

9 years agoRevert "[mips] Add names and tests for the hardware registers"
Rafael Espindola [Tue, 4 Nov 2014 22:15:05 +0000 (22:15 +0000)]
Revert "[mips] Add names and tests for the hardware registers"

This reverts commit r221299.

The tests

    LLVM :: MC/Disassembler/Mips/mips32.txt
    LLVM :: MC/Disassembler/Mips/mips32_le.txt

were failing.

llvm-svn: 221307

9 years agoProvide gmlt-like inline scope information in the skeleton CU to facilitate symbolica...
David Blaikie [Tue, 4 Nov 2014 22:12:25 +0000 (22:12 +0000)]
Provide gmlt-like inline scope information in the skeleton CU to facilitate symbolication without needing the .dwo files

Clang -gsplit-dwarf self-host -O0, binary increases by 0.0005%, -O2,
binary increases by 25%.

A large binary inside Google, split-dwarf, -O0, and other internal flags
(GDB index, etc) increases by 1.8%, optimized build is 35%.

The size impact may be somewhat greater in .o files (I haven't measured
that much - since the linked executable -O0 numbers seemed low enough)
due to relocations. These relocations could be removed if we taught the
llvm-symbolizer to handle indexed addressing in the .o file (GDB can't
cope with this just yet, but GDB won't be reading this info anyway).
Also debug_ranges could be shared between .o and .dwo, though ideally
debug_ranges would get a schema that could used index(+offset)
addressing, and move to the .dwo file, then we'd be back to sharing
addresses in the address pool again.

But for now, these sizes seem small enough to go ahead with this.

Verified that no other DW_TAGs are produced into the .o file other than
subprograms and inlined_subroutines.

llvm-svn: 221306

9 years agoMove cross-unit DIE caching to the DwarfFile level, so it doesn't interfere with...
David Blaikie [Tue, 4 Nov 2014 22:12:18 +0000 (22:12 +0000)]
Move cross-unit DIE caching to the DwarfFile level, so it doesn't interfere with fission-gmlt data and produce skeleton<>full unit cross referencing.

llvm-svn: 221305

9 years agoDon't produce relocations for a difference in a section with no symbols.
Rafael Espindola [Tue, 4 Nov 2014 22:10:33 +0000 (22:10 +0000)]
Don't produce relocations for a difference in a section with no symbols.

We were producing a relocation for
----------------
.section foo,bar
La:
Lb:
 .long   La-Lb
--------------

but not for

---------------------
  .section foo,bar
zed:
La:
Lb:
 .long   La-Lb
----------------

This patch handles the case where both fragments are part of the first atom
in a section and there is no corresponding symbol to that atom.

This fixes pr21328.

llvm-svn: 221304

9 years ago[PECOFF] Fix symbols in module-definition file.
Rui Ueyama [Tue, 4 Nov 2014 22:09:13 +0000 (22:09 +0000)]
[PECOFF] Fix symbols in module-definition file.

llvm-svn: 221303

9 years ago[TSan] Refactor/simplify ReportLocation structure.
Alexey Samsonov [Tue, 4 Nov 2014 22:07:57 +0000 (22:07 +0000)]
[TSan] Refactor/simplify ReportLocation structure.

  # Make DataInfo (describing a global) a member of ReportLocation
    to avoid unnecessary copies and allocations.
  # Introduce a constructor and a factory method, so that
    all structure users don't have to go to internal allocator directly.
  # Remove unused fields (file/line).

No functionality change.

llvm-svn: 221302

9 years ago[mach-o] remove __compact_unwind atoms once __unwind_info has been generated
Tim Northover [Tue, 4 Nov 2014 21:57:32 +0000 (21:57 +0000)]
[mach-o] remove __compact_unwind atoms once __unwind_info has been generated

The job of the CompactUnwind pass is to turn __compact_unwind data (and
__eh_frame) into the compressed final form in __unwind_info. After it's done,
the original atoms are no longer relevant and should be deleted (they cause
problems during actual execution, quite apart from the fact that they're not
needed).

llvm-svn: 221301

9 years ago[mips] Move COP2 & COP3 load/store instructions from MipsInstrFPU.td to MipsInstrInfo...
Vasileios Kalintiris [Tue, 4 Nov 2014 21:45:16 +0000 (21:45 +0000)]
[mips] Move COP2 & COP3 load/store instructions from MipsInstrFPU.td to MipsInstrInfo.td. NFC.

Reviewers: dsanders

Reviewed By: dsanders

Subscribers: llvm-commits

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

llvm-svn: 221300

9 years ago[mips] Add names and tests for the hardware registers
Vasileios Kalintiris [Tue, 4 Nov 2014 21:30:44 +0000 (21:30 +0000)]
[mips] Add names and tests for the hardware registers

Reviewers: dsanders

Reviewed By: dsanders

Subscribers: llvm-commits

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

llvm-svn: 221299

9 years agoFix a problem where ValueObjectVariable was not correctly setting its 'has value...
Enrico Granata [Tue, 4 Nov 2014 21:28:50 +0000 (21:28 +0000)]
Fix a problem where ValueObjectVariable was not correctly setting its 'has value changed' flag for scalar valued variables. This fixes rdar://17851144

llvm-svn: 221298

9 years agoCorrect the usage of DataInfo structure in TSan
Alexey Samsonov [Tue, 4 Nov 2014 21:26:56 +0000 (21:26 +0000)]
Correct the usage of DataInfo structure in TSan

llvm-svn: 221297

9 years ago[X86] Add 'FeatureSlowSHLD' to cpu 'bdver3'. Also explicit set FeatureAVX and Feature...
Andrea Di Biagio [Tue, 4 Nov 2014 21:18:09 +0000 (21:18 +0000)]
[X86] Add 'FeatureSlowSHLD' to cpu 'bdver3'. Also explicit set FeatureAVX and FeatureSSE4A for all the bdver* cpus.

This patch adds 'FeatureSlowSHLD' to 'bdver3'.
According to the official AMD optimization guide for amdfam15: "Using
alternative code in place of SHLD achieves lower overall latency and
requires fewer execution resources. The 32-bit and 64-bit forms of
ADD, ADC, SHR, and LEA (except 16-bit form) are DirectPath
instructions, while SHLD is a VectorPath instruction."

This patch also explicitly sets feature AVX and SSE4A for all the bdver*
cpus. This part of the patch is a non-functional change and it is mainly
done for clarity reasons (Both XOP and FMA4 already imply AVX and SSE4A).

llvm-svn: 221296

9 years agoErrorOr: Be more explicit in the implicit conversion to bool docs
Justin Bogner [Tue, 4 Nov 2014 21:01:48 +0000 (21:01 +0000)]
ErrorOr: Be more explicit in the implicit conversion to bool docs

llvm-svn: 221295

9 years ago[TSan] Make ReportStack contain __sanitizer::AddressInfo object.
Alexey Samsonov [Tue, 4 Nov 2014 20:52:37 +0000 (20:52 +0000)]
[TSan] Make ReportStack contain __sanitizer::AddressInfo object.

AddressInfo contains the results of symbolization. Store this object
directly in the symbolized stack, instead of copying data around and
making unnecessary memory allocations.

No functionality change.

llvm-svn: 221294

9 years ago[PBQP] Callee saved regs should have a higher cost than scratch regs
Arnaud A. de Grandmaison [Tue, 4 Nov 2014 20:51:29 +0000 (20:51 +0000)]
[PBQP] Callee saved regs should have a higher cost than scratch regs

Registers are not all equal. Some are not allocatable (infinite cost),
some have to be preserved but can be used, and some others are just free
to use.

Ensure there is a cost hierarchy reflecting this fact, so that the
allocator will favor scratch registers over callee-saved registers.

llvm-svn: 221293

9 years ago[PBQP] Tweak spill costs and coalescing benefits
Arnaud A. de Grandmaison [Tue, 4 Nov 2014 20:51:24 +0000 (20:51 +0000)]
[PBQP] Tweak spill costs and coalescing benefits

This patch improves how the different costs (register, interference, spill
and coalescing) relates together. The assumption is now that:
 - coalescing (or any other "side effect" of reg alloc) is negative, and
   instead of being derived from a spill cost, they use the block
   frequency info.
 - spill costs are in the [MinSpillCost:+inf( range
 - register or interference costs are in [0.0:MinSpillCost( or +inf

The current MinSpillCost is set to 10.0, which is a random value high
enough that the current constraint builders do not need to worry about
when settings costs. It would however be worth adding a normalization
step for register and interference costs as the last step in the
constraint builder chain to ensure they are not greater than SpillMinCost
(unless this has some sense for some architectures). This would work well
with the current builder pipeline, where all costs are tweaked relatively
to each others, but could grow above MinSpillCost if the pipeline is
deep enough.

The current heuristic is tuned to depend rather on the number of uses of
a live interval rather than a density of uses, as used by the greedy
allocator. This heuristic provides a few percent improvement on a number
of benchmarks (eembc, spec, ...) and will definitely need to change once
spill placement is implemented: the current spill placement is really
ineficient, so making the cost proportionnal to the number of use is a
clear win.

llvm-svn: 221292

9 years agoR600/SI: Rename div_scale dest operands to match documentation
Matt Arsenault [Tue, 4 Nov 2014 20:29:20 +0000 (20:29 +0000)]
R600/SI: Rename div_scale dest operands to match documentation

llvm-svn: 221291

9 years agoMake helper function static. NFC.
Benjamin Kramer [Tue, 4 Nov 2014 20:26:01 +0000 (20:26 +0000)]
Make helper function static. NFC.

llvm-svn: 221290

9 years agoAArch64: Pattern match integer vector abs like we do on ARM.
Benjamin Kramer [Tue, 4 Nov 2014 20:10:06 +0000 (20:10 +0000)]
AArch64: Pattern match integer vector abs like we do on ARM.

This kind of pattern is emitted by the loop vectorizer.

llvm-svn: 221289

9 years ago[asan] [mips] changed ShadowOffset32 for systems having 16kb PageSize; patch by Kumar...
Kostya Serebryany [Tue, 4 Nov 2014 19:46:15 +0000 (19:46 +0000)]
[asan] [mips] changed ShadowOffset32 for systems having 16kb PageSize; patch by Kumar Sukhani

llvm-svn: 221288

9 years ago[Sanitizer] Get rid of unnecessary allocations in StripModuleName. NFC.
Alexey Samsonov [Tue, 4 Nov 2014 19:34:29 +0000 (19:34 +0000)]
[Sanitizer] Get rid of unnecessary allocations in StripModuleName. NFC.

llvm-svn: 221287

9 years agoFix the build for LLVM changes
Enrico Granata [Tue, 4 Nov 2014 19:33:45 +0000 (19:33 +0000)]
Fix the build for LLVM changes

llvm-svn: 221286

9 years agoSince the file has both ppc and ppc64 tests in it rename it.
Roman Divacky [Tue, 4 Nov 2014 18:49:15 +0000 (18:49 +0000)]
Since the file has both ppc and ppc64 tests in it rename it.

llvm-svn: 221285

9 years agoRewrite the test to not require asserts.
Roman Divacky [Tue, 4 Nov 2014 18:48:20 +0000 (18:48 +0000)]
Rewrite the test to not require asserts.

llvm-svn: 221284

9 years ago[TSan] Keep original function and filename in ReportStack.
Alexey Samsonov [Tue, 4 Nov 2014 18:41:38 +0000 (18:41 +0000)]
[TSan] Keep original function and filename in ReportStack.

TSan used to do the following transformations with data obtained
from the symbolizer:
1) Strip "__interceptor_" prefix from function name.
2) Use "strip_path_prefix" runtime flag to strip filepath.

Now these transformations are performed right before the stack trace
is printed, and ReportStack structure contains original information.

This seems like a right thing to do - stripping is a detail of report
formatting implementation, and should belong there. We should, for
example, use original path to source file when we apply suppressions.

This change also make "strip_path_prefix" flag behavior in TSan
consistent with all the other sanitizers - now it should actually
match *the prefix* of path, not some substring. E.g. earlier TSan
would turn "/usr/lib/libfoo.so" into "libfoo.so" even if strip_path_prefix
was "/lib/".

Finally, strings obtained from symbolizer come from internal allocator,
and "stripping" them early by incrementing a "char*" ensures they can
never be properly deallocated, which is a bug.

llvm-svn: 221283

9 years agoRemove unused DisableRedZone option.
Rafael Espindola [Tue, 4 Nov 2014 18:18:52 +0000 (18:18 +0000)]
Remove unused DisableRedZone option.

Patch by Steve King.

llvm-svn: 221282

9 years agoInstSimplify: Fold a hasNoSignedWrap() call into a match() expression
David Majnemer [Tue, 4 Nov 2014 17:47:13 +0000 (17:47 +0000)]
InstSimplify: Fold a hasNoSignedWrap() call into a match() expression

No functionality change intended, it's just a little more concise.

llvm-svn: 221281

9 years agoInstSimplify: Fold a hasNoUnsignedWrap() call into a match() expression
David Majnemer [Tue, 4 Nov 2014 17:38:50 +0000 (17:38 +0000)]
InstSimplify: Fold a hasNoUnsignedWrap() call into a match() expression

No functionality change intended, it's just a little more concise.

llvm-svn: 221280

9 years agoUse @rpath as LC_ID_DYLIB for ASan dylib on OS X
Kuba Brecka [Tue, 4 Nov 2014 17:35:17 +0000 (17:35 +0000)]
Use @rpath as LC_ID_DYLIB for ASan dylib on OS X

Change the LC_ID_DYLIB of ASan's dynamic libraries on OS X to be set to "@rpath/libclang_rt.asan_osx_dynamic.dylib" and similarly for iossim. Clang driver then sets the "-rpath" to be the real path to where clang currently has the dylib (because clang uses the relative path to its current executable). This means if you move the compiler or install the binary release, -fsanitize=address will link to the proper library.

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

llvm-svn: 221279

9 years agoUse @rpath as LC_ID_DYLIB for ASan dylib on OS X
Kuba Brecka [Tue, 4 Nov 2014 17:34:50 +0000 (17:34 +0000)]
Use @rpath as LC_ID_DYLIB for ASan dylib on OS X

Change the LC_ID_DYLIB of ASan's dynamic libraries on OS X to be set to "@rpath/libclang_rt.asan_osx_dynamic.dylib" and similarly for iossim. Clang driver then sets the "-rpath" to be the real path to where clang currently has the dylib (because clang uses the relative path to its current executable). This means if you move the compiler or install the binary release, -fsanitize=address will link to the proper library.

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

llvm-svn: 221278

9 years ago[mips] Improve support for the .set mips16/nomips16 assembler directives.
Toma Tabacu [Tue, 4 Nov 2014 17:18:07 +0000 (17:18 +0000)]
[mips] Improve support for the .set mips16/nomips16 assembler directives.

Summary:
Appropriately set/clear the FeatureBit for Mips16 when these assembler directives are used and also emit ".set nomips16" (previously, only ".set mips16" was being emitted).

These improvements allow for better testing of the .cpload/.cprestore assembler directives (which are not supposed to work when Mips16 is enabled).

Test Plan: The test is bare-bones because there are no MC tests for Mips16 instructions (there's only one, which checks that the Mips16 ELF header flag gets set), and that suggests to me that it has not been implemented yet in the IAS.

Reviewers: dsanders

Reviewed By: dsanders

Subscribers: llvm-commits

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

llvm-svn: 221277

9 years ago[Stackmaps] Make test less fragile. NFC.
Juergen Ributzka [Tue, 4 Nov 2014 17:11:00 +0000 (17:11 +0000)]
[Stackmaps] Make test less fragile. NFC.

llvm-svn: 221276

9 years agoMark another test as UNSUPPORTED with ASAN and MSAN
Eric Fiselier [Tue, 4 Nov 2014 17:03:47 +0000 (17:03 +0000)]
Mark another test as UNSUPPORTED with ASAN and MSAN

llvm-svn: 221275

9 years agoremove function names from comments; NFC
Sanjay Patel [Tue, 4 Nov 2014 16:27:42 +0000 (16:27 +0000)]
remove function names from comments; NFC

llvm-svn: 221274

9 years agofix typo in comment
Sanjay Patel [Tue, 4 Nov 2014 16:09:50 +0000 (16:09 +0000)]
fix typo in comment

llvm-svn: 221273

9 years ago[clang-tidy] Don't print a message if there's no error.
Alexander Kornienko [Tue, 4 Nov 2014 15:25:22 +0000 (15:25 +0000)]
[clang-tidy] Don't print a message if there's no error.

llvm-svn: 221272

9 years agoRe-enable this test on Windows since it passes with GnuWin32 env.exe.
Yaron Keren [Tue, 4 Nov 2014 14:54:37 +0000 (14:54 +0000)]
Re-enable this test on Windows since it passes with GnuWin32 env.exe.

llvm-svn: 221271

9 years agoDisable 3 tests in llvm/test/Transforms/GCOVProfiling/ for now. Investigating.
NAKAMURA Takumi [Tue, 4 Nov 2014 14:41:53 +0000 (14:41 +0000)]
Disable 3 tests in llvm/test/Transforms/GCOVProfiling/ for now. Investigating.

llvm-svn: 221270

9 years agoRemove "REQUIRES:shell" from tests. They work for me.
NAKAMURA Takumi [Tue, 4 Nov 2014 13:41:33 +0000 (13:41 +0000)]
Remove "REQUIRES:shell" from tests. They work for me.

llvm-svn: 221269

9 years ago[yaml2obj] Allow yaml2obj tool to recognize EF_MIPS_NAN2008 flag
Simon Atanasyan [Tue, 4 Nov 2014 13:33:36 +0000 (13:33 +0000)]
[yaml2obj] Allow yaml2obj tool to recognize EF_MIPS_NAN2008 flag

llvm-svn: 221268

9 years agoclang/test/Tooling: Remove mention to PR15590 out of a couple of tests. They are...
NAKAMURA Takumi [Tue, 4 Nov 2014 13:32:29 +0000 (13:32 +0000)]
clang/test/Tooling: Remove mention to PR15590 out of a couple of tests. They are suppressed with another issue.

llvm-svn: 221267

9 years agoclang/test/Tooling: [PR15590] Avoid backslashes in JSON. Should work on win32.
NAKAMURA Takumi [Tue, 4 Nov 2014 13:32:17 +0000 (13:32 +0000)]
clang/test/Tooling: [PR15590] Avoid backslashes in JSON. Should work on win32.

llvm-svn: 221266

9 years agoRe-enable tests in llvm/test/Object, corresponding to line_iterator's
NAKAMURA Takumi [Tue, 4 Nov 2014 13:19:29 +0000 (13:19 +0000)]
Re-enable tests in llvm/test/Object, corresponding to line_iterator's
change in r221153.

llvm-svn: 221265

9 years agoclang/test/VFS/umbrella-mismatch.m: Let it work on win32 to avoid backslashes in...
NAKAMURA Takumi [Tue, 4 Nov 2014 13:05:23 +0000 (13:05 +0000)]
clang/test/VFS/umbrella-mismatch.m: Let it work on win32 to avoid backslashes in yaml.

FIXME: Is it intentional? s;OUT_DIR;%/S/Inputs;
llvm-svn: 221264

9 years agoclang/test/Coverage/html-diagnostics.c: Use find(1) to avoid globbing.
NAKAMURA Takumi [Tue, 4 Nov 2014 13:05:10 +0000 (13:05 +0000)]
clang/test/Coverage/html-diagnostics.c: Use find(1) to avoid globbing.

llvm-svn: 221263

9 years agollvm/test/Transforms/GCOVProfiling/linezero.ll: Use %/T instead of %T in regex. This...
NAKAMURA Takumi [Tue, 4 Nov 2014 13:00:48 +0000 (13:00 +0000)]
llvm/test/Transforms/GCOVProfiling/linezero.ll: Use %/T instead of %T in regex. This works on win32.

llvm-svn: 221262