platform/upstream/llvm.git
10 years agoMC: Correct comment in ExportSymbol
David Majnemer [Fri, 4 Jul 2014 23:20:46 +0000 (23:20 +0000)]
MC: Correct comment in ExportSymbol

No functionality changed, just make it so that the code _could_ be
uncommented.

llvm-svn: 212363

10 years agoMC: Cleanup COFFAsmParser::ParseSectionFlags
David Majnemer [Fri, 4 Jul 2014 23:15:28 +0000 (23:15 +0000)]
MC: Cleanup COFFAsmParser::ParseSectionFlags

Switch a normal for-loop to a range-based for. No functionality changed.

llvm-svn: 212362

10 years agoMake RecordStreamer.h private.
Rafael Espindola [Fri, 4 Jul 2014 22:44:18 +0000 (22:44 +0000)]
Make RecordStreamer.h private.

llvm-svn: 212361

10 years agoIR: Fold away compares between GV GEPs and GVs
David Majnemer [Fri, 4 Jul 2014 22:05:26 +0000 (22:05 +0000)]
IR: Fold away compares between GV GEPs and GVs

A GEP of a non-weak global variable will not be equivalent to another
non-weak global variable or a GEP of such a variable.

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

llvm-svn: 212360

10 years agoCodeGen: add support for MSBuiltin aliases
Saleem Abdulrasool [Fri, 4 Jul 2014 21:49:39 +0000 (21:49 +0000)]
CodeGen: add support for MSBuiltin aliases

This completes the infrastructure for the new MSBuiltin aliases in the
instruction definitions.  These behave similar to the GCCBuiltin in that they
can be implicitly constructed without special handling unless needed.

With this change it is possible to annotate an LLVM intrinsic in the backend
instruction definitions and indicate it as a builtin in the Builtin*.def files
in clang via LANGBUILTIN.  That will automatically pass through the instruction
much as a GCCBuiltin.

Note that there is no need for the special handling for ensuring that the
compatibility flag is enabled since the filtering on the LANGBUILTIN will
automatically prevent the intrinsic from bleeding into non-MS compatible
compiler invocations.

llvm-svn: 212359

10 years agoPrune some ignored warning options
Alp Toker [Fri, 4 Jul 2014 20:42:50 +0000 (20:42 +0000)]
Prune some ignored warning options

These are forms that have either slipped in without being requested for
compatibility or that GCC doesn't support in the first place.

llvm-svn: 212358

10 years agoFix a bug in the conversion to ErrorOr.
Rafael Espindola [Fri, 4 Jul 2014 20:05:56 +0000 (20:05 +0000)]
Fix a bug in the conversion to ErrorOr.

The regular end of the bitcode parsing is in the  BitstreamEntry::EndBlock
case.

Should fix the LTO bootstrap on OS X (this function is only used by ld64).

llvm-svn: 212357

10 years agoRevert "Convert a few std::strings to StringRef."
Rafael Espindola [Fri, 4 Jul 2014 20:02:42 +0000 (20:02 +0000)]
Revert "Convert a few std::strings to StringRef."

This reverts commit r212342.

We can get a StringRef into the current Record, but not one in the bitcode
itself since the string is compressed in it.

llvm-svn: 212356

10 years agofixed typos
Sanjay Patel [Fri, 4 Jul 2014 19:40:43 +0000 (19:40 +0000)]
fixed typos

llvm-svn: 212355

10 years agoIgnore llvm specific symbols in the LTOModule.
Rafael Espindola [Fri, 4 Jul 2014 19:31:27 +0000 (19:31 +0000)]
Ignore llvm specific symbols in the LTOModule.

These are the llvm.* globals and functions.

I don't think it is possible to test this directly since llvm-lto is not
a full linker and will not report duplicated symbols, but this fixes
bootstrap with gold and lto enabled.

llvm-svn: 212354

10 years agoFix up the test that expects the failure fixed in r212352
Ehsan Akhgari [Fri, 4 Jul 2014 19:22:29 +0000 (19:22 +0000)]
Fix up the test that expects the failure fixed in r212352

llvm-svn: 212353

10 years agoAdd support for parsing the not operator in Microsoft inline assembly
Ehsan Akhgari [Fri, 4 Jul 2014 19:13:05 +0000 (19:13 +0000)]
Add support for parsing the not operator in Microsoft inline assembly

This fixes http://llvm.org/PR20202

llvm-svn: 212352

10 years agoIgnore llvm.* globals.
Rafael Espindola [Fri, 4 Jul 2014 19:08:22 +0000 (19:08 +0000)]
Ignore llvm.* globals.

It is not clear if llvm.global_ctors should or should not be in llvm.metadata,
but in practice it is not and we need to ignore it for LTO.

llvm-svn: 212351

10 years agoTableGen: introduce support for MSBuiltin
Saleem Abdulrasool [Fri, 4 Jul 2014 18:42:25 +0000 (18:42 +0000)]
TableGen: introduce support for MSBuiltin

Add MSBuiltin which is similar in vein to GCCBuiltin.  This allows for adding
intrinsics for Microsoft compatibility to individual instructions.  This is
needed to permit the creation of ARM specific MSVC extensions.

