platform/upstream/llvm.git
9 years agoRemember to set m_loaded_objc_opt once you've loaded the ObjC data
Jim Ingham [Fri, 6 Mar 2015 20:57:17 +0000 (20:57 +0000)]
Remember to set m_loaded_objc_opt once you've loaded the ObjC data
from the shared cache so you don't update it over & over.

<rdar://problem/20074768>

llvm-svn: 231514

9 years agofixed to test feature, not CPU
Sanjay Patel [Fri, 6 Mar 2015 20:51:25 +0000 (20:51 +0000)]
fixed to test feature, not CPU

llvm-svn: 231513

9 years agofixed to test features, not CPUs
Sanjay Patel [Fri, 6 Mar 2015 20:46:16 +0000 (20:46 +0000)]
fixed to test features, not CPUs

llvm-svn: 231512

9 years agoRemove Host::Backtrace in favor of llvm::sys::PrintStackTrace()
Zachary Turner [Fri, 6 Mar 2015 20:45:43 +0000 (20:45 +0000)]
Remove Host::Backtrace in favor of llvm::sys::PrintStackTrace()

This removes Host::Backtrace from the codebase, and changes all
call sites to use llvm::sys::PrintStackTrace().  This makes the
functionality available for all platforms, and even for platforms
which currently had a supported implementation of Host::Backtrace,
this patch should enable richer information in stack traces, such
as file and line number information, as well as giving it the
ability to unwind through inlined functions.

llvm-svn: 231511

9 years agofixed test to use SSE2 attribute
Sanjay Patel [Fri, 6 Mar 2015 20:38:55 +0000 (20:38 +0000)]
fixed test to use SSE2 attribute

llvm-svn: 231510

9 years agofixed to test only the feature, not the feature and a CPU
Sanjay Patel [Fri, 6 Mar 2015 20:34:20 +0000 (20:34 +0000)]
fixed to test only the feature, not the feature and a CPU

llvm-svn: 231509

9 years agoCodeGen: Emit constant temporaries into read-only globals.
Benjamin Kramer [Fri, 6 Mar 2015 20:00:03 +0000 (20:00 +0000)]
CodeGen: Emit constant temporaries into read-only globals.

Instead of creating a copy on the stack just stash them in a private
constant global. This saves both the copying overhead and the stack
space, and gives the optimizer more room to constant fold.

This tries to make array temporaries more similar to regular arrays,
they can't use the same logic because a temporary has no VarDecl to be
bound to so we roll our own version here.

The original use case for this optimization was code like
  for (int i : {1, 2, 3, 4, 5, 6, 7, 8, 10})
    foo(i);
where without this patch (assuming that the loop is not unrolled) we
would alloca an array on the stack, copy the 10 values over and
iterate on that. With this patch we put the array in .text use it
directly. Apart from that case this helps on virtually any passing of
a constant std::initializer_list as a function argument.

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

llvm-svn: 231508

9 years agoDAGCombiner: Canonicalize select(and/or,x,y) depending on target.
Matthias Braun [Fri, 6 Mar 2015 19:49:10 +0000 (19:49 +0000)]
DAGCombiner: Canonicalize select(and/or,x,y) depending on target.

This is based on the following equivalences:
select(C0 & C1, X, Y) <=> select(C0, select(C1, X, Y), Y)
select(C0 | C1, X, Y) <=> select(C0, X, select(C1, X, Y))

Many target cannot perform and/or on the CPU flags and therefore the
right side should be choosen to avoid materializign the i1 flags in an
integer register. If the target can perform this operation efficiently
we normalize to the left form.

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

llvm-svn: 231507

9 years agoDAGCombiner: Factor out some and/or combines.
Matthias Braun [Fri, 6 Mar 2015 19:49:06 +0000 (19:49 +0000)]
DAGCombiner: Factor out some and/or combines.

This is in preparation for changing visitSELECT to normalize towards
select(Cond0, select(Cond1, X, Y), Y);
select(Cond0, X, select(Cond1, X, Y)) which perfom an implicit and/or of
the conditions.

The factored function contains all DAGCombine rules which reduce two values
combined by an And/Or operation to a single value. This does not include rules
involving constants as visitSELECT already handles that case.

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

llvm-svn: 231506

9 years ago[AsmPrinter][TLOF] Remove AArch64 test to appease buildbots
Bruno Cardoso Lopes [Fri, 6 Mar 2015 19:42:18 +0000 (19:42 +0000)]
[AsmPrinter][TLOF] Remove AArch64 test to appease buildbots

Follow up from r231497. Using XFAIL would still trigger fail on some
buildbots. Will re-introduce it as soon as I have a fix.

llvm-svn: 231505

9 years agoA few improvements to our vector types formatting story:
Enrico Granata [Fri, 6 Mar 2015 19:37:57 +0000 (19:37 +0000)]
A few improvements to our vector types formatting story:
- use a hardcoded formatter to match all vector types, and make it so that their element type is taken into account when doing default formatting
- special case a vector of char to display byte values instead of characters by default

Fixes the test failures Ilia was seeing

llvm-svn: 231504

9 years agoLoopInterchange: Remove empty method.
Benjamin Kramer [Fri, 6 Mar 2015 19:37:26 +0000 (19:37 +0000)]
LoopInterchange: Remove empty method.

llvm-svn: 231503

9 years ago[asan] Fix 2 problems in nohugepage_test.
Kostya Serebryany [Fri, 6 Mar 2015 19:33:58 +0000 (19:33 +0000)]
[asan] Fix 2 problems in nohugepage_test.

1. /proc/self/smaps may be bigger than 1 << 14.  On my machine, it is
26KB.
2. The read system call may return a partially filled buffer.  We need
to check the return value from read.

Patch by H.J. Lu

llvm-svn: 231502

9 years agoLoopInterchange: Rephrase instruction moving using ilist's splice and factor it into...
Benjamin Kramer [Fri, 6 Mar 2015 18:59:14 +0000 (18:59 +0000)]
LoopInterchange: Rephrase instruction moving using ilist's splice and factor it into a function

