platform/upstream/llvm.git
9 years agoIncrease default packet timeout for android to 20s
Tamas Berghammer [Thu, 26 Feb 2015 11:37:21 +0000 (11:37 +0000)]
Increase default packet timeout for android to 20s

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

llvm-svn: 230626

9 years agoclang-format: Fix space of arrays of pointers to templated types.
Daniel Jasper [Thu, 26 Feb 2015 11:30:50 +0000 (11:30 +0000)]
clang-format: Fix space of arrays of pointers to templated types.

Before:
  vector<int>(*foo_)[6];

After:
  vector<int> (*foo_)[6];

llvm-svn: 230625

9 years agoAllow non-affine control flow by default
Johannes Doerfert [Thu, 26 Feb 2015 11:09:24 +0000 (11:09 +0000)]
Allow non-affine control flow by default

  With the patches r230325, r230329 and r230340 we can handle non-affine
  control flow in (loop-free) subregions. As all LLVM test-suite tests pass and
  we get ~20% more non-trivial SCoPs, we activate it now by default.

llvm-svn: 230624

9 years ago[x86] Sink the single-input v8i16 lowering code that is actually
Chandler Carruth [Thu, 26 Feb 2015 11:00:40 +0000 (11:00 +0000)]
[x86] Sink the single-input v8i16 lowering code that is actually
formulaic into the top v8i16 lowering routine.

This makes the generalized lowering a completely general and single path
lowering which will allow generalizing it in turn for multiple 128-bit
lanes.

llvm-svn: 230623

9 years ago[x86] Remove a SimpleTy usage. No need for it here, we already have the
Chandler Carruth [Thu, 26 Feb 2015 10:37:01 +0000 (10:37 +0000)]
[x86] Remove a SimpleTy usage. No need for it here, we already have the
MVT.

llvm-svn: 230622

9 years ago[OPENMP] Fixed codegen for directives without function outlining.
Alexey Bataev [Thu, 26 Feb 2015 10:27:34 +0000 (10:27 +0000)]
[OPENMP] Fixed codegen for directives without function outlining.
Fixed crash on codegen for directives like 'omp for', 'omp single' etc. inside of the 'omp parallel', 'omp task' etc. regions.

llvm-svn: 230621

9 years agoclang-format: Allow breaking after "else if(" as a last resort.
Daniel Jasper [Thu, 26 Feb 2015 09:49:08 +0000 (09:49 +0000)]
clang-format: Allow breaking after "else if(" as a last resort.

This isn't generally nice, but better than violating the column limit.

llvm-svn: 230620

9 years agoIRCE: only touch loops that have been shown to have a high
Sanjoy Das [Thu, 26 Feb 2015 08:56:04 +0000 (08:56 +0000)]
IRCE: only touch loops that have been shown to have a high
backedge-taken count in profiliing data.

llvm-svn: 230619

9 years agoIRCE: generalize to handle loops with decreasing induction variables.
Sanjoy Das [Thu, 26 Feb 2015 08:19:31 +0000 (08:19 +0000)]
IRCE: generalize to handle loops with decreasing induction variables.

IRCE can now split the iteration space for loops like:

   for (i = n; i >= 0; i--)
     a[i + k] = 42; // bounds check on access

llvm-svn: 230618

9 years ago[x86] Make the vector shuffle helpers order the SDLoc and MVT arguments.
Chandler Carruth [Thu, 26 Feb 2015 08:19:24 +0000 (08:19 +0000)]
[x86] Make the vector shuffle helpers order the SDLoc and MVT arguments.
This ordering matches that of DAG.getNode.

llvm-svn: 230617

9 years ago[X86] Remove the blendps/blendpd builtins. They aren't used by the intrinsic headers...
Craig Topper [Thu, 26 Feb 2015 08:09:05 +0000 (08:09 +0000)]
[X86] Remove the blendps/blendpd builtins. They aren't used by the intrinsic headers. We use appropriate shuffle vector instead.

llvm-svn: 230616

9 years ago[X86] Correct immediate range checking for blendps/blendpd/blendpd256 builtins.
Craig Topper [Thu, 26 Feb 2015 06:23:15 +0000 (06:23 +0000)]
[X86] Correct immediate range checking for blendps/blendpd/blendpd256 builtins.

llvm-svn: 230615

9 years ago[Core] Do not reclaim absolute atoms in resolver.
Davide Italiano [Thu, 26 Feb 2015 05:39:57 +0000 (05:39 +0000)]
[Core] Do not reclaim absolute atoms in resolver.

This fixes a linker crash (found out while testing --gc-sections,
testcase provided by Rafael Avila de Espindola).
While this behaviour was found while testing ELF, it' not necessarily
ELF specific and this change is (apparently) harmless on all the
other drivers.

Differential Revision:  D7823
Reviewed by:    ruiu

llvm-svn: 230614

9 years agoIR: Use '= default' instead of r230609, NFC
Duncan P. N. Exon Smith [Thu, 26 Feb 2015 05:00:42 +0000 (05:00 +0000)]
IR: Use '= default' instead of r230609, NFC

Apparently we can use this now!

llvm-svn: 230613

9 years agoFileCheck: Add CHECK-SAME
Duncan P. N. Exon Smith [Thu, 26 Feb 2015 04:53:00 +0000 (04:53 +0000)]
FileCheck: Add CHECK-SAME

Add `CHECK-SAME`, which requires that the pattern matches on the *same*
line as the previous `CHECK`/`CHECK-NEXT` -- in other words, no newline
is allowed in the skipped region.  This is similar to `CHECK-NEXT`,
which requires exactly 1 newline in the skipped region.