This is not currently in use, and requires an associated change in clang to
enable use of the intrinsics defined by this new class.  This merely sets the
LLVM portion of the infrastructure in place to permit the use of this
functionality.  A separate set of changes will enable the new intrinsics.

llvm-svn: 212350

10 years agoImplement LTOModule on top of IRObjectFile.
Rafael Espindola [Fri, 4 Jul 2014 18:40:36 +0000 (18:40 +0000)]
Implement LTOModule on top of IRObjectFile.

IRObjectFile provides all the logic for producing mangled names and getting
symbols from inline assembly.

LTOModule then adds logic for linking specific tasks, like constructing
llvm.compiler_user or extracting linker options from the bitcode.

The rule of the thumb is that IRObjectFile has the functionality that is
needed by both LTO and llvm-ar.

llvm-svn: 212349

10 years agoAvoid mangling names twice. No functionality change.
Rafael Espindola [Fri, 4 Jul 2014 16:37:02 +0000 (16:37 +0000)]
Avoid mangling names twice. No functionality change.

llvm-svn: 212348

10 years agoMark intrinsic functions as llvm-specific.
Rafael Espindola [Fri, 4 Jul 2014 15:58:00 +0000 (15:58 +0000)]
Mark intrinsic functions as llvm-specific.

llvm-svn: 212347

10 years ago[mips][mips64r6] Set ELF e_flags for MIPS32r6/MIPS64r6. Also do MIPS-I to MIPS-V
Daniel Sanders [Fri, 4 Jul 2014 15:21:53 +0000 (15:21 +0000)]
[mips][mips64r6] Set ELF e_flags for MIPS32r6/MIPS64r6. Also do MIPS-I to MIPS-V

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

llvm-svn: 212346

10 years ago[mips] Add tests for the 'ret', 'call', and 'indirectbr' LLVM IR instruction.
Daniel Sanders [Fri, 4 Jul 2014 15:16:14 +0000 (15:16 +0000)]
[mips] Add tests for the 'ret', 'call', and 'indirectbr' LLVM IR instruction.

Summary:
The tests in this directory are intended to test a single IR instruction
with as few dependencies on other instructions as possible. The aim is to
be very confident that each LLVM-IR instruction is implemented correctly and
with the optimal sequence of instructions, as well as to make it easy to tell
what is tested, and make it easier to bring up new ISA revisions in the
future. This gives us a good foundation on which to test bigger things.

These particular tests will allow testing that MIPS32r6/MIPS64r6 generate
the correct return instruction for returns, calls, and indirect branches.
This will be a bit tricky since the assembly text is identical but the
instruction is actually different. On MIPS32r6/MIPS64r6 'jr $rs' has been
removed in favour of the equivalent 'jalr $zero, $rs'. 'jr $rs' remains as
an alias for 'jalr $zero, $rs'.

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

llvm-svn: 212345

10 years agoDon't include llvm.metadata variables in archive symbol tables.
Rafael Espindola [Fri, 4 Jul 2014 15:03:17 +0000 (15:03 +0000)]
Don't include llvm.metadata variables in archive symbol tables.

llvm-svn: 212344

10 years agoChange LTOModule`s getTargetTriple and setTargetTriple to use c++ types.
Rafael Espindola [Fri, 4 Jul 2014 14:19:41 +0000 (14:19 +0000)]
Change LTOModule`s getTargetTriple and setTargetTriple to use c++ types.

llvm-svn: 212343

10 years agoConvert a few std::strings to StringRef.
Rafael Espindola [Fri, 4 Jul 2014 14:12:46 +0000 (14:12 +0000)]
Convert a few std::strings to StringRef.

llvm-svn: 212342

10 years agoConvert these functions to use ErrorOr.
Rafael Espindola [Fri, 4 Jul 2014 13:52:01 +0000 (13:52 +0000)]
Convert these functions to use ErrorOr.

llvm-svn: 212341

10 years agoRemove unused old-style error handling.
Rafael Espindola [Fri, 4 Jul 2014 13:30:13 +0000 (13:30 +0000)]
Remove unused old-style error handling.

If needed, an ErrorOr should be used.

llvm-svn: 212340

10 years ago[Driver][Mips] Support one more MIPS CPU name - octeon.
Simon Atanasyan [Fri, 4 Jul 2014 12:37:04 +0000 (12:37 +0000)]
[Driver][Mips] Support one more MIPS CPU name - octeon.

llvm-svn: 212339

10 years ago[Driver][Mips] Support more MIPS CPU names: mips1 - mips5.
Simon Atanasyan [Fri, 4 Jul 2014 12:36:56 +0000 (12:36 +0000)]
[Driver][Mips] Support more MIPS CPU names: mips1 - mips5.

llvm-svn: 212338

10 years agoGlobalDCE: Delete available_externally initializers if it allows removing the value...
Benjamin Kramer [Fri, 4 Jul 2014 12:36:05 +0000 (12:36 +0000)]
GlobalDCE: Delete available_externally initializers if it allows removing the value the initializer is referring to.