+ Random cleanups. No functional change.

llvm-svn: 231501

9 years agoExecutionDepsFix: Indizes -> Indices.
Matthias Braun [Fri, 6 Mar 2015 18:56:20 +0000 (18:56 +0000)]
ExecutionDepsFix: Indizes -> Indices.

Translate german to english.

llvm-svn: 231500

9 years agoMS ABI: Insert copy-constructors into the CatchableType
David Majnemer [Fri, 6 Mar 2015 18:53:55 +0000 (18:53 +0000)]
MS ABI: Insert copy-constructors into the CatchableType

Find all unambiguous public classes of the exception object's class type
and reference all of their copy constructors.  Yes, this is not
conforming but it is necessary in order to implement their ABI.  This is
because the copy constructor is actually referenced by the metadata
describing which catch handlers are eligible to handle the exception
object.

N.B.  This doesn't yet handle the copy constructor closure case yet,
that work is ongoing.

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

llvm-svn: 231499

9 years agoOops. This arg is passed, just ignored.
Dan Albert [Fri, 6 Mar 2015 18:51:25 +0000 (18:51 +0000)]
Oops. This arg is passed, just ignored.

We should probably be using this argument to find the data files for
the tests, but that isn't implemented yet.

llvm-svn: 231498

9 years ago[AsmPrinter][TLOF] XFAIL AArch64 test to appease buildbots
Bruno Cardoso Lopes [Fri, 6 Mar 2015 18:38:42 +0000 (18:38 +0000)]
[AsmPrinter][TLOF] XFAIL AArch64 test to appease buildbots

The checking for extgotequiv and localgotequiv rely on the emission
order, which is not guaranteed because we use DenseMap to hold the GOT
equivalents. XFAIL this now until I get time to use MapVector and test
out the solution. In the meantime, appease buildbots.

llvm-svn: 231497

9 years agoFix the PrefixExecutor.
Dan Albert [Fri, 6 Mar 2015 18:35:45 +0000 (18:35 +0000)]
Fix the PrefixExecutor.

The PrefixExecutor wasn't passing the exe_path down the chain, so the
command was overriding that, the work_dir was being passed as the
command, and so on.

I've cleaned up a few pylint issues while I was here.

llvm-svn: 231496

9 years agoFix typo.
Eric Christopher [Fri, 6 Mar 2015 18:20:23 +0000 (18:20 +0000)]
Fix typo.

llvm-svn: 231495

9 years agoSema: The i8 suffix should yield a literal of type char
David Majnemer [Fri, 6 Mar 2015 18:04:22 +0000 (18:04 +0000)]
Sema: The i8 suffix should yield a literal of type char

We would make i8 literals turn into signed char instead of char.  This
is incompatible with MSVC.

This fixes PR22824.

llvm-svn: 231494

9 years ago[dsymutil] Add debug_str construction support.
Frederic Riss [Fri, 6 Mar 2015 17:56:30 +0000 (17:56 +0000)]
[dsymutil] Add debug_str construction support.

With this comes the ability to correctly clone string attributes in DIEs.

llvm-svn: 231493

9 years ago[asan] Allow users of asan_symbolize.py to forbid fallback to atos/addr2line.
Sergey Matveev [Fri, 6 Mar 2015 17:05:28 +0000 (17:05 +0000)]
[asan] Allow users of asan_symbolize.py to forbid fallback to atos/addr2line.

llvm-svn: 231492

9 years agoR600/SI: Remove unused register class
Tom Stellard [Fri, 6 Mar 2015 17:00:16 +0000 (17:00 +0000)]
R600/SI: Remove unused register class

llvm-svn: 231491

9 years agoFix Radar10642615DataFormatterTestCase after r231449
Ilia K [Fri, 6 Mar 2015 16:53:37 +0000 (16:53 +0000)]
Fix Radar10642615DataFormatterTestCase after r231449

Summary:
I'm not sure that this failure should be fixed by modifying this test.
It seems strange for me that the only one type vUInt8 is printed with '0x' prefix.

This patch fixes the following error:
```
======================================================================
FAIL: test_with_dsym_and_run_command (Test-rdar-10642615.Radar10642615DataFormatterTestCase)
   Test data formatter commands.
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/Users/IliaK/p/llvm/tools/lldb/test/lldbtest.py", line 456, in wrapper
    return func(self, *args, **kwargs)
  File "/Users/IliaK/p/llvm/tools/lldb/test/functionalities/data-formatter/rdar-10642615/Test-rdar-10642615.py", line 21, in test_with_dsym_and_run_command
    self.data_formatter_commands()
  File "/Users/IliaK/p/llvm/tools/lldb/test/functionalities/data-formatter/rdar-10642615/Test-rdar-10642615.py", line 68, in data_formatter_commands
    '(vBool32) valueBool32 = (0, 1, 0, 1)'])
  File "/Users/IliaK/p/llvm/tools/lldb/test/lldbtest.py", line 2100, in expect
    msg if msg else EXP_MSG(str, exe))
AssertionError: False is not True : '(vUInt8) valueU8 = ('\x01', '\0', '\x04', '\0', '\0', '\x01', '\0', '\x04', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0')' returns expected result
Config=x86_64-clang
======================================================================
FAIL: test_with_dwarf_and_run_command (Test-rdar-10642615.Radar10642615DataFormatterTestCase)
   Test data formatter commands.
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/Users/IliaK/p/llvm/tools/lldb/test/lldbtest.py", line 473, in wrapper
    return func(self, *args, **kwargs)
  File "/Users/IliaK/p/llvm/tools/lldb/test/functionalities/data-formatter/rdar-10642615/Test-rdar-10642615.py", line 28, in test_with_dwarf_and_run_command
    self.data_formatter_commands()
  File "/Users/IliaK/p/llvm/tools/lldb/test/functionalities/data-formatter/rdar-10642615/Test-rdar-10642615.py", line 68, in data_formatter_commands
    '(vBool32) valueBool32 = (0, 1, 0, 1)'])
  File "/Users/IliaK/p/llvm/tools/lldb/test/lldbtest.py", line 2100, in expect
    msg if msg else EXP_MSG(str, exe))
AssertionError: False is not True : '(vUInt8) valueU8 = ('\x01', '\0', '\x04', '\0', '\0', '\x01', '\0', '\x04', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0')' returns expected result
Config=x86_64-clang
----------------------------------------------------------------------
```