My motivation is to simplify checking the long lines of LLVM assembly
for the new debug info hierarchy.  This allows CHECK sequences like the
following:

    CHECK:      ![[REF]] = !SomeMDNode(
    CHECK-SAME: file: ![[FILE:[0-9]+]]
    CHECK-SAME: otherField: 93{{[,)]}}

which is equivalent to:

    CHECK: ![[REF]] = !SomeMDNode({{.*}}file: ![[FILE:[0-9]+]]{{.*}}otherField: 93{{[,)]}}

While this example just has two fields, many nodes in debug info have
more than that.  `CHECK-SAME` will keep the logic easy to follow.

Morever, it enables interleaving `CHECK-NOT`s without allowing newlines.
Consider the following:

    CHECK:      ![[REF]] = !SomeMDNode(
    CHECK-SAME: file: ![[FILE:[0-9]+]]
    CHECK-NOT:  unexpectedField:
    CHECK-SAME: otherField: 93{{[,)]}}
    CHECK-NOT:  otherUnexpectedField:
    CHECK-SAME: )

which doesn't seem to have an equivalent `CHECK` line.

llvm-svn: 230612

9 years ago[Mips] Handle -mips32r[3|5] / -mips64r[3|5] options while selecting lib/headers paths
Simon Atanasyan [Thu, 26 Feb 2015 04:45:57 +0000 (04:45 +0000)]
[Mips] Handle -mips32r[3|5] / -mips64r[3|5] options while selecting lib/headers paths

There is no supported toolchain which provides headers / libs / object
files specific to the mips32r[3|5] and mips64r[3|5] ISA. So select "r2"
specific folders when they are available.

http://reviews.llvm.org/D7879

llvm-svn: 230611

9 years agoCGDebugInfo: Use DIImportedEntity default constructor, NFC
Duncan P. N. Exon Smith [Thu, 26 Feb 2015 04:44:27 +0000 (04:44 +0000)]
CGDebugInfo: Use DIImportedEntity default constructor, NFC

Use the newly minted `DIImportedEntity` default constructor (r230609)
rather than explicitly specifying `nullptr`.  The latter will become
ambiguous when the new debug info hierarchy is committed, since we'll
have both of the following:

    explicit DIImportedEntity(const MDNode *);
    DIImportedEntity(const MDImportedEntity *);

(Currently we just have the former.)

A default constructor is just as clear.

llvm-svn: 230610

9 years agoIR: Add default constructor for DIImportedEntity
Duncan P. N. Exon Smith [Thu, 26 Feb 2015 04:41:10 +0000 (04:41 +0000)]
IR: Add default constructor for DIImportedEntity

Add a default constructor for `DIImportedEntity`, to be used in clang in
a follow-up.

llvm-svn: 230609

9 years ago[LoopAccesses] Add command-line option for RuntimeMemoryCheckThreshold
Adam Nemet [Thu, 26 Feb 2015 04:39:09 +0000 (04:39 +0000)]
[LoopAccesses] Add command-line option for RuntimeMemoryCheckThreshold

Also remove the somewhat misleading initializers from
VectorizationFactor and VectorizationInterleave.  They will get
initialized with the default ctor since no cl::init is provided.

llvm-svn: 230608

9 years agoIRCE: print newline after printing an InductiveRangeCheck.
Sanjoy Das [Thu, 26 Feb 2015 04:03:31 +0000 (04:03 +0000)]
IRCE: print newline after printing an InductiveRangeCheck.

llvm-svn: 230607

9 years agoUnwind: clean up some GCC warnings
Saleem Abdulrasool [Thu, 26 Feb 2015 04:01:37 +0000 (04:01 +0000)]
Unwind: clean up some GCC warnings

This cleans up a set of -Wsign-conversion, -Wint-conversion, and -Wformat
warnings from GCC 4.9.2 on Linux.  NFC.

llvm-svn: 230606

9 years agoReturn a current executable's directory from HostInfoAndroid::ComputeSupportExeDirectory.
Oleksiy Vyalov [Thu, 26 Feb 2015 02:50:14 +0000 (02:50 +0000)]
Return a current executable's directory from HostInfoAndroid::ComputeSupportExeDirectory.

http://reviews.llvm.org/D7876

llvm-svn: 230604

9 years agoUpdate assumption in template diffing about integer template arguments.
Richard Trieu [Thu, 26 Feb 2015 02:40:48 +0000 (02:40 +0000)]
Update assumption in template diffing about integer template arguments.

Fix for PR22017.  Integer template arguments are automatically bit extended to
the size of the integer type.  In template diffing, evaluated expressions were
not having their results extending, leading to comparing two APSInt's with
different widths.  Apply the proper bit extending when evaluating template
arguments.  This mainly affected bool template arguments.

llvm-svn: 230603

9 years agoIf we are trying to load the scripting resource for a module whose name happens to...
Enrico Granata [Thu, 26 Feb 2015 01:37:26 +0000 (01:37 +0000)]
If we are trying to load the scripting resource for a module whose name happens to be a Python keyword, then prefix the filename with an _ (e.g. a module named def will load _def.py)

Fixes rdar://13893506

llvm-svn: 230602

9 years ago[GC docs] Add example IR, assembly, and stackmaps to Statepoint documentation
Philip Reames [Thu, 26 Feb 2015 01:18:21 +0000 (01:18 +0000)]
[GC docs] Add example IR, assembly, and stackmaps to Statepoint documentation

When I originally committed the statepoint docs, I left placeholders for example IR fragments.  I'm finally getting around to filling those in.