This is useful for functions that are not actually available externally but
referenced by a vtable of some kind. Clang emits functions like this for the MS
ABI.

PR20182.

llvm-svn: 212337

10 years agoRemove redundant "Standard: Cpp11" tag. The LLVM style has used the
Simon Atanasyan [Fri, 4 Jul 2014 12:08:03 +0000 (12:08 +0000)]
Remove redundant "Standard: Cpp11" tag. The LLVM style has used the
Cpp11 standard since r202637.

llvm-svn: 212336

10 years agollvm/test/CodeGen/XCore/dwarf_debug.ll: Fix not to be affected by *-win32.
NAKAMURA Takumi [Fri, 4 Jul 2014 11:58:03 +0000 (11:58 +0000)]
llvm/test/CodeGen/XCore/dwarf_debug.ll: Fix not to be affected by *-win32.

llvm-svn: 212335

10 years agollvm/test/CodeGen/X86/vector-gep.ll: Appease to add -mtriple=i686-linux.
NAKAMURA Takumi [Fri, 4 Jul 2014 11:55:40 +0000 (11:55 +0000)]
llvm/test/CodeGen/X86/vector-gep.ll: Appease to add -mtriple=i686-linux.

This doesn't pass if stack alignment is not 16, like cygming, *bsd.

llvm-svn: 212334

10 years agoARM: when falling back to scattered relocs, keep the type.
Tim Northover [Fri, 4 Jul 2014 10:58:05 +0000 (10:58 +0000)]
ARM: when falling back to scattered relocs, keep the type.

The linker relies on relocation type info (e.g. is it a branch?) to perform the
correct actions, so we should keep that even when we end up using a scattered
relocation for whatever reason.

rdar://problem/17553104

llvm-svn: 212333

10 years agollvm-readobj: fix MachO relocatoin printing a bit.
Tim Northover [Fri, 4 Jul 2014 10:57:56 +0000 (10:57 +0000)]
llvm-readobj: fix MachO relocatoin printing a bit.

There were two issues here:
1. At the very least, scattered relocations cannot use the same code to
   determine the corresponding symbol being referred to. For some reason we
   pretend there is no symbol, even when one actually exists in the symtab, so to
   match this behaviour getRelocationSymbol should simply return symbols_end for
   scattered relocations.
2. Printing "-" when we can't get a symbol (including the scattered case, but
   not exclusively), isn't that helpful. In both cases there *is* interesting
   information in that field, so we should print it. As hex will do.

Small part of rdar://problem/17553104

llvm-svn: 212332

10 years agoInstCombine: Strength reduce sadd.with.overflow into a regular nsw add if we can...
Benjamin Kramer [Fri, 4 Jul 2014 10:22:21 +0000 (10:22 +0000)]
InstCombine: Strength reduce sadd.with.overflow into a regular nsw add if we can prove that it cannot overflow.

PR20194

llvm-svn: 212331

10 years ago[mips][mips64r6] Correct the encoding of dmuh, dmuhu, dmul, and dmulu.
Daniel Sanders [Fri, 4 Jul 2014 10:08:27 +0000 (10:08 +0000)]
[mips][mips64r6] Correct the encoding of dmuh, dmuhu, dmul, and dmulu.

We have detected a documentation bug in the encoding tables of the released
MIPS64r6 specification that has resulted in the wrong encodings being used for
these instructions in LLVM. This commit corrects them.

llvm-svn: 212330

10 years ago[msan] Reformat one source file.
Evgeniy Stepanov [Fri, 4 Jul 2014 10:07:39 +0000 (10:07 +0000)]
[msan] Reformat one source file.

llvm-svn: 212329

10 years agoPhabricator doc: Explicit the fact that the patch needs to be there before the commit
Sylvestre Ledru [Fri, 4 Jul 2014 09:00:35 +0000 (09:00 +0000)]
Phabricator doc: Explicit the fact that the patch needs to be there before the commit

llvm-svn: 212328

10 years agogcc comptability: silent -fdefer-pop & -fno-defer-pop
Sylvestre Ledru [Fri, 4 Jul 2014 08:59:41 +0000 (08:59 +0000)]
gcc comptability: silent -fdefer-pop & -fno-defer-pop

Reviewers: rafael, rnk

Reviewed By: rnk

Subscribers: rnk, cfe-commits

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

llvm-svn: 212327

10 years ago[x86] Relax the line in this check to pacify build bots.
Chandler Carruth [Fri, 4 Jul 2014 08:39:30 +0000 (08:39 +0000)]
[x86] Relax the line in this check to pacify build bots.

I still don't love testing the comments, but its the only sane way to
check shuffle instructions...

llvm-svn: 212326

10 years ago[x86] Move some check lines to be slightly easier for me to find.
Chandler Carruth [Fri, 4 Jul 2014 08:19:37 +0000 (08:19 +0000)]
[x86] Move some check lines to be slightly easier for me to find.

(meant to put this cleanup in the previous patch, sorry)

llvm-svn: 212325