Reviewers: granata.enrico, zturner, clayborg

Subscribers: clayborg, lldb-commits, zturner, granata.enrico

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

llvm-svn: 231490

9 years agoFix MiSignalTestCase.test_lldbmi_stopped_when_stopatentry_remote test after r231479
Ilia K [Fri, 6 Mar 2015 16:43:38 +0000 (16:43 +0000)]
Fix MiSignalTestCase.test_lldbmi_stopped_when_stopatentry_remote test after r231479

llvm-svn: 231489

9 years agoSema: We can use delegating ctors now. NFC.
Benjamin Kramer [Fri, 6 Mar 2015 16:36:50 +0000 (16:36 +0000)]
Sema: We can use delegating ctors now. NFC.

llvm-svn: 231488

9 years agoFix isOverride() for the case of a dependent typed base class.
Samuel Benzaquen [Fri, 6 Mar 2015 16:24:47 +0000 (16:24 +0000)]
Fix isOverride() for the case of a dependent typed base class.

The method decl is not marked as overriding any other method decls
until the template is instantiated.
Use the override attribute as another signal.

llvm-svn: 231487

9 years agoFold init() helpers into constructors. NFC.
Benjamin Kramer [Fri, 6 Mar 2015 16:21:15 +0000 (16:21 +0000)]
Fold init() helpers into constructors. NFC.

llvm-svn: 231486

9 years agoAvoid calls to dumpPassInfo and RegionBase<Tr>::getNameStr() in RGPassManager if
Chad Rosier [Fri, 6 Mar 2015 16:15:04 +0000 (16:15 +0000)]
Avoid calls to dumpPassInfo and RegionBase<Tr>::getNameStr() in RGPassManager if
-debug-pass is not specified, as the string is only used when dumping pass
information.  There is a big cost of determining the name in
ReginBase<Tr>:getNameStr() if the region's entry or exit block doesn't have a
name.  This is the case for the Release build, as names are not preserved by the
front-end.

RegionPass is mainly used by Polly, resulting in long compile time for one file
of a customer application with the Release build (1m24s) vs Release+Asserts
build (10s) when Polly is used.  With this change, the compile time with the
Release build went down to 8s.

Patch by Sanjin Sijaric <ssijaric@codeaurora.org>!
Phabricator: http://reviews.llvm.org/D8076

llvm-svn: 231485

9 years ago[ConstantRange] Teach multiply to be cleverer about signed ranges.
James Molloy [Fri, 6 Mar 2015 15:50:47 +0000 (15:50 +0000)]
[ConstantRange] Teach multiply to be cleverer about signed ranges.

Multiplication is not dependent on signedness, so just treating
all input ranges as unsigned is not incorrect. However it will cause
overly pessimistic ranges (such as full-set) when used with signed
negative values.

Teach multiply to try to interpret its inputs as both signed and
unsigned, and then to take the most specific (smallest population)
as its result.

llvm-svn: 231483

9 years agoInitialize ProcessPOSIXLog by NativeProcessLinux
Tamas Berghammer [Fri, 6 Mar 2015 15:47:23 +0000 (15:47 +0000)]
Initialize ProcessPOSIXLog by NativeProcessLinux

Previously it was initialized by ProcessLinux but lldb-server don't
contain ProcessLinux anymore so it have to be initialized by
NativeProcessLinux also.

Differential revision: http://reviews.llvm.org/D8080

llvm-svn: 231482

9 years ago[AsmPrinter][TLOF] Make AArch64 test a bit more flexible
Bruno Cardoso Lopes [Fri, 6 Mar 2015 15:11:41 +0000 (15:11 +0000)]
[AsmPrinter][TLOF] Make AArch64 test a bit more flexible

llvm-svn: 231481

9 years ago[AsmPrinter][TLOF] Split tests and move to appropriate directories
Bruno Cardoso Lopes [Fri, 6 Mar 2015 14:41:56 +0000 (14:41 +0000)]
[AsmPrinter][TLOF] Split tests and move to appropriate directories

Follow up from r231474 and 231475 to appease buildbots

llvm-svn: 231480

9 years agoRename test/tools/lldb-gdbserver to test/tools/lldb-server
Robert Flack [Fri, 6 Mar 2015 14:36:33 +0000 (14:36 +0000)]
Rename test/tools/lldb-gdbserver to test/tools/lldb-server

As requested in http://reviews.llvm.org/D7545 this change moves test/tools/lldb-gdbserver to test/tools/lldb-server ot match the name of the target being tested.

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

llvm-svn: 231479

9 years agoSymbolizer refactoring: Make WinSymbolizer use SymbolizerTool interface
Kuba Brecka [Fri, 6 Mar 2015 14:33:56 +0000 (14:33 +0000)]
Symbolizer refactoring: Make WinSymbolizer use SymbolizerTool interface

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

llvm-svn: 231478

9 years agoRemoving code that is unused after r231424; NFC.
Aaron Ballman [Fri, 6 Mar 2015 14:24:53 +0000 (14:24 +0000)]
Removing code that is unused after r231424; NFC.

llvm-svn: 231477

9 years agoUse delegating ctors to reduce code duplication. NFC.
Benjamin Kramer [Fri, 6 Mar 2015 14:15:57 +0000 (14:15 +0000)]
Use delegating ctors to reduce code duplication. NFC.

llvm-svn: 231476