I also added IR fragments to illustrate the usage of the PlaceSafepoints pass while I was at it.

llvm-svn: 230601

9 years agoSplit StaticAnalyzer module into three to fix a cyclic dependency. Dependencies
Richard Smith [Thu, 26 Feb 2015 01:11:08 +0000 (01:11 +0000)]
Split StaticAnalyzer module into three to fix a cyclic dependency. Dependencies
are now:

  FrontendTool -> StaticAnalyzer/Frontend -> Frontend -> StaticAnalyzer/Core

The final dependency edge here is probably removable: AnalyzerOptions (and
Analyses.def) should probably live in Basic rather than StaticAnalyzer/Core.

llvm-svn: 230600

9 years agoReplace a few instances of NULL with nullptr.
David Majnemer [Thu, 26 Feb 2015 01:10:49 +0000 (01:10 +0000)]
Replace a few instances of NULL with nullptr.

llvm-svn: 230599

9 years agoclang-cl: Expose -fcolor-diagnostics and -fansi-escape-codes
Reid Kleckner [Thu, 26 Feb 2015 01:10:15 +0000 (01:10 +0000)]
clang-cl: Expose -fcolor-diagnostics and -fansi-escape-codes

They don't conflict with MSVC flags.

llvm-svn: 230598

9 years agoSema: __assume with side effects shouldn't result in invalid AST nodes
David Majnemer [Thu, 26 Feb 2015 00:57:33 +0000 (00:57 +0000)]
Sema: __assume with side effects shouldn't result in invalid AST nodes

We'd diagnose an __assume expression which contained a function call.
This would result in us wrongly returning ExprError, causing mysterious
failures later on.

llvm-svn: 230597

9 years agoPass /nologo to ml64 for quieter builds
Reid Kleckner [Thu, 26 Feb 2015 00:51:33 +0000 (00:51 +0000)]
Pass /nologo to ml64 for quieter builds

It still prints "Assembling path/to/X86CompilationCallback_Win64.asm",
but linking does the same thing.

llvm-svn: 230596

9 years agoAdd self to CREDITS.txt
Jonathan Roelofs [Thu, 26 Feb 2015 00:48:22 +0000 (00:48 +0000)]
Add self to CREDITS.txt

llvm-svn: 230595

9 years agoAdd Example Sub Target.
Michael J. Spencer [Thu, 26 Feb 2015 00:48:10 +0000 (00:48 +0000)]
Add Example Sub Target.

llvm-svn: 230594

9 years ago[ELF][x86-64] Make the X86_64LinkingContext and X86_64TargetHandler derivable.
Michael J. Spencer [Thu, 26 Feb 2015 00:47:34 +0000 (00:47 +0000)]
[ELF][x86-64] Make the X86_64LinkingContext and X86_64TargetHandler derivable.

llvm-svn: 230593

9 years agoAdd remote testing support to the lit config.
Jonathan Roelofs [Thu, 26 Feb 2015 00:42:17 +0000 (00:42 +0000)]
Add remote testing support to the lit config.

Executors can be specified at configure time by using the -DLIBCXX_EXECUTOR=""
option. Examples include:

  $ cmake <other_flags> -DLIBCXX_EXECUTOR="TimeoutExecutor(30,LocalExecutor())"
      This runs individual tests with a maximum duration

  $ cmake <other_flags> -DLIBCXX_EXECUTOR="SSHExecutor('hostname','username')"
      This runs tests on a remote target, using scp to shuttle binaries to the
      target, and ssh to invoke commands there.

  $ cmake <other_flags> -DLIBCXX_EXECUTOR="PrefixExecutor('/path/to/run/script',LocalExecutor())"
      This assumes the script knows how to copy run the executables passed to it,
      and allows for the ultimate control. This is useful for running things
      inside emulators like Valgrind & QEMU.