10 years ago[x86] Generalize BuildVectorSDNode::getConstantSplatValue to work for
Chandler Carruth [Fri, 4 Jul 2014 08:11:49 +0000 (08:11 +0000)]
[x86] Generalize BuildVectorSDNode::getConstantSplatValue to work for
any constant, constant FP, or undef splat and to tolerate any undef
lanes in a splat, then replace all uses of isSplatVector in X86's
lowering with it.

This fixes issues where undef lanes in an otherwise splat vector would
prevent the splat logic from firing. It is a touch more awkward to use
this interface, but it is much more accurate. Suggestions for better
interface structuring welcome.

With this fix, the code generated with the widening legalization
strategy for widen_cast-4.ll is *dramatically* improved as the special
lowering strategies for a v16i8 SRA kick in even though the high lanes
are undef.

We also get a slightly different choice for broadcasting an aligned
memory location, and use vpshufd instead of vbroadcastss. This looks
like a minor win for pipelining and domain crossing, but a minor loss
for the number of micro-ops. I suspect its a wash, but folks can easily
tweak the lowering if they want.

llvm-svn: 212324

10 years agoAdd an explicit bool operator to SDValue to make it easier to test for
Chandler Carruth [Fri, 4 Jul 2014 08:11:38 +0000 (08:11 +0000)]
Add an explicit bool operator to SDValue to make it easier to test for
a non-null node. In particular, this makes it easier to use condition
variables with SDValues, etc.

llvm-svn: 212323

10 years ago[sanitizer] support c11 aligned_alloc, Linux only for now
Kostya Serebryany [Fri, 4 Jul 2014 07:30:34 +0000 (07:30 +0000)]
[sanitizer] support c11 aligned_alloc, Linux only for now

llvm-svn: 212322

10 years ago[X86] Limit maximum nop length on Silvermont
Alexey Volkov [Fri, 4 Jul 2014 07:14:56 +0000 (07:14 +0000)]
[X86] Limit maximum nop length on Silvermont

Silvermont can only decode one instruction per cycle if the instruction exceeds 8 bytes.
Also in Silvermont instructions with more than 3 prefixes will cause 3 cycle penalty.
Maximum nop length is limited to 7 bytes when used for padding on Silvermont.
For other x86 processors max nop length remains unchanged 15 bytes.

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

llvm-svn: 212321

10 years agoWindows build fixes and removal of endlessly recursive termination function.
Todd Fiala [Fri, 4 Jul 2014 06:58:01 +0000 (06:58 +0000)]
Windows build fixes and removal of endlessly recursive termination function.

This change removes the ScriptInterpreter::TerminateInterpreter() call which
ended up endlessly calling itself as things currently stand.  It also cleans
up some other Windows-related cmake changes.

See http://lists.cs.uiuc.edu/pipermail/lldb-commits/Week-of-Mon-20140630/011544.html
for more details.

Change by Zachary Turner

llvm-svn: 212320

10 years agoFix Windows build when python is not explicitly enabled
Todd Fiala [Fri, 4 Jul 2014 06:43:47 +0000 (06:43 +0000)]
Fix Windows build when python is not explicitly enabled

Currently Windows disables Python builds by default.  This
change ensures we don't process the scripts dir when we're
on Windows unless we're explicitly enabling python, which
prevents a build error.

Change by Deepak Panickal

llvm-svn: 212319

10 years agoXCore target: remove incorrect DebugLoc entries from prologue
Robert Lytton [Fri, 4 Jul 2014 06:38:22 +0000 (06:38 +0000)]
XCore target: remove incorrect DebugLoc entries from prologue

Summary: This was causing the prologue_end to be incorrectly positioned.

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

llvm-svn: 212318

10 years agoFix OptionDefinition break from r212290.
Todd Fiala [Fri, 4 Jul 2014 06:09:04 +0000 (06:09 +0000)]
Fix OptionDefinition break from r212290.

Fixes some structure definitions in CommandObjectType
that needed to be adjusted for a new OptionDefinition
field.

llvm-svn: 212317

10 years agoLet test/Unit/lit.cfg add config.shlibdir to $PATH on DLL platforms like cygming.
NAKAMURA Takumi [Fri, 4 Jul 2014 05:11:55 +0000 (05:11 +0000)]
Let test/Unit/lit.cfg add config.shlibdir to $PATH on DLL platforms like cygming.

This makes unittests run with BUILD_SHARED_LIBS on DLL platforms.

llvm-svn: 212316

10 years ago[CMake] Introduce LLVM_ENABLE_PLUGINS as an internal option. BUILD_SHARED_LIBS may...
NAKAMURA Takumi [Fri, 4 Jul 2014 04:45:40 +0000 (04:45 +0000)]
[CMake] Introduce LLVM_ENABLE_PLUGINS as an internal option. BUILD_SHARED_LIBS may not control enable/disable plugins.

FIXME: Make this configurable.

FIXME: "ENABLE_SHARED" doesn't make sense, since it is used just for plugins. We may rename it.
I introduced config.enable_shared in r120273.

llvm-svn: 212315

10 years ago[CMake] Introduce LLVM_SHLIB_OUTPUT_INTDIR.
NAKAMURA Takumi [Fri, 4 Jul 2014 04:23:26 +0000 (04:23 +0000)]
[CMake] Introduce LLVM_SHLIB_OUTPUT_INTDIR.