9 years ago[AsmPrinter][TLOF] 32-bit MachO support for replacing GOT equivalents
Bruno Cardoso Lopes [Fri, 6 Mar 2015 13:49:05 +0000 (13:49 +0000)]
[AsmPrinter][TLOF] 32-bit MachO support for replacing GOT equivalents

Add MachO 32-bit (i.e. arm and x86) support for replacing global GOT equivalent
symbol accesses. Unlike 64-bit targets, there's no GOTPCREL relocation, and
access through a non_lazy_symbol_pointers section is used instead.

-- before

    _extgotequiv:
       .long _extfoo

    _delta:
       .long _extgotequiv-_delta

-- after

    _delta:
       .long L_extfoo$non_lazy_ptr-_delta

       .section __IMPORT,__pointers,non_lazy_symbol_pointers
    L_extfoo$non_lazy_ptr:
       .indirect_symbol _extfoo
       .long 0

llvm-svn: 231475

9 years ago[AsmPrinter][TLOF] ARM64 MachO support for replacing GOT equivalents
Bruno Cardoso Lopes [Fri, 6 Mar 2015 13:48:45 +0000 (13:48 +0000)]
[AsmPrinter][TLOF] ARM64 MachO support for replacing GOT equivalents

Follow up r230264 and add ARM64 support for replacing global GOT
equivalent symbol accesses by references to the GOT entry for the final
symbol instead, example:

-- before

   .globl  _foo
  _foo:
   .long   42

   .globl  _gotequivalent
  _gotequivalent:
   .quad   _foo

   .globl  _delta
  _delta:
   .long   _gotequivalent-_delta

-- after

   .globl  _foo
  _foo:
   .long   42

   .globl  _delta
  Ltmp3:
   .long _foo@GOT-Ltmp3

llvm-svn: 231474

9 years agoCodingStyle: Allow delegating ctors
Benjamin Kramer [Fri, 6 Mar 2015 13:46:50 +0000 (13:46 +0000)]
CodingStyle: Allow delegating ctors

Delegating constructors seem to work fine with all supported compilers.

llvm-svn: 231473

9 years ago[mips] [IAS] Add missing constraints and improve testing for the .module directive.
Toma Tabacu [Fri, 6 Mar 2015 12:15:12 +0000 (12:15 +0000)]
[mips] [IAS] Add missing constraints and improve testing for the .module directive.

Summary:
None of the .set directives can be used before the .module directives. The .set mips0/pop/push were not triggering this constraint.
Also added testing for all the other implemented directives which are supposed to trigger this constraint.

Reviewers: dsanders

Reviewed By: dsanders

Subscribers: llvm-commits

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

llvm-svn: 231465

9 years agoclang-format: Slightly change indentation rules in for loops.
Daniel Jasper [Fri, 6 Mar 2015 10:57:12 +0000 (10:57 +0000)]
clang-format: Slightly change indentation rules in for loops.

There was already a TODO to double-check whether the extra indenation
makes sense. A slightly different case reveals that it is actively harmful:

  for (int i = 0; i < aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ||
                      bbbbbbbbbbbbbbbbbbbb < ccccccccccccccc;
       ++i) {
  }

Here (and it is probably not a totally infrequent case, it just works out that
"i < " is four spaces and so the four space extra indentation makes the
operator precedence confusing. So, this will now instead be formatted
as:

  for (int i = 0; i < aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ||
                  bbbbbbbbbbbbbbbbbbbb < ccccccccccccccc;
       ++i) {
  }

llvm-svn: 231461

9 years agoFix race condition with -o "process launch" on linux
Pavel Labath [Fri, 6 Mar 2015 10:52:47 +0000 (10:52 +0000)]
Fix race condition with -o "process launch" on linux

Summary:
starting a debug session on linux with -o "process launch" lldb parameter was failing since
Target::Launch (in sychronous mode) is expecting to be able to receive public process events.
However, PlatformLinux did not set up event hijacking on process launch, which caused these
events to be processed elsewhere and left Target::Launch hanging. This patch enables event
interception in PlatformLinux (which was commented out).

Upon enabling event interception, I noticed an issue, which I traced back to the inconsistent
state of public run lock, which remained false even though public and private process states were
"stopped". I addressed this by making sure the run lock is "stopped" upon exit from
WaitForProcessToStop (which already had similar provisions for other return paths).

Test Plan: This should fix the intermittent TestFormats failure we have been experiencing on Linux.

Reviewers: jingham, clayborg, vharron

Subscribers: lldb-commits

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

llvm-svn: 231460

9 years agoChange the way in which error case is being handled.
Daniel Jasper [Fri, 6 Mar 2015 10:39:14 +0000 (10:39 +0000)]
Change the way in which error case is being handled.

Specifically this:
* Prevents an "unused" warning in non-assert builds.
* In that error case return with out removing a child loop instead of
  looping forever.

llvm-svn: 231459

9 years agoAdd a new pass "Loop Interchange"
Karthik Bhat [Fri, 6 Mar 2015 10:11:25 +0000 (10:11 +0000)]
Add a new pass "Loop Interchange"
This pass interchanges loops to provide a more cache-friendly memory access.

For e.g. given a loop like -
  for(int i=0;i<N;i++)
    for(int j=0;j<N;j++)
      A[j][i] = A[j][i]+B[j][i];

is interchanged to -
  for(int j=0;j<N;j++)
    for(int i=0;i<N;i++)
      A[j][i] = A[j][i]+B[j][i];

This pass is currently disabled by default.

To give a brief introduction it consists of 3 stages-

LoopInterchangeLegality : Checks the legality of loop interchange based on Dependency matrix.
LoopInterchangeProfitability: A very basic heuristic has been added to check for profitibility. This will evolve over time.
LoopInterchangeTransform : Which does the actual transform.

LNT Performance tests shows improvement in Polybench/linear-algebra/kernels/mvt and Polybench/linear-algebra/kernels/gemver becnmarks.

TODO:
1) Add support for reductions and lcssa phi.
2) Improve profitability model.
3) Improve loop selection algorithm to select best loop for interchange. Currently the innermost loop is selected for interchange.
4) Improve compile time regression found in llvm lnt due to this pass.
5) Fix issues in Dependency Analysis module.