TODO: This doesn't claim to support ShTest tests yet, that will take a bit more
  thought & finagling (I'm still not sure how to orchestrate copy-in for those cases.

  I've also punted on what to do about tests that read data files. The testsuite
  has several tests that need to read *.dat files placed next to them, and
  currently those aren't copied over when using, say, an SSHExecutor. The
  affected tests are:

     libc++ :: std/input.output/file.streams/fstreams/filebuf.virtuals/pbackfail.pass.cpp
     libc++ :: std/input.output/file.streams/fstreams/filebuf.virtuals/underflow.pass.cpp
     libc++ :: std/input.output/file.streams/fstreams/ifstream.assign/member_swap.pass.cpp
     libc++ :: std/input.output/file.streams/fstreams/ifstream.assign/move_assign.pass.cpp
     libc++ :: std/input.output/file.streams/fstreams/ifstream.assign/nonmember_swap.pass.cpp
     libc++ :: std/input.output/file.streams/fstreams/ifstream.cons/move.pass.cpp
     libc++ :: std/input.output/file.streams/fstreams/ifstream.cons/pointer.pass.cpp
     libc++ :: std/input.output/file.streams/fstreams/ifstream.cons/string.pass.cpp
     libc++ :: std/input.output/file.streams/fstreams/ifstream.members/close.pass.cpp
     libc++ :: std/input.output/file.streams/fstreams/ifstream.members/open_pointer.pass.cpp
     libc++ :: std/input.output/file.streams/fstreams/ifstream.members/open_string.pass.cpp
     libc++ :: std/input.output/file.streams/fstreams/ifstream.members/rdbuf.pass.cpp
     libc++ :: std/localization/locales/locale.convenience/conversions/conversions.buffer/pbackfail.pass.cpp
     libc++ :: std/localization/locales/locale.convenience/conversions/conversions.buffer/underflow.pass.cpp

Note: One thing to watch out for when using the SSHExecutor for cross-testing is
  that you'll also want to specify a TargetInfo object (so that the host's
  features aren't used for available-features checks and flags setup).

http://reviews.llvm.org/D7380

llvm-svn: 230592

9 years agoPlaceSafepoints: use IRBuilder helpers
Ramkumar Ramachandra [Thu, 26 Feb 2015 00:35:56 +0000 (00:35 +0000)]
PlaceSafepoints: use IRBuilder helpers

Use the IRBuilder helpers for gc.statepoint and gc.result, instead of
coding the construction by hand. Note that the gc.statepoint IRBuilder
handles only CallInst, not InvokeInst; retain that part of hand-coding.

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

llvm-svn: 230591

9 years agoSilence unused variable warning in NDEBUG build
Reid Kleckner [Thu, 26 Feb 2015 00:33:41 +0000 (00:33 +0000)]
Silence unused variable warning in NDEBUG build

llvm-svn: 230590

9 years agoFix a [-Werror,-Wreorder] initialization ordering error.
Eric Christopher [Thu, 26 Feb 2015 00:29:54 +0000 (00:29 +0000)]
Fix a [-Werror,-Wreorder] initialization ordering error.

llvm-svn: 230589

9 years agodocs: Document CFI padding and all-ones optimizations. Link to viewvc.
Peter Collingbourne [Thu, 26 Feb 2015 00:18:04 +0000 (00:18 +0000)]
docs: Document CFI padding and all-ones optimizations. Link to viewvc.

llvm-svn: 230588

9 years agoAdd -fuse-line-directive flag to control usage of #line with -E
Reid Kleckner [Thu, 26 Feb 2015 00:17:25 +0000 (00:17 +0000)]
Add -fuse-line-directive flag to control usage of #line with -E

Currently -fms-extensions controls this behavior, which doesn't make
much sense. It means we can't identify what is and isn't a system header
when compiling our own preprocessed output, because #line doesn't
represent this information.

If someone is feeding Clang's preprocessed output to another compiler,
they can use this flag.

Fixes PR20553.

Reviewers: rsmith

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

llvm-svn: 230587

9 years agoRemove some unused includes of llvm/IR headers from parts of Clang that really
Richard Smith [Thu, 26 Feb 2015 00:01:03 +0000 (00:01 +0000)]
Remove some unused includes of llvm/IR headers from parts of Clang that really
shouldn't depend on LLVM IR.

llvm-svn: 230586

9 years agoRemove a FIXME.
Eric Christopher [Thu, 26 Feb 2015 00:00:35 +0000 (00:00 +0000)]
Remove a FIXME.

Explanation: This function is in TargetLowering because it uses
RegClassForVT which would need to be moved to TargetRegisterInfo
and would necessitate moving isTypeLegal over as well - a massive
change that would just require TargetLowering having a TargetRegisterInfo
class member that it would use.

llvm-svn: 230585

9 years agoFix a couple of depedent->dependent typos.
Eric Christopher [Thu, 26 Feb 2015 00:00:33 +0000 (00:00 +0000)]
Fix a couple of depedent->dependent typos.

llvm-svn: 230584

9 years agoRemove an argument-less call to getSubtargetImpl from TargetLoweringBase.
Eric Christopher [Thu, 26 Feb 2015 00:00:24 +0000 (00:00 +0000)]
Remove an argument-less call to getSubtargetImpl from TargetLoweringBase.
This required plumbing a TargetRegisterInfo through computeRegisterProperties
and into findRepresentativeClass which uses it for register class
iteration. This required passing a subtarget into a few target specific
initializations of TargetLowering.

llvm-svn: 230583

9 years agoMemDepPrinter: Fix some nits introduced in r228596
Ramkumar Ramachandra [Wed, 25 Feb 2015 23:55:00 +0000 (23:55 +0000)]
MemDepPrinter: Fix some nits introduced in r228596

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

llvm-svn: 230582

9 years ago[GC docs] More minor word tweaks to make the GC bits clearer
Philip Reames [Wed, 25 Feb 2015 23:52:06 +0000 (23:52 +0000)]
[GC docs] More minor word tweaks to make the GC bits clearer

llvm-svn: 230581

9 years agoImprovement on sized deallocation from r230160:
Larisse Voufo [Wed, 25 Feb 2015 23:48:43 +0000 (23:48 +0000)]
Improvement on sized deallocation from r230160:
Do not declare sized deallocation functions dependently on whether it is found in global scope. Instead, enforce the branching in emitted code by (1) declaring the functions extern_weak and (2) emitting sized delete expressions as a branching between both forms delete.

llvm-svn: 230580

9 years agoFix typo.
Larisse Voufo [Wed, 25 Feb 2015 23:48:35 +0000 (23:48 +0000)]
Fix typo.

llvm-svn: 230579

9 years agoRemove unused variables.
Michael J. Spencer [Wed, 25 Feb 2015 23:48:33 +0000 (23:48 +0000)]
Remove unused variables.

llvm-svn: 230578

9 years agoMove -fdefine-sized-deallocation and -fno-sized-deallocation options from driver...
Larisse Voufo [Wed, 25 Feb 2015 23:48:25 +0000 (23:48 +0000)]
Move -fdefine-sized-deallocation and -fno-sized-deallocation options from driver into CC1 for now.

llvm-svn: 230577

9 years ago[GC Docs] Update LangRef to link to Statepoint docs
Philip Reames [Wed, 25 Feb 2015 23:45:20 +0000 (23:45 +0000)]
[GC Docs] Update LangRef to link to Statepoint docs

Add a brief section linking to the experimental statepoint intrinsics analogous to the one we have linking to patchpoint.

While I'm here, cleanup some wording about what the gc "name" attribute actually means.  It's not the name of a *collector* it's the name of the *strategy* which may be compatible with multiple collectors.

llvm-svn: 230576

9 years ago[ELF][x86] Detemplatify ELFT. There's only a single valid instantiation.
Michael J. Spencer [Wed, 25 Feb 2015 23:27:13 +0000 (23:27 +0000)]
[ELF][x86] Detemplatify ELFT. There's only a single valid instantiation.

llvm-svn: 230574

9 years ago[asan] reenable odr-violation.cc test on non-x86-64 after confirming that it's fixed...
Kostya Serebryany [Wed, 25 Feb 2015 23:23:01 +0000 (23:23 +0000)]
[asan] reenable odr-violation.cc test on non-x86-64 after confirming that it's fixed. PR22699

llvm-svn: 230573

9 years ago[GC docs] Fill in description of the statepoint-example GC strategy
Philip Reames [Wed, 25 Feb 2015 23:22:43 +0000 (23:22 +0000)]
[GC docs] Fill in description of the statepoint-example GC strategy

llvm-svn: 230572

9 years agoUBSan: Use the correct function prologue for x32.
Peter Collingbourne [Wed, 25 Feb 2015 23:18:42 +0000 (23:18 +0000)]
UBSan: Use the correct function prologue for x32.

llvm-svn: 230571

9 years ago[GC Docs] Minor wording clarification
Philip Reames [Wed, 25 Feb 2015 23:07:34 +0000 (23:07 +0000)]
[GC Docs] Minor wording clarification

llvm-svn: 230570

9 years ago[CMake] Properly detect whether we're building runtime for i386 or i686.
Alexey Samsonov [Wed, 25 Feb 2015 23:07:32 +0000 (23:07 +0000)]
[CMake] Properly detect whether we're building runtime for i386 or i686.

llvm-svn: 230569

9 years agoMS ABI: Turn throw into std::terminate for now, make try/catch "work"
David Majnemer [Wed, 25 Feb 2015 23:01:21 +0000 (23:01 +0000)]
MS ABI: Turn throw into std::terminate for now, make try/catch "work"

This lets us compile programs which make use of exceptional constructs
statically without executing any of them dynamically.

llvm-svn: 230568

9 years agoObject: Handle Mach-O kext bundle files
Justin Bogner [Wed, 25 Feb 2015 22:59:20 +0000 (22:59 +0000)]
Object: Handle Mach-O kext bundle files

This particular subtype of Mach-O was missing. Add it.

llvm-svn: 230567

9 years agoInstrProf: Make the __llvm_profile_runtime_user symbol hidden
Justin Bogner [Wed, 25 Feb 2015 22:52:20 +0000 (22:52 +0000)]
InstrProf: Make the __llvm_profile_runtime_user symbol hidden

This symbol exists only to pull in the required pieces of the runtime,
so nothing ever needs to refer to it. Making it hidden avoids the
potential for issues with duplicate symbols when linking profiled
libraries together.

llvm-svn: 230566

9 years agoIR: Drop newline from AssemblyWriter::printMDNodeBody()
Duncan P. N. Exon Smith [Wed, 25 Feb 2015 22:46:38 +0000 (22:46 +0000)]
IR: Drop newline from AssemblyWriter::printMDNodeBody()

Remove a newline from `AssemblyWriter::printMDNodeBody()`, and add one
to `AssemblyWriter::writeMDNode()`.  NFCI for assembly output.

However, this drops an inconsistent newline from `Metadata::print()`
when `this` is an `MDNode`.  Now the newline added by `Metadata::dump()`
won't look so verbose.

llvm-svn: 230565

9 years agoonly propagate equality comparisons of FP values that we are certain are non-zero
Sanjay Patel [Wed, 25 Feb 2015 22:46:08 +0000 (22:46 +0000)]
only propagate equality comparisons of FP values that we are certain are non-zero

This is a follow-on to r227491 which tightens the check for propagating FP
values. If a non-constant value happens to be a zero, we would hit the same
bug as before.

Bug noted and patch suggested by Eli Friedman.

llvm-svn: 230564

9 years agoInstrProf: Remove dead code in CoverageMappingReader
Justin Bogner [Wed, 25 Feb 2015 22:44:50 +0000 (22:44 +0000)]
InstrProf: Remove dead code in CoverageMappingReader

Remove a default argument that's never passed and a constructor that's
never called.

llvm-svn: 230563

9 years agoOptimize finding the Complete Definition of an ObjC class for debug with .o files...
Greg Clayton [Wed, 25 Feb 2015 22:41:34 +0000 (22:41 +0000)]
Optimize finding the Complete Definition of an ObjC class for debug with .o files with lots of .o files.

When we have a debug map we have an executable with a bunch of STAB symbols and each source file has a N_SO symbol which scopes a bunch of symbols inside of it. We can use this to our advantage here when looking for the complete definition of an objective C class by looking for a symbol whose name matches the class name and whose type is eSymbolTypeObjCClass. If we find one, that symbol will be contained within a N_SO symbol. This symbol gets turned into a symbol whose type is eSymbolTypeSourceFile and that symbol will contain the eSymbolTypeObjCClass which helps us to locate the correct .o file and allows us to only look in that file.

To further accelerate things, if we are looking for the implementation, we can avoid looking at all .o files if we don't find a matching symbol because we have a debug map, which means the objective C symbol for the class can't have been stripped, so we can safely not search all remaining .o files. This will save us lots of time when trying to look for "NSObject" and any other AppKit and Foundation classes that we never have implementation definitions for.

<rdar://problem/19234225>

llvm-svn: 230562

9 years agoMove TargetLoweringBase::getTypeConversion to the .cpp file from
Eric Christopher [Wed, 25 Feb 2015 22:41:30 +0000 (22:41 +0000)]
Move TargetLoweringBase::getTypeConversion to the .cpp file from
the .h file. It's used in only one place (other than recursively)
and there's no need to include it everywhere.

Saves almost 900k from total llvm object file size.

llvm-svn: 230561

9 years agoInstCombine: extract instead of shuffle when performing vector/array type punning
JF Bastien [Wed, 25 Feb 2015 22:30:51 +0000 (22:30 +0000)]
InstCombine: extract instead of shuffle when performing vector/array type punning

Summary: SROA generates code that isn't quite as easy to optimize and contains unusual-sized shuffles, but that code is generally correct. As discussed in D7487 the right place to clean things up is InstCombine, which will pick up the type-punning pattern and transform it into a more obvious bitcast+extractelement, while leaving the other patterns SROA encounters as-is.

Test Plan: make check

Reviewers: jvoung, chandlerc

Subscribers: llvm-commits
llvm-svn: 230560

9 years ago[dwarfdump] Fix frame info register number dump.
Frederic Riss [Wed, 25 Feb 2015 22:30:09 +0000 (22:30 +0000)]
[dwarfdump] Fix frame info register number dump.

llvm-svn: 230559

9 years ago[modules] Even if we already have a definition of a class, loading in another
Richard Smith [Wed, 25 Feb 2015 22:20:13 +0000 (22:20 +0000)]
[modules] Even if we already have a definition of a class, loading in another
one can give us more lookup results (due to implicit special members). Be sure
to complete the redecl chain for every kind of DeclContext before performing a
lookup into it, rather than only doing so for NamespaceDecls.

llvm-svn: 230558

9 years agolibc++: support newlib's ctype
JF Bastien [Wed, 25 Feb 2015 22:16:46 +0000 (22:16 +0000)]
libc++: support newlib's ctype

Summary: Newlib supports ctype differently from other platforms, this patch teaches libc++ about yet another platform that does ctype differently.

Reviewers: jroelofs

Subscribers: cfe-commits, danalbert, EricWF, jvoung, jfb, mclow.lists

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

llvm-svn: 230557

9 years agoAdd qModuleInfo request in order to get module information (uuid, triple,..) by modul...
Oleksiy Vyalov [Wed, 25 Feb 2015 22:15:44 +0000 (22:15 +0000)]
Add qModuleInfo request in order to get module information (uuid, triple,..) by module path from remote platform.

http://reviews.llvm.org/D7709

llvm-svn: 230556

9 years agoIR: Annotate dump methods with LLVM_DUMP_METHOD
Duncan P. N. Exon Smith [Wed, 25 Feb 2015 22:08:21 +0000 (22:08 +0000)]
IR: Annotate dump methods with LLVM_DUMP_METHOD

It turns out we have a macro to ensure that debuggers can access
`dump()` methods.  Use it.  Hopefully this will prevent me (and others)
from committing crimes like in r223802 (search for /10000/, or just see
the fix in r224407).

llvm-svn: 230555

9 years agoTry to appease buildbots.
Frederic Riss [Wed, 25 Feb 2015 22:07:43 +0000 (22:07 +0000)]
Try to appease buildbots.

It seems ArrayRefs to multi-dimensional arrays confuse some compilers.

llvm-svn: 230554

9 years ago[PowerPC] Make LDtocL and friends invariant loads
Hal Finkel [Wed, 25 Feb 2015 21:36:59 +0000 (21:36 +0000)]
[PowerPC] Make LDtocL and friends invariant loads

LDtocL, and other loads that roughly correspond to the TOC_ENTRY SDAG node,
represent loads from the TOC, which is invariant. As a result, these loads can
be hoisted out of loops, etc. In order to do this, we need to generate
GOT-style MMOs for TOC_ENTRY, which requires treating it as a legitimate memory
intrinsic node type. Once this is done, the MMO transfer is automatically
handled for TableGen-driven instruction selection, and for nodes generated
directly in PPCISelDAGToDAG, we need to transfer the MMOs manually.

Also, we were not transferring MMOs associated with pre-increment loads, so do
that too.

Lastly, this fixes an exposed bug where R30 was not added as a defined operand of
UpdateGBR.

This problem was highlighted by an example (used to generate the test case)
posted to llvmdev by Francois Pichet.

llvm-svn: 230553

9 years agoAdd the IMPACT2015 publications
Johannes Doerfert [Wed, 25 Feb 2015 21:31:38 +0000 (21:31 +0000)]
Add the IMPACT2015 publications

  It is important we add more publications with/about Polly so people
  can see that work and research is actually ongoing.

llvm-svn: 230552

9 years ago[dwarfdump] Make debug_frame dump actually useful.
Frederic Riss [Wed, 25 Feb 2015 21:30:22 +0000 (21:30 +0000)]
[dwarfdump] Make debug_frame dump actually useful.

This adds support for pretty-printing instruction operands. The new
output looks like:

00000000 00000010 ffffffff CIE
  Version:               1
  Augmentation:
  Code alignment factor: 1
  Data alignment factor: -4
  Return address column: 8

  DW_CFA_def_cfa:  reg4 +4
  DW_CFA_offset:  reg8 -4
  DW_CFA_nop:
  DW_CFA_nop:

00000014 00000010 00000000 FDE cie=00000000 pc=00000000...00000022
  DW_CFA_advance_loc:  3
  DW_CFA_def_cfa_offset:  +12
  DW_CFA_nop:

llvm-svn: 230551

9 years ago[dwarfdump] Don't print meaningless pointer.
Frederic Riss [Wed, 25 Feb 2015 21:30:19 +0000 (21:30 +0000)]
[dwarfdump] Don't print meaningless pointer.

CIE pointers were never filled in before, and printing the pointer
is totally pointless anyway.

llvm-svn: 230550

9 years agoDWARFDebugFrame: Move some code around. NFC.
Frederic Riss [Wed, 25 Feb 2015 21:30:16 +0000 (21:30 +0000)]
DWARFDebugFrame: Move some code around. NFC.

Move the FrameEntry::dumpInstructions down in the file at some
place where it can see the declarations of FDE and CIE.

llvm-svn: 230549

9 years agoDWARFDebugFrame: Add some trivial accessors. NFC.
Frederic Riss [Wed, 25 Feb 2015 21:30:13 +0000 (21:30 +0000)]
DWARFDebugFrame: Add some trivial accessors. NFC.

To be used for dumping.

llvm-svn: 230548

9 years agoDWARFDebugFrame: Actually collect CIEs associated with FDEs.
Frederic Riss [Wed, 25 Feb 2015 21:30:09 +0000 (21:30 +0000)]
DWARFDebugFrame: Actually collect CIEs associated with FDEs.

This is the first commit in a small series aiming at making
debug_frame dump more useful (right now it prints a list of
opeartions without their operands).

llvm-svn: 230547

9 years agoAdd myself to the contributors of Polly
Johannes Doerfert [Wed, 25 Feb 2015 21:26:03 +0000 (21:26 +0000)]
Add myself to the contributors of Polly

llvm-svn: 230546

9 years agoAdd non-affine subregions to the TODO list
Johannes Doerfert [Wed, 25 Feb 2015 21:20:57 +0000 (21:20 +0000)]
Add non-affine subregions to the TODO list

llvm-svn: 230545

9 years ago[LTO API] fix memory leakage introduced at r230290.
Manman Ren [Wed, 25 Feb 2015 21:20:53 +0000 (21:20 +0000)]
[LTO API] fix memory leakage introduced at r230290.

r230290 released the LLVM module but not the LTOModule.

rdar://19024554

llvm-svn: 230544

9 years agoX86, Win64: Allow 'mov' to restore the stack pointer if we have a FP
David Majnemer [Wed, 25 Feb 2015 21:13:37 +0000 (21:13 +0000)]
X86, Win64: Allow 'mov' to restore the stack pointer if we have a FP

The Win64 epilogue structure is very restrictive, it permits a very
small number of opcodes and none of them are 'mov'.

This means that given:
  mov %rbp, %rsp
  pop %rbp

The mov isn't the epilogue, only the pop is.  This is problematic unless
a frame pointer is present in which case we are free to do whatever we'd
like in the "body" of the function.  If a frame pointer is present,
unwinding will undo the prologue operations in reverse order regardless
of the fact that we are at an instruction which is reseting the stack
pointer.

llvm-svn: 230543

9 years ago[Orc][Kaleidoscope] Clean up the Orc/Kaleidoscope tutorials to minimize the diffs
Lang Hames [Wed, 25 Feb 2015 20:58:28 +0000 (20:58 +0000)]
[Orc][Kaleidoscope] Clean up the Orc/Kaleidoscope tutorials to minimize the diffs
between them.

llvm-svn: 230542

9 years agoFix >80 line after r230530.
Kuba Brecka [Wed, 25 Feb 2015 20:56:04 +0000 (20:56 +0000)]
Fix >80 line after r230530.

llvm-svn: 230541

9 years agoLowerBitSets: Align referenced globals.
Peter Collingbourne [Wed, 25 Feb 2015 20:42:41 +0000 (20:42 +0000)]
LowerBitSets: Align referenced globals.

This change aligns globals to the next highest power of 2 bytes, up to a
maximum of 128. This makes it more likely that we will be able to compress
bit sets with a greater alignment. In many more cases, we can now take
advantage of a new optimization also introduced in this patch that removes
bit set checks if the bit set is all ones.

The 128 byte maximum was found to provide the best tradeoff between instruction
overhead and data overhead in a recent build of Chromium. It allows us to
remove ~2.4MB of instructions at the cost of ~250KB of data.

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

llvm-svn: 230540

9 years ago[CMake] Fix the clang-cl self host build.
Zachary Turner [Wed, 25 Feb 2015 20:42:19 +0000 (20:42 +0000)]
[CMake] Fix the clang-cl self host build.

This allows clang-cl to self-host cleanly with no magic setup
steps required.

After this patch, all you have to do is set CC=CXX=clang-cl and
run cmake -G Ninja.

These changes only exist to support C++ features which are
unsupported in clang-cl, so regardless of whether the user
specifies they want to use them, we still have to disable them.

llvm-svn: 230539

9 years agoRemove non-existent file from module map.
Richard Smith [Wed, 25 Feb 2015 20:20:39 +0000 (20:20 +0000)]
Remove non-existent file from module map.

llvm-svn: 230538

9 years ago[asan] restict no_asan_gen_globals.c test to 64-bit due to PR22682
Kostya Serebryany [Wed, 25 Feb 2015 20:19:23 +0000 (20:19 +0000)]
[asan] restict no_asan_gen_globals.c test to 64-bit due to PR22682

llvm-svn: 230537

9 years agoCFI: Add a check-cfi-and-supported rule.
Peter Collingbourne [Wed, 25 Feb 2015 20:14:05 +0000 (20:14 +0000)]
CFI: Add a check-cfi-and-supported rule.

This rule works like check-cfi, but fails if the tests are unsupported.
This is useful to run on bots if we want to be sure that the tests aren't
silently being skipped.

llvm-svn: 230536

9 years agoFixing a problem with insert location in WinEH outlining
Andrew Kaylor [Wed, 25 Feb 2015 20:12:49 +0000 (20:12 +0000)]
Fixing a problem with insert location in WinEH outlining

llvm-svn: 230535

9 years agoAllow (Object *)kMyGlobalCFObj casts without bridging
Ben Langmuir [Wed, 25 Feb 2015 20:09:06 +0000 (20:09 +0000)]
Allow (Object *)kMyGlobalCFObj casts without bridging

Previously we allowed these casts only for constants declared in system
headers, which we assume are retain/release-neutral. Now also allow them
for constants in user headers, treating them as +0.  Practically, this
means that we will now allow:
id x = (id)kMyGlobalConst;

But unlike with system headers we cannot mix them with +1 values:
id y = (id)(b ? kMyGlobalConst : [Obj newValAtPlusOne]); // error
id z = (id)(b ? kSystemGlobalConst: [Obj newValAtPlusOne]); // OK

Thanks to John for suggesting this improvement.

llvm-svn: 230534

9 years agoBugfix: SCEVExpander incorrectly marks increment operations as no-wrap
Sanjoy Das [Wed, 25 Feb 2015 20:02:59 +0000 (20:02 +0000)]
Bugfix: SCEVExpander incorrectly marks increment operations as no-wrap

(The change was landed in r230280 and caused the regression PR22674.
This version contains a fix and a test-case for PR22674).

When emitting the increment operation, SCEVExpander marks the
operation as nuw or nsw based on the flags on the preincrement SCEV.
This is incorrect because, for instance, it is possible that {-6,+,1}
is <nuw> while {-6,+,1}+1 = {-5,+,1} is not.

This change teaches SCEV to mark the increment as nuw/nsw only if it
can explicitly prove that the increment operation won't overflow.

Apart from the attached test case, another (more realistic)
manifestation of the bug can be seen in
Transforms/IndVarSimplify/pr20680.ll.

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

llvm-svn: 230533

9 years agoAdd missing #include found by modules buildbot.
Richard Smith [Wed, 25 Feb 2015 19:55:49 +0000 (19:55 +0000)]
Add missing #include found by modules buildbot.

llvm-svn: 230532

9 years agoRevert "Fix warnings found with clang-cl."
Zachary Turner [Wed, 25 Feb 2015 19:52:41 +0000 (19:52 +0000)]
Revert "Fix warnings found with clang-cl."

SWIG doesn't like enum : unsigned.  Revert this until I can
fix this in a way that swig likes.

llvm-svn: 230531

9 years ago[compiler-rt] Symbolizer refactoring: Move SymbolizerProcess interface to header
Kuba Brecka [Wed, 25 Feb 2015 19:50:38 +0000 (19:50 +0000)]
[compiler-rt] Symbolizer refactoring: Move SymbolizerProcess interface to header

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

llvm-svn: 230530

9 years ago[compiler-rt] Symbolizer refactoring: Move string parsing into separate functions
Kuba Brecka [Wed, 25 Feb 2015 19:35:08 +0000 (19:35 +0000)]
[compiler-rt] Symbolizer refactoring: Move string parsing into separate functions

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

llvm-svn: 230529

9 years agoUpdate isl to 0980603 'isl_tab_pip.c: parallel_constraints: drop useless assignment'
Tobias Grosser [Wed, 25 Feb 2015 19:34:52 +0000 (19:34 +0000)]
Update isl to 0980603 'isl_tab_pip.c: parallel_constraints: drop useless assignment'

This update contains:

  - Fixes of minor issues detected by clang's scan_build
  - More schedule tree infrastructure additions

This update slightly changes the output of our dependence analysis, but these
changes are purely syntactially.

llvm-svn: 230528

9 years agoclang-cl: Ignore /Fd silently
Reid Kleckner [Wed, 25 Feb 2015 19:17:50 +0000 (19:17 +0000)]
clang-cl: Ignore /Fd silently

While it's true that we don't create the PDB as requested on the command
line, this is a well-documented limitation. Warning about it doesn't
help people using legacy build systems with clang-cl, and it makes the
clang-cl self-host very noisy.

llvm-svn: 230527

9 years agoReland (2x) r230314, "Fix codegen for virtual methods that are (re-) exported from...
Reid Kleckner [Wed, 25 Feb 2015 19:17:48 +0000 (19:17 +0000)]
Reland (2x) r230314, "Fix codegen for virtual methods that are (re-) exported from multiple modules."

This reverts commits r230477 and r230478.

llvm-svn: 230526

9 years agoReland r230446, "MS ABI: Try to respect external AST source record layouts"
Reid Kleckner [Wed, 25 Feb 2015 19:17:45 +0000 (19:17 +0000)]
Reland r230446, "MS ABI: Try to respect external AST source record layouts"

It broke test/PCH/headersearch.cpp because it was using -Wpadding, which
only works for Itanium layout. Before this commit, we would use Itanium
record layout when using PCH, which is crazy. Now that the test uses an
explicit Itanium triple, we can reland.

llvm-svn: 230525