For now, its user is configure_lit_site_cfg().

llvm-svn: 212314

10 years ago[CMake] Fix set_output_directory to do nothing if *_OUTPUT_INTDIR was not given.
NAKAMURA Takumi [Fri, 4 Jul 2014 04:23:15 +0000 (04:23 +0000)]
[CMake] Fix set_output_directory to do nothing if *_OUTPUT_INTDIR was not given.

llvm-svn: 212313

10 years agoTrailing linefeed
NAKAMURA Takumi [Fri, 4 Jul 2014 04:20:49 +0000 (04:20 +0000)]
Trailing linefeed

llvm-svn: 212312

10 years agoFixed test CodeGen/captured-statements.c for powerpc64-linux.
Alexey Bataev [Fri, 4 Jul 2014 04:06:11 +0000 (04:06 +0000)]
Fixed test CodeGen/captured-statements.c for powerpc64-linux.

llvm-svn: 212311

10 years agoFix prefix comparison from r212308
Alp Toker [Fri, 4 Jul 2014 02:01:54 +0000 (02:01 +0000)]
Fix prefix comparison from r212308

llvm-svn: 212310

10 years agoMove function dependent resetting of a subtarget variable out of the
Eric Christopher [Fri, 4 Jul 2014 01:55:26 +0000 (01:55 +0000)]
Move function dependent resetting of a subtarget variable out of the
subtarget. This involved having the movt predicate take the current
function - since we care about size in instruction selection for
whether or not to use movw/movt take the function so we can check
the attributes. This required adding the current MachineFunction to
FastISel and propagating through.

llvm-svn: 212309

10 years agoSink undesirable LTO functions into the old C API
Alp Toker [Fri, 4 Jul 2014 00:58:41 +0000 (00:58 +0000)]
Sink undesirable LTO functions into the old C API

We want to encourage users of the C++ LTO API to reuse memory buffers instead
of repeatedly opening and reading the same file contents.

This reverts commit r212305 and implements a tidier scheme.

llvm-svn: 212308

10 years agoInstSimplify: Fix a bug when INT_MIN is in a sdiv
David Majnemer [Fri, 4 Jul 2014 00:23:39 +0000 (00:23 +0000)]
InstSimplify: Fix a bug when INT_MIN is in a sdiv

When INT_MIN is the numerator in a sdiv, we would not properly handle
overflow when calculating the bounds of possible values; abs(INT_MIN) is
not a meaningful number.

Instead, check and handle INT_MIN by reasoning that the largest value is
INT_MIN/-2 and the smallest value is INT_MIN.

This fixes PR20199.

llvm-svn: 212307

10 years ago[mach-o] Add parsing of arm/thumb relocations
Nick Kledzik [Fri, 4 Jul 2014 00:11:09 +0000 (00:11 +0000)]
[mach-o] Add parsing of arm/thumb relocations

This converts the very complicated mach-o arm
relocations into the simple Reference Kinds in lld.

The next patch will use the internal Reference kinds
to fix up arm/thumb code.

llvm-svn: 212306

10 years agoModify LTOModule::isTargetMatch to take a StringRef instead of a MemoryBuffer.
Peter Collingbourne [Thu, 3 Jul 2014 23:49:28 +0000 (23:49 +0000)]
Modify LTOModule::isTargetMatch to take a StringRef instead of a MemoryBuffer.

llvm-svn: 212305

10 years agoFix -Wnull-conversion warning.
Zachary Turner [Thu, 3 Jul 2014 23:44:14 +0000 (23:44 +0000)]
Fix -Wnull-conversion warning.

llvm-svn: 212304

10 years agogold plugin: move target initialization to the top of the onload function.
Peter Collingbourne [Thu, 3 Jul 2014 23:28:03 +0000 (23:28 +0000)]
gold plugin: move target initialization to the top of the onload function.

On at least my machine, ar does not register an all symbols read hook (which
previously triggered target initialization), but it does register a claim
files hook, which depends on the targets being initialized.

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

llvm-svn: 212303

10 years agoLTO: rename the various makeLTOModule overloads.
Peter Collingbourne [Thu, 3 Jul 2014 23:28:00 +0000 (23:28 +0000)]
LTO: rename the various makeLTOModule overloads.

This rename makes it easier to identify the specific overload being called
in each particular case and makes future refactorings easier.

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

llvm-svn: 212302

10 years agoMove createIRObjectFile to the IRObjectFile class and return the concrete type.
Rafael Espindola [Thu, 3 Jul 2014 23:03:50 +0000 (23:03 +0000)]
Move createIRObjectFile to the IRObjectFile class and return the concrete type.

llvm-svn: 212301

10 years ago[x86] Clarify that this lowering only applies to vectors and is only
Chandler Carruth [Thu, 3 Jul 2014 22:57:44 +0000 (22:57 +0000)]
[x86] Clarify that this lowering only applies to vectors and is only
used when we have SSE2.

llvm-svn: 212300