A special thanks to Hal for reviewing this code.
Review: http://reviews.llvm.org/D7499

llvm-svn: 231458

9 years agoasan: fix comment formatting
Dmitry Vyukov [Fri, 6 Mar 2015 08:43:44 +0000 (08:43 +0000)]
asan: fix comment formatting

As per comments in http://reviews.llvm.org/D8032

llvm-svn: 231457

9 years agoX86: Form IMGREL relocations for LLVM Functions
David Majnemer [Fri, 6 Mar 2015 08:11:32 +0000 (08:11 +0000)]
X86: Form IMGREL relocations for LLVM Functions

We supported forming IMGREL relocations from ConstantExprs involving
__ImageBase if the minuend was a GlobalVariable.  Extend this
functionality to all GlobalObjects.

llvm-svn: 231456

9 years agoSilence C4715 'not all control paths return a value' warnings.
Yaron Keren [Fri, 6 Mar 2015 07:49:14 +0000 (07:49 +0000)]
Silence C4715 'not all control paths return a value' warnings.

llvm-svn: 231455

9 years agoPECOFF: Optimize the writer using parallel_for.
Rui Ueyama [Fri, 6 Mar 2015 06:53:13 +0000 (06:53 +0000)]
PECOFF: Optimize the writer using parallel_for.

Previously applying 1 million relocations took about 2 seconds on my
Xeon 2.4GHz 8 core workstation. After this patch, it takes about 300
milliseconds. As a result, time to link chrome.dll becomes 23 seconds
to 21 seconds.

llvm-svn: 231454

9 years agoRemove unneeded python import
Eric Fiselier [Fri, 6 Mar 2015 06:22:22 +0000 (06:22 +0000)]
Remove unneeded python import

llvm-svn: 231453

9 years agoSupport: Improve performance of FileOutputBuffer on Windows
Rui Ueyama [Fri, 6 Mar 2015 06:07:32 +0000 (06:07 +0000)]
Support: Improve performance of FileOutputBuffer on Windows

We extend an underlying file before mmap'ing it, but it's not needed
on Windows. Extending file is slow on Windows, so we should avoid doing that.
The difference gets larger as the size of an output file gets larger.
It shove off 2 seconds out of 25 seconds when linking chrome.dll with LLD,
for example.

llvm-svn: 231452

9 years agoDon't crash on non-public referenced dtors in toplevel classes.
Nico Weber [Fri, 6 Mar 2015 06:01:06 +0000 (06:01 +0000)]
Don't crash on non-public referenced dtors in toplevel classes.

Fixes PR22793, a bug that caused self-hosting to fail after the innocuous
r231254. See the bug for details.

llvm-svn: 231451

9 years agoWindows bot
Enrico Granata [Fri, 6 Mar 2015 03:37:33 +0000 (03:37 +0000)]
Windows bot

llvm-svn: 231450

9 years agoProvide synthetic children for some vector types
Enrico Granata [Fri, 6 Mar 2015 03:32:20 +0000 (03:32 +0000)]
Provide synthetic children for some vector types

Unlike GDB, we tackle the problem of representing vector types in different styles by having a synthetic child provider that recognizes the format you're trying to apply to the variable, and coming up with the right type and number of child values to match that format

This makes for a more compact representation and less visual noise

Fixes rdar://5429347

llvm-svn: 231449

9 years ago[llgo] Disable known failing packages in check-libgo
Andrew Wilkins [Fri, 6 Mar 2015 02:49:07 +0000 (02:49 +0000)]
[llgo] Disable known failing packages in check-libgo

Summary:
There are two packages in libgo which have
known failures when running the "make check" rule.
This change disables those packages in the tests so
that we can run libgo tests without them until the
root causes are identified and resolved.

Test Plan: ran check-libgo rule

Reviewers: pcc

Reviewed By: pcc

Subscribers: llvm-commits

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

llvm-svn: 231448

9 years ago[objc-arc] Sprinkle some more auto on some iterators.
Michael Gottesman [Fri, 6 Mar 2015 02:10:03 +0000 (02:10 +0000)]
[objc-arc] Sprinkle some more auto on some iterators.

llvm-svn: 231447

9 years ago[objc-arc] Move the detection of potential uses or altering of a ref count onto PtrState.
Michael Gottesman [Fri, 6 Mar 2015 02:07:12 +0000 (02:07 +0000)]
[objc-arc] Move the detection of potential uses or altering of a ref count onto PtrState.

llvm-svn: 231446

9 years agoWe want to add the entry point to the root set unconditionally, but these
Davide Italiano [Fri, 6 Mar 2015 02:05:03 +0000 (02:05 +0000)]
We want to add the entry point to the root set unconditionally, but these
asserts don't allow us to do it. Remove them, they're not really needed
anyway.

llvm-svn: 231445

9 years agoRemove unused function.
Rui Ueyama [Fri, 6 Mar 2015 01:44:07 +0000 (01:44 +0000)]
Remove unused function.

llvm-svn: 231444

9 years agoLegalizeTypes: Handle shift by 0 in ExpandShiftByConstant.
Michael Zolotukhin [Fri, 6 Mar 2015 01:13:01 +0000 (01:13 +0000)]
LegalizeTypes: Handle shift by 0 in ExpandShiftByConstant.

Though such shifts are usually optimized away by combiner, we still can
encounter them after a vector shift is legalized.

llvm-svn: 231443

9 years agoRemember to move a type to the correct set when setting the body.
Rafael Espindola [Fri, 6 Mar 2015 00:50:21 +0000 (00:50 +0000)]
Remember to move a type to the correct set when setting the body.

We would set the body of a struct type (therefore making it non-opaque)
but were forgetting to move it to the non-opaque set.

Fixes pr22807.

llvm-svn: 231442

