platform/upstream/llvm.git
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

9 years agoUse Itanium triple in test using -Wpadding
Reid Kleckner [Wed, 25 Feb 2015 19:04:51 +0000 (19:04 +0000)]
Use Itanium triple in test using -Wpadding

-Wpadding is not implemented in the Microsoft record layout builder.
This test only passes on Windows because PCH forces us to use the
Itanium record layout builder. I'm about to fix that, so change the
test to not rely on that ridiculous behavior.

llvm-svn: 230524

9 years agoSolve hang on Windows when lldb fails to launch the process.
Zachary Turner [Wed, 25 Feb 2015 18:56:47 +0000 (18:56 +0000)]
Solve hang on Windows when lldb fails to launch the process.

The DebuggerThread was detecting the launch error, but it was
ignored by ProcessWindows::DoLaunch, causing LLDB to wait forever
in the debugger loop.

This fixes the test case that explicitly attempts to launch a
process from a non-existant path.

Patch by Adrian McCarthy
Differential Revision: http://reviews.llvm.org/D7874

llvm-svn: 230523

9 years agoFix warnings found with clang-cl.
Zachary Turner [Wed, 25 Feb 2015 18:42:47 +0000 (18:42 +0000)]
Fix warnings found with clang-cl.

Earlier this week I was able to get clang-cl on Windows to be
able to self host.  This opened the door to being able to
get a whole new slew of warnings for the Windows build.

This patch fixes all of the warnings, many of which were real
bugs.

llvm-svn: 230522

9 years agoRemoved all header files for OpenMP 2.5
Andrey Churbanov [Wed, 25 Feb 2015 18:38:08 +0000 (18:38 +0000)]
Removed all header files for OpenMP 2.5

llvm-svn: 230521

9 years agoExport the common header files to exports/ with CMake
Andrey Churbanov [Wed, 25 Feb 2015 18:32:30 +0000 (18:32 +0000)]
Export the common header files to exports/ with CMake

llvm-svn: 230520

9 years agoSet the Intel compiler as default when building for the MIC without CMake
Andrey Churbanov [Wed, 25 Feb 2015 18:30:50 +0000 (18:30 +0000)]
Set the Intel compiler as default when building for the MIC without CMake

llvm-svn: 230519

9 years ago[PowerPC] Cleanup unused target-specific SDAG nodes
Hal Finkel [Wed, 25 Feb 2015 18:06:45 +0000 (18:06 +0000)]
[PowerPC] Cleanup unused target-specific SDAG nodes

We had somehow accumulated a few target-specific SDAG nodes dealing with PPC64
TOC access that were referenced only in TableGen patterns. The associated
(pseudo-)instructions are used, but are being generated directly. NFC.

llvm-svn: 230518

9 years agoAArch64: Add debug message for large shift constants.
Matthias Braun [Wed, 25 Feb 2015 18:03:50 +0000 (18:03 +0000)]
AArch64: Add debug message for large shift constants.

As requested in code review.

llvm-svn: 230517

9 years ago[asan] temporary disable the test on non-x86-64 while we are investigating PR22699
Kostya Serebryany [Wed, 25 Feb 2015 18:03:03 +0000 (18:03 +0000)]
[asan] temporary disable the test on non-x86-64 while we are investigating PR22699

llvm-svn: 230516

9 years agoFix really obscure bug in CannotBeNegativeZero() (PR22688)
Sanjay Patel [Wed, 25 Feb 2015 18:00:15 +0000 (18:00 +0000)]
Fix really obscure bug in CannotBeNegativeZero() (PR22688)

With a diabolically crafted test case, we could recurse
through this code and return true instead of false.

The larger engineering crime is the use of magic numbers.
Added FIXME comments for those.

llvm-svn: 230515

9 years agoMake __leave test pass in -Asserts builds.
Nico Weber [Wed, 25 Feb 2015 17:44:04 +0000 (17:44 +0000)]
Make __leave test pass in -Asserts builds.

llvm-svn: 230514

9 years agoUpdate for clang r230512
David Majnemer [Wed, 25 Feb 2015 17:36:49 +0000 (17:36 +0000)]
Update for clang r230512

llvm-svn: 230513

9 years agoSema: Parenthesized bound destructor member expressions can be called
David Majnemer [Wed, 25 Feb 2015 17:36:15 +0000 (17:36 +0000)]
Sema: Parenthesized bound destructor member expressions can be called

We would wrongfully reject (a.~A)() in both the destructor and
pseudo-destructor cases.

This fixes PR22668.

llvm-svn: 230512

9 years agofix a typo
Chris Lattner [Wed, 25 Feb 2015 17:28:41 +0000 (17:28 +0000)]
fix a typo

llvm-svn: 230510

9 years agoMacOSX symbol table change to combine the N_GSYM debug map entry with the "_OBJC_CLAS...
Greg Clayton [Wed, 25 Feb 2015 17:25:02 +0000 (17:25 +0000)]
MacOSX symbol table change to combine the N_GSYM debug map entry with the "_OBJC_CLASS_$_", "_OBJC_METACLASS_$_", and "_OBJC_IVAR_$_" non debug symbols. This allows the symbol that represents the object file to contain the eSymbolTypeObjCClass and eSymbolTypeObjCMetaClass and will help us to be able to efficiently lookup the real definition of an objective C class without loading all .o files linearly to find the .o file that contains the true definition.

llvm-svn: 230509