10 years agoUse std::unique_ptr to manage memory. No functionality change.
Rafael Espindola [Thu, 3 Jul 2014 22:43:03 +0000 (22:43 +0000)]
Use std::unique_ptr to manage memory. No functionality change.

llvm-svn: 212299

10 years agoTemporarily revert "Don't try to construct debug LexicalScopes hierarchy for function...
Eric Christopher [Thu, 3 Jul 2014 22:24:54 +0000 (22:24 +0000)]
Temporarily revert "Don't try to construct debug LexicalScopes hierarchy for functions that do not have top level debug information." as it appears to be breaking some LTO constructs.

This reverts commit r212203.

llvm-svn: 212298

10 years agoRemove caching of the target machine and initialization of the
Eric Christopher [Thu, 3 Jul 2014 22:24:49 +0000 (22:24 +0000)]
Remove caching of the target machine and initialization of the
subtarget from ARMISelDAGtoDAG. The former is unnecessary and the
latter is initialized on each runOnMachineFunction.

llvm-svn: 212297

10 years ago[CostModel][x86] Improved cost model for alternate shuffles.
Andrea Di Biagio [Thu, 3 Jul 2014 22:24:18 +0000 (22:24 +0000)]
[CostModel][x86] Improved cost model for alternate shuffles.

This patch:
 1) Improves the cost model for x86 alternate shuffles (originally
added at revision 211339);
 2) Teaches the Cost Model Analysis pass how to analyze alternate shuffles.

Alternate shuffles are a special kind of blend; on x86, we can often
easily lowered alternate shuffled into single blend
instruction (depending on the subtarget features).

The existing cost model didn't take into account subtarget features.
Also, it had a couple of "dead" entries for vector types that are never
legal (example: on x86 types v2i32 and v2f32 are not legal; those are
always either promoted or widened to 128-bit vector types).

The new x86 cost model takes into account what target features we have
before returning the shuffle cost (i.e. the number of instructions
after the blend is lowered/expanded).

This patch also teaches the Cost Model Analysis how to identify and analyze
alternate shuffles (i.e. 'SK_Alternate' shufflevector instructions):
 - added function 'isAlternateVectorMask';
 - added some logic to check if an instruction is a alternate shuffle and, in
   case, call the target specific TTI to get the corresponding shuffle cost;
 - added a test to verify the cost model analysis on alternate shuffles.

llvm-svn: 212296

10 years agoAdd the -just-symbol-name (aka -j) flag to llvm-nm to just print the
Kevin Enderby [Thu, 3 Jul 2014 21:51:07 +0000 (21:51 +0000)]
Add the -just-symbol-name (aka -j) flag to llvm-nm to just print the
symbol’s name.  On darwin the -j flag is used (often in combinations
with other flags) to produce a complete list of symbol names which
than can then be reorder and used with ld(1)’s -order_file.

llvm-svn: 212294

10 years ago[X86] Add ISel patterns to select 'f32_to_f16' and 'f16_to_f32' dag nodes.
Andrea Di Biagio [Thu, 3 Jul 2014 21:51:06 +0000 (21:51 +0000)]
[X86] Add ISel patterns to select 'f32_to_f16' and 'f16_to_f32' dag nodes.

This patch adds tablegen patterns to select F16C float-to-half-float
conversion instructions from 'f32_to_f16' and 'f16_to_f32' dag nodes.

If the target doesn't have F16C, then 'f32_to_f16' and 'f16_to_f32'
are expanded into library calls.

llvm-svn: 212293

10 years agoExpand the note about llvm-ar now that inline asm works.
Rafael Espindola [Thu, 3 Jul 2014 21:34:25 +0000 (21:34 +0000)]
Expand the note about llvm-ar now that inline asm works.

llvm-svn: 212292

10 years agoMake a small crash preventing change.
Fariborz Jahanian [Thu, 3 Jul 2014 21:06:20 +0000 (21:06 +0000)]
Make a small crash preventing change.

llvm-svn: 212291

10 years agoAdds the notion of an OptionValidator.
Zachary Turner [Thu, 3 Jul 2014 20:34:18 +0000 (20:34 +0000)]
Adds the notion of an OptionValidator.

The purpose of the OptionValidator is to determine, based on some
arbitrary set of conditions, whether or not a command option is
valid for a given debugger state.  An example of this might be
to selectively disable or enable certain command options that
don't apply to a particular platform.

This patch contains no functional change, and does not actually
make use of an OptionValidator for any purpose yet.  A follow-up
patch will begin to add the logic and users of OptionValidator.

Reviewed by: Greg Clayton, Jim Ingham

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

llvm-svn: 212290

10 years agoMove test since it now depends on the x86 backend.
Rafael Espindola [Thu, 3 Jul 2014 20:26:21 +0000 (20:26 +0000)]
Move test since it now depends on the x86 backend.

llvm-svn: 212289

10 years agoLTO depends on Object now.
Rafael Espindola [Thu, 3 Jul 2014 20:19:03 +0000 (20:19 +0000)]
LTO depends on Object now.

Fixes the build with only the ARM backend enabled. For some reason some
other backend was pulling Object and this went unnoticed.

llvm-svn: 212288