9 years agoBump major vers # in xcode project file from 330 to 340.
Jason Molenda [Fri, 6 Mar 2015 00:45:01 +0000 (00:45 +0000)]
Bump major vers # in xcode project file from 330 to 340.

llvm-svn: 231441

9 years agoRenamed function to avoid confusion about purpose.
John Thompson [Fri, 6 Mar 2015 00:39:42 +0000 (00:39 +0000)]
Renamed function to avoid confusion about purpose.

llvm-svn: 231440

9 years ago[objc-arc] Move the checking of whether or not we can match onto PtrStates and out...
Michael Gottesman [Fri, 6 Mar 2015 00:34:42 +0000 (00:34 +0000)]
[objc-arc] Move the checking of whether or not we can match onto PtrStates and out of the main dataflow.

These refactored computations check whether or not we are at a stage
of the sequence where we can perform a match. This patch moves the
computation out of the main dataflow and into
{BottomUp,TopDown}PtrState.

llvm-svn: 231439

9 years ago[objc-arc] Refactor (Re-)initialization of PtrState from dataflow -> {TopDown,BottomU...
Michael Gottesman [Fri, 6 Mar 2015 00:34:39 +0000 (00:34 +0000)]
[objc-arc] Refactor (Re-)initialization of PtrState from dataflow -> {TopDown,BottomUp}PtrState Class.

This initialization occurs when we see a new retain or release. Before
we performed the actual initialization inline in the dataflow. That is
just messy.

llvm-svn: 231438

9 years ago[objc-arc] Create two subclasses of PtrState in preparation for moving per ptr state...
Michael Gottesman [Fri, 6 Mar 2015 00:34:36 +0000 (00:34 +0000)]
[objc-arc] Create two subclasses of PtrState in preparation for moving per ptr state change behavior onto a PtrState class.

This will enable the main ObjCARCOpts dataflow to work with higher
level concepts such as "can this ptr state be modified by this ref
count" and not need to understand the nitty gritty details of how that
is determined. This makes the dataflow cleaner.

llvm-svn: 231437

9 years ago[objc-arc] Extract out MDNodes into a cache structure so the information can be passe...
Michael Gottesman [Fri, 6 Mar 2015 00:34:33 +0000 (00:34 +0000)]
[objc-arc] Extract out MDNodes into a cache structure so the information can be passed around.

llvm-svn: 231436

9 years ago[objc-arc] Remove annotations code.
Michael Gottesman [Fri, 6 Mar 2015 00:34:29 +0000 (00:34 +0000)]
[objc-arc] Remove annotations code.

It will always be in the history if it is needed again. Now it is just dead
code.

llvm-svn: 231435

9 years agoCore: Make the resolver faster.
Rui Ueyama [Fri, 6 Mar 2015 00:28:41 +0000 (00:28 +0000)]
Core: Make the resolver faster.

In the resolver, we maintain a list of undefined symbols, and when we
visit an archive file, we check that file if undefined symbols can be
resolved using files in the archive. The archive file class provides
find() function to lookup a symbol.

Previously, we call find() for each undefined symbols. Archive files
may be visited multiple times if they are in a --start-group and
--end-group. If we visit a file M times and if we have N undefined
symbols, find() is called M*N times. I found that that is one of the
most significant bottlenecks in LLD when linking a large executable.

find() is not a very cheap operation because it looks up a hash table
for a given string. And a string, or a symbol name, can be pretty long
if you are dealing with C++ symbols.

We can eliminate the bottleneck.

Calling find() with the same symbol multiple times is a waste. If a
result of looking up a symbol is "not found", it stays "not found"
forever because the symbol simply doesn't exist in the archive.
Thus, we should call find() only for newly-added undefined symbols.
This optimization makes O(M*N) O(N).

In this patch, all undefined symbols are added to a vector. For each
archive/shared library file, we maintain a start position P. All
symbols [0, P) are already searched. [P, end of the vector) are not
searched yet. For each file, we scan the vector only once.

This patch changes the order in which undefined symbols are looked for.
Previously, we iterated over the result of _symbolTable.undefines().
Now we iterate over the new vector. This is a benign change but caused
differences in output if remaining undefines exist. This is why some
tests are updated.

The performance improvement of this patch seems sometimes significant.
Previously, linking chrome.dll on my workstation (Xeon 2.4GHz 8 cores)
took about 70 seconds. Now it takes (only?) 30 seconds!

http://reviews.llvm.org/D8091

llvm-svn: 231434

9 years agoTeach ComputeNumSignBits about signed reminder.
Nadav Rotem [Fri, 6 Mar 2015 00:23:58 +0000 (00:23 +0000)]
Teach ComputeNumSignBits about signed reminder.

This optimization a continuation of r231140 that reasoned about signed div.

llvm-svn: 231433

9 years agoOptimize resolver by using std::unordered_multimap.
Rui Ueyama [Fri, 6 Mar 2015 00:22:48 +0000 (00:22 +0000)]
Optimize resolver by using std::unordered_multimap.

_reverseRef is a multimap from atoms to atoms. The map contains
reverse edges of "layout-before" and "group" edges for dead-stripping.

The type of the variable was DenseMap<Atom *, DenseSet<Atom *>>.
This patch changes that to std::unordered_multimap<Atom *, Atom *>.

A DenseMap with a value type of DenseSet was not fast. Inserting 900k
items to the map took about 1.6 seconds on my workstation.
unordered_multimap on the other hand took only 0.6 seconds.
Use of the map also got faster -- originally markLive took 1.3 seconds
in the same test case, and it now took 1.0 seconds. In total we shove
off 1.3 seconds out of 27 seconds in that test case.

llvm-svn: 231432

9 years agoAdd a download link to the web page (PR22764)
Hans Wennborg [Fri, 6 Mar 2015 00:13:55 +0000 (00:13 +0000)]
Add a download link to the web page (PR22764)

llvm-svn: 231431

9 years agoFix build error.
Michael Gottesman [Thu, 5 Mar 2015 23:57:07 +0000 (23:57 +0000)]
Fix build error.

llvm-svn: 231430

9 years agoAdd a symbolizer testcase for closed stdin/stdout
Kuba Brecka [Thu, 5 Mar 2015 23:41:47 +0000 (23:41 +0000)]
Add a symbolizer testcase for closed stdin/stdout

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

llvm-svn: 231429

9 years agoPrint out which symbolizer are we using when verbosity >= 2
Kuba Brecka [Thu, 5 Mar 2015 23:38:23 +0000 (23:38 +0000)]
Print out which symbolizer are we using when verbosity >= 2

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

llvm-svn: 231428

9 years ago[objc-arc] Change some casts and loop iterators to use auto.
Michael Gottesman [Thu, 5 Mar 2015 23:29:06 +0000 (23:29 +0000)]
[objc-arc] Change some casts and loop iterators to use auto.

llvm-svn: 231427

9 years ago[objc-arc] Extract out state specific to a ref count from the main objc arc sequence...
Michael Gottesman [Thu, 5 Mar 2015 23:29:03 +0000 (23:29 +0000)]
[objc-arc] Extract out state specific to a ref count from the main objc arc sequence dataflow. This will allow me to separate the actual ARC queries from the meat of the dataflow algorithm.

llvm-svn: 231426

9 years ago[objc-arc] Extract blot map vector into its own file. NFC.
Michael Gottesman [Thu, 5 Mar 2015 23:28:58 +0000 (23:28 +0000)]
[objc-arc] Extract blot map vector into its own file. NFC.

llvm-svn: 231425

9 years ago[modules] Rework merging of redeclaration chains on module import.
Richard Smith [Thu, 5 Mar 2015 23:24:12 +0000 (23:24 +0000)]
[modules] Rework merging of redeclaration chains on module import.

We used to save out and eagerly load a (potentially huge) table of merged
formerly-canonical declarations when we loaded each module. This was extremely
inefficient in the presence of large amounts of merging, and didn't actually
save any merging lookup work, because we still needed to perform name lookup to
check that our merged declaration lists were complete. This also resulted in a
loss of laziness -- even if we only needed an early declaration of an entity, we
would eagerly pull in all declarations that had been merged into it regardless.

We now store the relevant fragments of the table within the declarations
themselves. In detail:

 * The first declaration of each entity within a module stores a list of first
   declarations from imported modules that are merged into it.
 * Loading that declaration pre-loads those other entities, so that they appear
   earlier within the redeclaration chain.
 * The name lookup tables list the most recent local lookup result, if there
   is one, or all directly-imported lookup results if not.

llvm-svn: 231424

9 years agoRemove libedit and libncurses from LLDB_SYSTEM_LIBS if they're disabled.
Chaoren Lin [Thu, 5 Mar 2015 23:22:54 +0000 (23:22 +0000)]
Remove libedit and libncurses from LLDB_SYSTEM_LIBS if they're disabled.

Reviewers: clayborg, zturner, vharron, sbest

Subscribers: lldb-commits

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

llvm-svn: 231423

9 years ago[X86] Remove stale comment. NFC.
Ahmed Bougacha [Thu, 5 Mar 2015 23:18:41 +0000 (23:18 +0000)]
[X86] Remove stale comment.  NFC.

It turns out 256bit V[SZ]EXT nodes are still
generated by the new shuffle lowering, so this
is here to stay!

llvm-svn: 231422

9 years agoUse std::string instead of StringRef to prevent use-after-free.
Daniel Jasper [Thu, 5 Mar 2015 23:17:32 +0000 (23:17 +0000)]
Use std::string instead of StringRef to prevent use-after-free.

Discovered by asan.

llvm-svn: 231421

9 years agoWhen we have a symbol, like "NSLog" that we try to call in an expression, make sure...
Greg Clayton [Thu, 5 Mar 2015 23:12:02 +0000 (23:12 +0000)]
When we have a symbol, like "NSLog" that we try to call in an expression, make sure we prioritize the external symbols over the internal one.

This is a temporary fix until a more comprehensive fix can be made for finding functions that we call in expressions.

We find "NSLog" in ClangExpressionDeclMap::FindExternalVisibleDecls() in after a call to target->GetImages().FindFunctions(...). Note that there are two symbols: NSLog from CFNetwork which is not external, and NSLog from Foundation which _is_ external. We do something with the external symbol with:

                    if (extern_symbol)
                    {
                        AddOneFunction (context, NULL, extern_symbol, current_id);
                        context.m_found.function = true;
                    }

Then later we try to lookup the _Z5NSLogP8NSStringz name and we don't find it so we call ClangExpressionDeclMap::GetFunctionAddress() with "_Z5NSLogP8NSStringz" as the name and the sc_list_size is zero at the "if" statement at line 568 because we don't find the mangled name and we extract the basename "NSLog" and call:

            FindCodeSymbolInContext(ConstString(basename), m_parser_vars->m_sym_ctx, sc_list);
            sc_list_size = sc_list.GetSize();

and we get a list size of two again, and we proceed to search for the symbol again, this time ignoring the external vs non-external-ness of the symbols that we find. This fix ensures we prioritize the external symbol until we get a real fix from Sean Callanan when he gets back to make sure we don't do multiple lookups for the same symbol we already resolved.

<rdar://problem/19879282>

llvm-svn: 231420

9 years ago[PATCH] Patch to fix the AST for vector splat from any
Fariborz Jahanian [Thu, 5 Mar 2015 23:06:09 +0000 (23:06 +0000)]
[PATCH] Patch to fix the AST for vector splat from any
arithmetic type to a vector so that the arithmatic type
matches the vector element type. Without which it crashes
in Code Gen. rdar://20000762

llvm-svn: 231419

9 years agoAll FileCheck directives allow patterns.
Paul Robinson [Thu, 5 Mar 2015 23:04:26 +0000 (23:04 +0000)]
All FileCheck directives allow patterns.

llvm-svn: 231418

9 years agoFix test to use explicit load type.
Peter Collingbourne [Thu, 5 Mar 2015 22:55:42 +0000 (22:55 +0000)]
Fix test to use explicit load type.

llvm-svn: 231417

9 years agoGo bindings: use MDNode::replaceAllUsesWith instead of MDTuple::replaceAllUsesWith.
Peter Collingbourne [Thu, 5 Mar 2015 22:55:38 +0000 (22:55 +0000)]
Go bindings: use MDNode::replaceAllUsesWith instead of MDTuple::replaceAllUsesWith.

Fixes llgo following Duncan's changes to debug info in r231082. llgo needs
to replace composite types, which are no longer represented using MDTuple.

llvm-svn: 231416

9 years agosymbolicate the application specific backtraces that are in MacOSX crash log files.
Greg Clayton [Thu, 5 Mar 2015 22:53:06 +0000 (22:53 +0000)]
symbolicate the application specific backtraces that are in MacOSX crash log files.

<rdar://problem/20039160>

llvm-svn: 231415

9 years ago[RewriteStatepointsForGC] Yet more test cases for relocation
Philip Reames [Thu, 5 Mar 2015 22:28:06 +0000 (22:28 +0000)]
[RewriteStatepointsForGC] Yet more test cases for relocation

At this point, we should have decent coverage of the involved code.  I've got a few more test cases to cleanup and submit, but what's here is already reasonable.

I've got a collection of liveness tests which will be posted for review along with a decent liveness algorithm in the next few days.  Once those are in, the code in this file should be well tested and I can start renaming things without risk of serious breakage.

llvm-svn: 231414

9 years ago[sanitizer] Reconstruct the function that dumps block/edge coverage, hopefully making...
Kostya Serebryany [Thu, 5 Mar 2015 22:19:25 +0000 (22:19 +0000)]
[sanitizer] Reconstruct the function that dumps block/edge coverage, hopefully making it more robust. Also increase the allowed coverage size on 32-bit.

llvm-svn: 231413

9 years ago[CODE_OWNERS] Change the ownership of register allocators.
Quentin Colombet [Thu, 5 Mar 2015 22:15:17 +0000 (22:15 +0000)]
[CODE_OWNERS] Change the ownership of register allocators.

llvm-svn: 231412

9 years agoInstructions: Use delegated constructors to reduce duplication
Benjamin Kramer [Thu, 5 Mar 2015 22:05:26 +0000 (22:05 +0000)]
Instructions: Use delegated constructors to reduce duplication

NFC.

llvm-svn: 231411

9 years agoRevert "[UBSan] Add testcases for -fsanitize=shift-base and -fsanitize=shift-exponent."
Alexey Samsonov [Thu, 5 Mar 2015 21:57:47 +0000 (21:57 +0000)]
Revert "[UBSan] Add testcases for -fsanitize=shift-base and -fsanitize=shift-exponent."

The test case fails on AArch64.

llvm-svn: 231410

9 years agoRevert "[UBSan] Split -fsanitize=shift into -fsanitize=shift-base and -fsanitize...
Alexey Samsonov [Thu, 5 Mar 2015 21:57:35 +0000 (21:57 +0000)]
Revert "[UBSan] Split -fsanitize=shift into -fsanitize=shift-base and -fsanitize=shift-exponent."

It's not that easy. If we're only checking -fsanitize=shift-base we
still need to verify that exponent has sane value, otherwise
UBSan-inserted checks for base will contain undefined behavior
themselves.

llvm-svn: 231409

9 years ago[AVX] Lower / fast-isel scalar FP selects into VBLENDV instructions (PR22483)
Sanjay Patel [Thu, 5 Mar 2015 21:46:54 +0000 (21:46 +0000)]
[AVX] Lower / fast-isel scalar FP selects into VBLENDV instructions (PR22483)

This patch reduces code size for all AVX targets and increases speed for some chips.

SSE 4.1 introduced the useless (see code comments) 2-register form of BLENDV and
only in the packed float/double flavors.

AVX subsequently made the instruction useful by adding a 4-register operand form.

So we just need to paper over the lack of scalar forms of this instruction, complicate
the code to choose float or double forms, and use blendv on scalars since all FP is in
xmm registers anyway.

This gives us an approximately 50% speed up for a blendv microbenchmark sequence
on SandyBridge and Haswell:
blendv : 29.73 cycles/iter
logic : 43.15 cycles/iter

No new test cases with this patch because:

1. fast-isel-select-sse.ll tests the positive side for regular X86 lowering and fast-isel
2. sse-minmax.ll and fp-select-cmp-and.ll confirm that we're not firing for scalar selects without AVX
3. fp-select-cmp-and.ll and logical-load-fold.ll confirm that we're not firing for scalar selects with constants.

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

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

llvm-svn: 231408

9 years agoXFAIL tests that are known to fail occasionally on Linux
Vince Harron [Thu, 5 Mar 2015 21:35:28 +0000 (21:35 +0000)]
XFAIL tests that are known to fail occasionally on Linux

Trying to get the build green so we can notice new failures easier.

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

llvm-svn: 231407

9 years agoSelectionDAGBuilder: Merge 3 copies of the limited precision exp2 emission code.
Benjamin Kramer [Thu, 5 Mar 2015 21:13:08 +0000 (21:13 +0000)]
SelectionDAGBuilder: Merge 3 copies of the limited precision exp2 emission code.

NFC intended.

llvm-svn: 231406

9 years agoFix uninitialized memory references in WinEHPrepare
Andrew Kaylor [Thu, 5 Mar 2015 21:06:42 +0000 (21:06 +0000)]
Fix uninitialized memory references in WinEHPrepare

llvm-svn: 231405

9 years agoRun ShTests when the executor is an instance of LocalExecutor
Eric Fiselier [Thu, 5 Mar 2015 20:27:01 +0000 (20:27 +0000)]
Run ShTests when the executor is an instance of LocalExecutor

llvm-svn: 231404