10 years agoAdd support for inline asm symbols in llvm-ar.
Rafael Espindola [Thu, 3 Jul 2014 19:40:08 +0000 (19:40 +0000)]
Add support for inline asm symbols in llvm-ar.

This should allow llvm-ar to be used instead of gnu ar + plugin in a LTO
build. I will add a release note about it once I finish a LTO bootstrap with it.

llvm-svn: 212287

10 years agoAdd a cmake build system.
Dan Albert [Thu, 3 Jul 2014 19:35:48 +0000 (19:35 +0000)]
Add a cmake build system.

Will add support for tests with lit in a later patch.
This does not yet support building the unwinder in src/Unwind.

llvm-svn: 212286

10 years agoRestore global static array in test case
Gerolf Hoflehner [Thu, 3 Jul 2014 19:30:33 +0000 (19:30 +0000)]
Restore global static array in test case

llvm-svn: 212285

10 years agoRun interprocedural const prop before global optimizer
Gerolf Hoflehner [Thu, 3 Jul 2014 19:28:15 +0000 (19:28 +0000)]
Run interprocedural const prop before global optimizer

Exposes more constant globals that can be removed by
the global optimizer. A specific example is the removal
of the static global block address array in
clang/test/CodeGen/indirect-goto.c. This change impacts only
lower optimization levels. With LTO interprocedural
const prop runs already before global opt.

llvm-svn: 212284

10 years agofix configure+make build
Rafael Espindola [Thu, 3 Jul 2014 19:09:53 +0000 (19:09 +0000)]
fix configure+make build

llvm-svn: 212283

10 years agoAdd support for inline asm symbols to IRObjectFile.
Rafael Espindola [Thu, 3 Jul 2014 18:59:23 +0000 (18:59 +0000)]
Add support for inline asm symbols to IRObjectFile.

This also enables it in llvm-nm so that it can be tested.

llvm-svn: 212282

10 years agoThe RTTI fallback is no more. Remove outdated diagnostic.
Benjamin Kramer [Thu, 3 Jul 2014 18:43:26 +0000 (18:43 +0000)]
The RTTI fallback is no more. Remove outdated diagnostic.

llvm-svn: 212281

10 years agoAdd the -U flag to llvm-nm as an alias to -defined-only
Kevin Enderby [Thu, 3 Jul 2014 18:18:50 +0000 (18:18 +0000)]
Add the -U flag to llvm-nm as an alias to -defined-only
as darwin’s nm(1) uses -U for this functionality.

llvm-svn: 212280

10 years agofixed typo in comment
Sanjay Patel [Thu, 3 Jul 2014 16:17:20 +0000 (16:17 +0000)]
fixed typo in comment

llvm-svn: 212279

10 years agoIR: cleanup Module::dropReferences
David Majnemer [Thu, 3 Jul 2014 16:12:55 +0000 (16:12 +0000)]
IR: cleanup Module::dropReferences

This replaces some old-style loops with range-based for.

llvm-svn: 212278

10 years ago[ARM] Implement ISB memory barrier intrinsic
Yi Kong [Thu, 3 Jul 2014 16:01:25 +0000 (16:01 +0000)]
[ARM] Implement ISB memory barrier intrinsic

Adds support for __builtin_arm_isb. Also corrects DSB and ISB instructions
modelling by adding has-side-effects property.

llvm-svn: 212277

10 years ago[ARM] Implement ISB memory barrier intrinsic
Yi Kong [Thu, 3 Jul 2014 16:00:41 +0000 (16:00 +0000)]
[ARM] Implement ISB memory barrier intrinsic

Adds support for __builtin_arm_isb. Also corrects DSB and ISB instructions
modelling by adding has-side-effects property.

llvm-svn: 212276

10 years agobug fix for PR20020: anti-dependency-breaker causes miscompilation
Sanjay Patel [Thu, 3 Jul 2014 15:19:40 +0000 (15:19 +0000)]
bug fix for PR20020: anti-dependency-breaker causes miscompilation

This patch sets the 'KeepReg' bit for any tied and live registers during the PrescanInstruction() phase of the dependency breaking algorithm. It then checks those 'KeepReg' bits during the ScanInstruction() phase to avoid changing any tied registers. For more details, please see comments in:
http://llvm.org/bugs/show_bug.cgi?id=20020

I added two FIXME comments for code that I think can be removed by using register iterators that include self. I don't want to include those code changes with this patch, however, to keep things as small as possible.

The test case is larger than I'd like, but I don't know how to reduce it further and still produce the failing asm.

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

llvm-svn: 212275

10 years agoFix ppcf128 component access on little-endian systems
Ulrich Weigand [Thu, 3 Jul 2014 15:06:47 +0000 (15:06 +0000)]
Fix ppcf128 component access on little-endian systems

The PowerPC 128-bit long double data type (ppcf128 in LLVM) is in fact a
pair of two doubles, where one is considered the "high" or
more-significant part, and the other is considered the "low" or
less-significant part.  When a ppcf128 value is stored in memory or a
register pair, the high part always comes first, i.e. at the lower
memory address or in the lower-numbered register, and the low part
always comes second.  This is true both on big-endian and little-endian
PowerPC systems.  (Similar to how with a complex number, the real part
always comes first and the imaginary part second, no matter the byte
order of the system.)

This was implemented incorrectly for little-endian systems in LLVM.
This commit fixes three related issues:

- When printing an immediate ppcf128 constant to assembler output
  in emitGlobalConstantFP, emit the high part first on both big-
  and little-endian systems.

- When lowering a ppcf128 type to a pair of f64 types in SelectionDAG
  (which is used e.g. when generating code to load an argument into a
  register pair), use correct low/high part ordering on little-endian
  systems.

- In a related issue, because lowering ppcf128 into a pair of f64 must
  operate differently from lowering an int128 into a pair of i64,
  bitcasts between ppcf128 and int128 must not be optimized away by the
  DAG combiner on little-endian systems, but must effect a word-swap.

Reviewed by Hal Finkel.

llvm-svn: 212274

10 years ago[asan] i686-linux-android support.
Evgeniy Stepanov [Thu, 3 Jul 2014 14:20:56 +0000 (14:20 +0000)]
[asan] i686-linux-android support.

Large part of this change is required due to
  https://code.google.com/p/android/issues/detail?id=61799
dlsym() crashes when symbol resolution fails, which means
we have to limit the interceptor list instead of relying on
runtime detection.

There are minor differencies in system headers, too.

llvm-svn: 212273

10 years ago[asan] Fix unused variable warning.
Evgeniy Stepanov [Thu, 3 Jul 2014 14:14:59 +0000 (14:14 +0000)]
[asan] Fix unused variable warning.

llvm-svn: 212272

10 years agoclang-tidy: Instantiate llvm::Registry<clang::tidy::ClangTidyModule>.
NAKAMURA Takumi [Thu, 3 Jul 2014 14:12:47 +0000 (14:12 +0000)]
clang-tidy: Instantiate llvm::Registry<clang::tidy::ClangTidyModule>.

llvm-svn: 212271

10 years agoclang-modernize: Instantiate llvm::Registry<TransformFactory>.
NAKAMURA Takumi [Thu, 3 Jul 2014 14:12:37 +0000 (14:12 +0000)]
clang-modernize: Instantiate llvm::Registry<TransformFactory>.

llvm-svn: 212270

10 years ago[mach-o]: remove dylib install-name test with a.out
Tim Northover [Thu, 3 Jul 2014 12:50:23 +0000 (12:50 +0000)]
[mach-o]: remove dylib install-name test with a.out

Unfortunately, the creation of (the default) output file, a.out races with all
the other tests in this directory. When the wrong one is read by macho-dump,
the test fails.

llvm-svn: 212269

10 years ago[msan] Stop propagating shadow in blacklisted functions.
Evgeniy Stepanov [Thu, 3 Jul 2014 11:56:30 +0000 (11:56 +0000)]
[msan] Stop propagating shadow in blacklisted functions.

With this change all values passed through blacklisted functions
become fully initialized. Previous behavior was to initialize all
loads in blacklisted functions, but apply normal shadow propagation
logic for all other operation.

This makes blacklist applicable in a wider range of situations.

It also makes code for blacklisted functions a lot shorter, which
works as yet another workaround for PR17409.

llvm-svn: 212268

10 years ago[msan] Add missing attributes in MemorySanitizer tests.
Evgeniy Stepanov [Thu, 3 Jul 2014 11:49:50 +0000 (11:49 +0000)]
[msan] Add missing attributes in MemorySanitizer tests.

llvm-svn: 212267

10 years agoRevert of r212265.
Evgeniy Stepanov [Thu, 3 Jul 2014 11:35:08 +0000 (11:35 +0000)]
Revert of r212265.

llvm-svn: 212266

10 years ago[msan] Stop propagating shadow in blacklisted functions.
Evgeniy Stepanov [Thu, 3 Jul 2014 11:18:48 +0000 (11:18 +0000)]
[msan] Stop propagating shadow in blacklisted functions.

With this change all values passed through blacklisted functions
become fully initialized. Previous behavior was to initialize all
loads in blacklisted functions, but apply normal shadow propagation
logic for all other operation.

This makes blacklist applicable in a wider range of situations.

It also makes code for blacklisted functions a lot shorter, which
works as yet another workaround for PR17409.

llvm-svn: 212265

10 years agoAdd the __qdbl intrinsic to the arm_acle.h header
Renato Golin [Thu, 3 Jul 2014 10:14:52 +0000 (10:14 +0000)]
Add the __qdbl intrinsic to the arm_acle.h header

Patch by: Moritz Roth

llvm-svn: 212264

10 years agoMove the calling of emitTargetMD() later.
Robert Lytton [Thu, 3 Jul 2014 09:30:33 +0000 (09:30 +0000)]
Move the calling of emitTargetMD() later.

Summary:
Because a global created by GetOrCreateLLVMGlobal() is not finalised until later viz:
  extern char a[];
  char f(){ return a[5];}
  char a[10];

Change MangledDeclNames to use a MapVector rather than a DenseMap so that the
Metadata is output in order of original declaration, so to make deterministic
and improve human readablity.

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

llvm-svn: 212263