platform/upstream/llvm.git
9 years agoCOFF: Make local variables local.
Rui Ueyama [Sun, 7 Jun 2015 03:55:28 +0000 (03:55 +0000)]
COFF: Make local variables local.

llvm-svn: 239244

9 years agoCOFF: Add /opt:noref option.
Rui Ueyama [Sun, 7 Jun 2015 03:17:42 +0000 (03:17 +0000)]
COFF: Add /opt:noref option.

This option disables dead-stripping.

llvm-svn: 239243

9 years agoCOFF: Support resonpse files.
Rui Ueyama [Sun, 7 Jun 2015 02:55:19 +0000 (02:55 +0000)]
COFF: Support resonpse files.

llvm-svn: 239242

9 years ago[Object/ELF] Don't confuse isDefined() and isCommon.
Davide Italiano [Sun, 7 Jun 2015 02:45:19 +0000 (02:45 +0000)]
[Object/ELF] Don't confuse isDefined() and isCommon.

Reported by Rafael Espindola. Pointy-hat to me.

llvm-svn: 239241

9 years agoTeaching llvm-mc how to understand the defsym command line option. This allows integ...
Colin LeMahieu [Sun, 7 Jun 2015 01:46:24 +0000 (01:46 +0000)]
Teaching llvm-mc how to understand the defsym command line option.  This allows integer-constant symbols to be defined on the command line and used during assembly.

llvm-svn: 239240

9 years agoCOFF: Move Windows-specific code from Chunk.{cpp,h} to DLL.{cpp,h}.
Rui Ueyama [Sun, 7 Jun 2015 01:15:04 +0000 (01:15 +0000)]
COFF: Move Windows-specific code from Chunk.{cpp,h} to DLL.{cpp,h}.

llvm-svn: 239239

9 years agoCOFF: Fix default output file path.
Rui Ueyama [Sun, 7 Jun 2015 00:20:32 +0000 (00:20 +0000)]
COFF: Fix default output file path.

Default output filename is the same as the first object file's
name with its extension replaced with ".exe".

llvm-svn: 239238

9 years agoCOFF: Add comments and move main function to the top. NFC.
Rui Ueyama [Sat, 6 Jun 2015 23:32:08 +0000 (23:32 +0000)]
COFF: Add comments and move main function to the top. NFC.

llvm-svn: 239237

9 years agoCOFF: Rename writeHeader -> writeHeaderTo.
Rui Ueyama [Sat, 6 Jun 2015 23:19:38 +0000 (23:19 +0000)]
COFF: Rename writeHeader -> writeHeaderTo.

Chunk has writeTo function which takes uint8_t *Buf.
writeHeaderTo feels more consistent with that because this member
function also takes uint8_t *Buf.

llvm-svn: 239236

9 years agoCOFF: Inline a constant that is used only once.
Rui Ueyama [Sat, 6 Jun 2015 23:19:36 +0000 (23:19 +0000)]
COFF: Inline a constant that is used only once.

llvm-svn: 239235

9 years agoRemove redundant `using namespace`.
Rui Ueyama [Sat, 6 Jun 2015 23:11:39 +0000 (23:11 +0000)]
Remove redundant `using namespace`.

llvm-svn: 239234

9 years agoCOFF: Add .didat section.
Rui Ueyama [Sat, 6 Jun 2015 23:07:01 +0000 (23:07 +0000)]
COFF: Add .didat section.

llvm-svn: 239233

9 years agoCOFF: Update comments.
Rui Ueyama [Sat, 6 Jun 2015 22:56:55 +0000 (22:56 +0000)]
COFF: Update comments.

llvm-svn: 239232

9 years ago[Object/ELF] Provide helpers for symbol types.
Davide Italiano [Sat, 6 Jun 2015 22:54:09 +0000 (22:54 +0000)]
[Object/ELF] Provide helpers for symbol types.

These were, originally, in a different form in lld.
They can be reused for other tools, e.g. llvm-readobj.

llvm-svn: 239231

9 years agoCOFF: Move .idata constructor from Writer to Chunk.
Rui Ueyama [Sat, 6 Jun 2015 22:46:15 +0000 (22:46 +0000)]
COFF: Move .idata constructor from Writer to Chunk.

Previously, half of the constructor for .idata contents was in Chunks.cpp
and the rest was in Writer.cpp. This patch moves the latter to Chunks.cpp.
Now IdataContents class manages everything for .idata section.

llvm-svn: 239230

9 years ago[InstCombine, InstSimplify] Move xforms from Combine to Simplify
David Majnemer [Sat, 6 Jun 2015 22:40:21 +0000 (22:40 +0000)]
[InstCombine, InstSimplify] Move xforms from Combine to Simplify

There were several SelectInst combines that always returned an existing
instruction instead of modifying an old one or creating a new one.
These are prime candidates for moving to InstSimplify.

llvm-svn: 239229

9 years agoUse early return idiom. NFC
Filipe Cabecinhas [Sat, 6 Jun 2015 20:44:53 +0000 (20:44 +0000)]
Use early return idiom. NFC

llvm-svn: 239228

9 years ago[MC] Common symbols weren't being checked for redeclaration which allowed an assembly...
Colin LeMahieu [Sat, 6 Jun 2015 20:12:40 +0000 (20:12 +0000)]
[MC] Common symbols weren't being checked for redeclaration which allowed an assembly file to generate an assertion in setCommon(): !isCommon().  This change allows redeclaration as long as the size and alignment match exactly, otherwise report a fatal error.

llvm-svn: 239227

9 years ago[Mips] Factor out some bit manipulation code into separate routines
Simon Atanasyan [Sat, 6 Jun 2015 17:26:35 +0000 (17:26 +0000)]
[Mips] Factor out some bit manipulation code into separate routines

No functional changes.

llvm-svn: 239226

9 years ago[Mips] Check symbol alignment for some MIPS relocations.
Simon Atanasyan [Sat, 6 Jun 2015 17:26:28 +0000 (17:26 +0000)]
[Mips] Check symbol alignment for some MIPS relocations.

llvm-svn: 239225

9 years ago[Mips] Perform an overflow checking for relocations results
Simon Atanasyan [Sat, 6 Jun 2015 17:26:18 +0000 (17:26 +0000)]
[Mips] Perform an overflow checking for relocations results

llvm-svn: 239224

9 years ago[Mips] Rearrange relocation related cases in the `switch` operator
Simon Atanasyan [Sat, 6 Jun 2015 17:26:09 +0000 (17:26 +0000)]
[Mips] Rearrange relocation related cases in the `switch` operator

No functional changes.

llvm-svn: 239223

9 years ago[Mips] Use signed/unsigned types in relocation calculations consistently
Simon Atanasyan [Sat, 6 Jun 2015 17:26:04 +0000 (17:26 +0000)]
[Mips] Use signed/unsigned types in relocation calculations consistently

No functional changes.

llvm-svn: 239222

9 years ago[Mips] Handle all grouped relocations in a uniform way
Simon Atanasyan [Sat, 6 Jun 2015 17:25:58 +0000 (17:25 +0000)]
[Mips] Handle all grouped relocations in a uniform way

No functional changes.

llvm-svn: 239221

9 years agoUse skipIf instead of skipUnless in TestTerminal for better readability.
Chaoren Lin [Sat, 6 Jun 2015 14:51:34 +0000 (14:51 +0000)]
Use skipIf instead of skipUnless in TestTerminal for better readability.

llvm-svn: 239220

9 years agoAdd NVIDIA vprintf printing to RuntimeDebugBuilder
Tobias Grosser [Sat, 6 Jun 2015 08:43:22 +0000 (08:43 +0000)]
Add NVIDIA vprintf printing to RuntimeDebugBuilder

llvm-svn: 239219

9 years ago[LoopUnroll] Fix truncation bug in canUnrollCompletely.
Sanjoy Das [Sat, 6 Jun 2015 05:24:10 +0000 (05:24 +0000)]
[LoopUnroll] Fix truncation bug in canUnrollCompletely.

Summary:
canUnrollCompletely takes `unsigned` values for `UnrolledCost` and
`RolledDynamicCost` but is passed in `uint64_t`s that are silently
truncated.  Because of this, when `UnrolledSize` is a large integer
that has a small remainder with UINT32_MAX, LLVM tries to completely
unroll loops with high trip counts.

Reviewers: mzolotukhin, chandlerc

Subscribers: llvm-commits

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

llvm-svn: 239218

9 years ago[CVP] Don't assume Constants of type i1 can be known to be true or false
David Majnemer [Sat, 6 Jun 2015 04:56:51 +0000 (04:56 +0000)]
[CVP] Don't assume Constants of type i1 can be known to be true or false

CVP wants to analyze the condition operand of a select along an edge.
It succeeds in getting back a Constant but not a ConstantInt.  Instead,
it gets a ConstantExpr.  It then assumes that the Constant must be equal
to false because it isn't equal to true.

Instead, perform an additional comparison.

This fixes PR23752.

llvm-svn: 239217

9 years agoCOFF: Merge Chunk::applyRelocations with Chunk::writeTo.
Rui Ueyama [Sat, 6 Jun 2015 04:07:39 +0000 (04:07 +0000)]
COFF: Merge Chunk::applyRelocations with Chunk::writeTo.

In this design, Chunk is the only thing that knows how to write
its contents to output file as well as how to apply relocations
there. The writer shouldn't know about the details.

llvm-svn: 239216

9 years ago[InstCombine] Don't miscompile select to poison
David Majnemer [Sat, 6 Jun 2015 02:30:43 +0000 (02:30 +0000)]
[InstCombine] Don't miscompile select to poison

If we have (select a, b, c), it is sometimes valid to simplify this to a
single select operand.  However, doing so is only valid if the
computation doesn't inject poison into the computation.

It might be helpful to consider the following example:
  (select (icmp ne %i, INT_MAX), (add nsw %i, 1), INT_MIN)

The select is equivalent to (add %i, 1) but not (add nsw %i, 1).

Self hosting on x86_64 revealed that this occurs very, very rarely so
bailing out is hopefully pretty reasonable.

llvm-svn: 239215

9 years agoHandle 16 bit PC relative relocations.
Rafael Espindola [Sat, 6 Jun 2015 02:29:56 +0000 (02:29 +0000)]
Handle 16 bit PC relative relocations.

Fixes pr23771.

llvm-svn: 239214

9 years agoclang-cl: Implement /GL in terms of -flto.
Peter Collingbourne [Sat, 6 Jun 2015 02:09:34 +0000 (02:09 +0000)]
clang-cl: Implement /GL in terms of -flto.

No documentation yet; the linker needs more work.

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

llvm-svn: 239213

9 years agoCOFF: Read linker directives from bitcode files.
Peter Collingbourne [Sat, 6 Jun 2015 02:00:45 +0000 (02:00 +0000)]
COFF: Read linker directives from bitcode files.

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

llvm-svn: 239212

9 years agoTargetParser: Fix comments in enum(s) introduced in r239150. [-Wdocumentation]
NAKAMURA Takumi [Sat, 6 Jun 2015 01:41:35 +0000 (01:41 +0000)]
TargetParser: Fix comments in enum(s) introduced in r239150. [-Wdocumentation]

llvm-svn: 239211

9 years ago[TableGen] Change OpInit::getNumOperands and getOperand to use unsigned integers...
Craig Topper [Sat, 6 Jun 2015 01:34:04 +0000 (01:34 +0000)]
[TableGen] Change OpInit::getNumOperands and getOperand to use unsigned integers. NFC

llvm-svn: 239210

9 years ago[TableGen] Remove trailing whitespace, add space between 'if' and paren, other format...
Craig Topper [Sat, 6 Jun 2015 01:34:01 +0000 (01:34 +0000)]
[TableGen] Remove trailing whitespace, add space between 'if' and paren, other formatting fixes. NFC

llvm-svn: 239209

9 years ago[TableGen] Remove unnecessary temporary. NFC
Craig Topper [Sat, 6 Jun 2015 01:34:00 +0000 (01:34 +0000)]
[TableGen] Remove unnecessary temporary. NFC

llvm-svn: 239208

9 years ago[TableGen] Fold variable declaration/initialization into if condition for a couple...
Craig Topper [Sat, 6 Jun 2015 01:33:58 +0000 (01:33 +0000)]
[TableGen] Fold variable declaration/initialization into if condition for a couple short lived variables. NFC

llvm-svn: 239207

9 years ago[TableGen] Remove unnecessary outer 'if' and merge it's conditions into the inner...
Craig Topper [Sat, 6 Jun 2015 01:33:55 +0000 (01:33 +0000)]
[TableGen] Remove unnecessary outer 'if' and merge it's conditions into the inner 'if's. NFC

llvm-svn: 239206

9 years ago[TableGen] Fold variable declarations with their assignments. NFC
Craig Topper [Sat, 6 Jun 2015 00:44:45 +0000 (00:44 +0000)]
[TableGen] Fold variable declarations with their assignments. NFC

llvm-svn: 239205

9 years ago[TableGen] Correct the documentation for 'foreach' in the Language Intro.
Craig Topper [Sat, 6 Jun 2015 00:44:42 +0000 (00:44 +0000)]
[TableGen] Correct the documentation for 'foreach' in the Language Intro.

llvm-svn: 239204

9 years agoFix TestAttachDenied and TestChangeProcessGroup for remote Windows to Android.
Chaoren Lin [Sat, 6 Jun 2015 00:25:50 +0000 (00:25 +0000)]
Fix TestAttachDenied and TestChangeProcessGroup for remote Windows to Android.

Summary: Updated `append_to_remote_wd` to work for both remote and local.

Reviewers: clayborg, ovyalov

Reviewed By: ovyalov

Subscribers: tberghammer, lldb-commits

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

llvm-svn: 239203

9 years agoUpdate TestGdbRemoteAbort and TestGdbRemoteSegFault to use `get_signal_number`.
Chaoren Lin [Sat, 6 Jun 2015 00:19:01 +0000 (00:19 +0000)]
Update TestGdbRemoteAbort and TestGdbRemoteSegFault to use `get_signal_number`.

Reviewers: clayborg, ovyalov

Reviewed By: ovyalov

Subscribers: lldb-commits

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

llvm-svn: 239201

9 years ago[dsymutil] Fix misspelled CHECK line.
Frederic Riss [Fri, 5 Jun 2015 23:46:18 +0000 (23:46 +0000)]
[dsymutil] Fix misspelled CHECK line.

llvm-svn: 239200

9 years agoRemove unused editline includes
Pavel Labath [Fri, 5 Jun 2015 23:14:14 +0000 (23:14 +0000)]
Remove unused editline includes

LLDB included editline in a couple of places, not respecting LLDB_DISABLE_LIBEDIT. As far as I can tell, these includes are not used, so I am removing them.

llvm-svn: 239199

9 years ago[dsymutil] Add support for linking the debug_frame section.
Frederic Riss [Fri, 5 Jun 2015 23:06:11 +0000 (23:06 +0000)]
[dsymutil] Add support for linking the debug_frame section.

Linking the debug frame section is actually very easy as we just have to
patch the start address in the FDE header and then copy the rest of the
FDE without even looking at it. The only small complexity comes from the
handling of the CIEs that we should unique across object file. This is
also really easy by using a StringMap keyed on the raw contents of the
CIE.

llvm-svn: 239198

9 years agoMove a test from static-assert.cpp to DeclPrinterTest
David Majnemer [Fri, 5 Jun 2015 22:40:53 +0000 (22:40 +0000)]
Move a test from static-assert.cpp to DeclPrinterTest

It's better not to rely on the diagnostics engine to pretty print the
argument to decltype.  Instead, exercise the functionality in
DeclPrinterTest.

llvm-svn: 239197

9 years agoFix PR#23767. Add tests for iterator invalidation for deque::erase/pop_front/pop_back
Marshall Clow [Fri, 5 Jun 2015 22:34:19 +0000 (22:34 +0000)]
Fix PR#23767. Add tests for iterator invalidation for deque::erase/pop_front/pop_back

llvm-svn: 239196

9 years agoFix TestNamespace and TestThreadJump for remote Windows to Android.
Chaoren Lin [Fri, 5 Jun 2015 22:03:19 +0000 (22:03 +0000)]
Fix TestNamespace and TestThreadJump for remote Windows to Android.

Summary:
Update DYLDRendezvous and SOEntry to use FileSpecs instead of storing paths as
strings, which caused incorrect comparison results due to denormalization.

Reviewers: clayborg, vharron, ovyalov

Reviewed By: ovyalov

Subscribers: jwolfe, emaste, tberghammer, lldb-commits

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

llvm-svn: 239195

9 years agoFix typo of function name.
Eric Christopher [Fri, 5 Jun 2015 22:03:01 +0000 (22:03 +0000)]
Fix typo of function name.

llvm-svn: 239194

9 years agoRename the single non-style conformant function in TargetCodeGenInfo
Eric Christopher [Fri, 5 Jun 2015 22:03:00 +0000 (22:03 +0000)]
Rename the single non-style conformant function in TargetCodeGenInfo
and update all callers.

llvm-svn: 239193

9 years agoMove the code in TargetPassConfig::addPass that inserts machine printer pass to
Akira Hatanaka [Fri, 5 Jun 2015 21:58:14 +0000 (21:58 +0000)]
Move the code in TargetPassConfig::addPass that inserts machine printer pass to
the overloaded version of addPass which takes Pass*.

This change enables inserting the machine printer pass when the overloaded
version of addPass that takes Pass* is called to add a pass, instead of the
one which takes AnalysisID. I need this to prevent make-check tests from
failing when I commit another patch later.

llvm-svn: 239192

9 years ago[dsymutil] Rename a variable to appease some bots.
Frederic Riss [Fri, 5 Jun 2015 21:21:57 +0000 (21:21 +0000)]
[dsymutil] Rename a variable to appease some bots.

Anyway having the type and the name of the member being the same
thing wasn't the wisest of the choices.

llvm-svn: 239190

9 years ago[dsymutil] Have the YAML deserialization rewrite the object address of symbols.
Frederic Riss [Fri, 5 Jun 2015 21:12:07 +0000 (21:12 +0000)]
[dsymutil] Have the YAML deserialization rewrite the object address of symbols.

The main use of the YAML debug map format is for testing inside LLVM. If we have IR
files in the tests used to generate object files, then we obviously don't know the
addresses of the symbols inside the object files beforehand.

This change lets the YAML import lookup the addresses in the object files and rewrite
them. This will allow to have test that really don't need any binary input.

llvm-svn: 239189

9 years agoUnique file names for TestStarted and TestFinished.
Chaoren Lin [Fri, 5 Jun 2015 21:08:24 +0000 (21:08 +0000)]
Unique file names for TestStarted and TestFinished.

Summary: This fixes the issue of multiple test suites opening the same file for writing.

Reviewers: clayborg, zturner

Subscribers: lldb-commits

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

llvm-svn: 239188

9 years ago[ASan] Bump maximum allowed malloc() size in ASan allocator to 1Tb.
Alexey Samsonov [Fri, 5 Jun 2015 20:50:02 +0000 (20:50 +0000)]
[ASan] Bump maximum allowed malloc() size in ASan allocator to 1Tb.

1Tb of RAM ought to be enough for anybody.

llvm-svn: 239187

9 years ago[dsymutil] Apply clang-format. NFC
Frederic Riss [Fri, 5 Jun 2015 20:27:07 +0000 (20:27 +0000)]
[dsymutil] Apply clang-format. NFC

llvm-svn: 239186

9 years ago[dsymutil] Out-line the YAML serialization code. NFC
Frederic Riss [Fri, 5 Jun 2015 20:27:04 +0000 (20:27 +0000)]
[dsymutil] Out-line the YAML serialization code. NFC

It will get a bit bigger in an upcoming commit. No need to have all
of that in the header.

Also move parseYAMLDebugMap() to the same place as the serialization
code. This way it will be able to share a private Context object with
it.

llvm-svn: 239185

9 years agoFix extern warnings produced by ittnotify_static.c
Jonathan Peyton [Fri, 5 Jun 2015 20:24:13 +0000 (20:24 +0000)]
Fix extern warnings produced by ittnotify_static.c

when compiling with gcc or clang numerous warnings concerning the usage
of extern "C" linkage.  All the __kmp_itt_sync* variables are declared
like: extern "C" type __kmp_itt_sync... = definition; through various macros.
This note from cppreference.com explains why this is a problem.
// From http://en.cppreference.com/w/cpp/language/language_linkage
extern "C" int x; // a declaration and not a definition
// The above line is equivalent to extern "C" { extern int x; }
extern "C" { int x; } // a declaration and definition
Since the __kmp_itt_* variables are being declared and defined, these variables
should use the bracketed version instead.

llvm-svn: 239184

9 years ago[TestGdbRemoteAbort] Skip on API 16 Android devices
Siva Chandra [Fri, 5 Jun 2015 19:54:49 +0000 (19:54 +0000)]
[TestGdbRemoteAbort] Skip on API 16 Android devices

Summary:
This change also adds the infrastructure required to specify the API
levels for which tests should be skipped.

Reviewers: chying, labath

Reviewed By: labath

Subscribers: tberghammer, lldb-commits

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

llvm-svn: 239183

9 years agoRemoved unused private fields in RegisterContextLinux_mips
Ed Maste [Fri, 5 Jun 2015 18:50:33 +0000 (18:50 +0000)]
Removed unused private fields in RegisterContextLinux_mips

llvm-svn: 239181

9 years ago[Mips] Add test to check jal -> jalx conversion
Simon Atanasyan [Fri, 5 Jun 2015 18:26:44 +0000 (18:26 +0000)]
[Mips] Add test to check jal -> jalx conversion

No functional changes.

llvm-svn: 239180

9 years ago[Mips] Add test to check relocation result shifting in case of N64 ABI
Simon Atanasyan [Fri, 5 Jun 2015 18:26:38 +0000 (18:26 +0000)]
[Mips] Add test to check relocation result shifting in case of N64 ABI

llvm-svn: 239179

9 years ago[Mips] Fix rel-gprel16.test test case
Simon Atanasyan [Fri, 5 Jun 2015 18:26:33 +0000 (18:26 +0000)]
[Mips] Fix rel-gprel16.test test case

This test case uses too large GP0 value. Now the test is correct. Later
we need to implement overflow checking to catch such cases.

llvm-svn: 239178

9 years ago[Mips] Fix hilo16-9-micro.test test case
Simon Atanasyan [Fri, 5 Jun 2015 18:26:25 +0000 (18:26 +0000)]
[Mips] Fix hilo16-9-micro.test test case

This test case uses too large addends in relocations. Now the test is correct.
Later we need to implement overflow checking to catch such cases.

llvm-svn: 239177

9 years agoRevert accidental commit
David Majnemer [Fri, 5 Jun 2015 18:24:55 +0000 (18:24 +0000)]
Revert accidental commit

This change was unrelated to r239170.

llvm-svn: 239176

9 years agoRevert "[InstCombine] Rephrase fix to SimplifyWithOpReplaced"
Renato Golin [Fri, 5 Jun 2015 18:24:12 +0000 (18:24 +0000)]
Revert "[InstCombine] Rephrase fix to SimplifyWithOpReplaced"

This reverts commit r239141. This commit was an attempt to reintroduce
a previous patch that broke many self-hosting bots with clang timeouts,
but it still has slowdown issues, at least  on ARM, increasing the
compilation time (stage 2, clang's) by 5x.

llvm-svn: 239175

9 years agoRefactor padding writing into a helper function.
Rafael Espindola [Fri, 5 Jun 2015 18:21:00 +0000 (18:21 +0000)]
Refactor padding writing into a helper function.

llvm-svn: 239174

9 years ago[lldbtest] Use netloc instead of hostname to look up Android device ID.
Siva Chandra [Fri, 5 Jun 2015 18:07:10 +0000 (18:07 +0000)]
[lldbtest] Use netloc instead of hostname to look up Android device ID.

Summary:
urlparse.ParseResult.hostname has only lowercase characters even if the
input URL had uppercase characters. Since Android device IDs can have
uppercase characters as well, use urlparse.ParseResult.netloc instead
and extract the device ID from it.

This change also improves the error message when lookup of the Android
device's API fails.

Reviewers: chaoren

Reviewed By: chaoren

Subscribers: tberghammer, lldb-commits

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

llvm-svn: 239173

9 years ago[InstCombine][NFC] Add a ``break;`` statement.
Sanjoy Das [Fri, 5 Jun 2015 18:04:46 +0000 (18:04 +0000)]
[InstCombine][NFC] Add a ``break;`` statement.

This change is NFC because both the ``break;`` and the fall through end
up returning immediately. However, this helps clarify intent and also
ensures correctness in case more ``case`` blocks are added later.

llvm-svn: 239172

9 years ago[InstCombine] Fix PR23751.
Sanjoy Das [Fri, 5 Jun 2015 18:04:42 +0000 (18:04 +0000)]
[InstCombine] Fix PR23751.

PR23751 was caused by a missing ``break;`` in r234388.

llvm-svn: 239171

9 years ago[AST] There is no message for C++1z-style static_assert
David Majnemer [Fri, 5 Jun 2015 18:03:58 +0000 (18:03 +0000)]
[AST] There is no message for C++1z-style static_assert

We would crash in the DeclPrinter trying to pretty-print the
static_assert message.  C++1z-style assertions don't have a message so
we would crash.

This fixes PR23756.

llvm-svn: 239170

9 years agoRevert r238473, "Thumb2: Modify codegen for memcpy intrinsic to prefer LDM/STM."
Peter Collingbourne [Fri, 5 Jun 2015 18:01:28 +0000 (18:01 +0000)]
Revert r238473, "Thumb2: Modify codegen for memcpy intrinsic to prefer LDM/STM."
as it caused miscompilations and assertion failures (PR23768,
http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20150601/280380.html).

llvm-svn: 239169

9 years agoSave a map lookup. NFC.
Rafael Espindola [Fri, 5 Jun 2015 17:54:25 +0000 (17:54 +0000)]
Save a map lookup. NFC.

llvm-svn: 239168

9 years agoDAGCombiner: don't duplicate (fmul x, c) in visitFNEG if fneg is free
Fiona Glaser [Fri, 5 Jun 2015 17:52:34 +0000 (17:52 +0000)]
DAGCombiner: don't duplicate (fmul x, c) in visitFNEG if fneg is free

For targets with a free fneg, this fold is always a net loss if it
ends up duplicating the multiply, so definitely avoid it.

This might be true for some targets without a free fneg too, but
I'll leave that for future investigation.

llvm-svn: 239167

9 years agoRangify more for loops in LegacyPassManager.cpp.
Yaron Keren [Fri, 5 Jun 2015 17:48:47 +0000 (17:48 +0000)]
Rangify more for loops in LegacyPassManager.cpp.

llvm-svn: 239166

9 years agoRemove stray semi-colon, NFC
Duncan P. N. Exon Smith [Fri, 5 Jun 2015 17:22:00 +0000 (17:22 +0000)]
Remove stray semi-colon, NFC

llvm-svn: 239165

9 years ago[Unroll] Rework the naming and structure of the new unroll heuristics.
Chandler Carruth [Fri, 5 Jun 2015 17:01:43 +0000 (17:01 +0000)]
[Unroll] Rework the naming and structure of the new unroll heuristics.

The new naming is (to me) much easier to understand. Here is a summary
of the new state of the world:

- '*Threshold' is the threshold for full unrolling. It is measured
  against the estimated unrolled cost as computed by getUserCost in TTI
  (or CodeMetrics, etc). We will exceed this threshold when unrolling
  loops where unrolling exposes a significant degree of simplification
  of the logic within the loop.
- '*PercentDynamicCostSavedThreshold' is the percentage of the loop's
  estimated dynamic execution cost which needs to be saved by unrolling
  to apply a discount to the estimated unrolled cost.
- '*DynamicCostSavingsDiscount' is the discount applied to the estimated
  unrolling cost when the dynamic savings are expected to be high.

When actually analyzing the loop, we now produce both an estimated
unrolled cost, and an estimated rolled cost. The rolled cost is notably
a dynamic estimate based on our analysis of the expected execution of
each iteration.

While we're still working to build up the infrastructure for making
these estimates, to me it is much more clear *how* to make them better
when they have reasonably descriptive names. For example, we may want to
apply estimated (from heuristics or profiles) dynamic execution weights
to the *dynamic* cost estimates. If we start doing that, we would also
need to track the static unrolled cost and the dynamic unrolled cost, as
only the latter could reasonably be weighted by profile information.

This patch is sadly not without functionality change for the new unroll
analysis logic. Buried in the heuristic management were several things
that surprised me. For example, we never subtracted the optimized
instruction count off when comparing against the unroll heursistics!
I don't know if this just got lost somewhere along the way or what, but
with the new accounting of things, this is much easier to keep track of
and we use the post-simplification cost estimate to compare to the
thresholds, and use the dynamic cost reduction ratio to select whether
we can exceed the baseline threshold.

The old values of these flags also don't necessarily make sense. My
impression is that none of these thresholds or discounts have been tuned
yet, and so they're just arbitrary placehold numbers. As such, I've not
bothered to adjust for the fact that this is now a discount and not
a tow-tier threshold model. We need to tune all these values once the
logic is ready to be enabled.

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

llvm-svn: 239164

9 years ago[dsymutil] Handle the -oso-prepend-path option when the input is a YAML debug map
Frederic Riss [Fri, 5 Jun 2015 16:35:44 +0000 (16:35 +0000)]
[dsymutil] Handle the -oso-prepend-path option when the input is a YAML debug map

All the tests using a YAML debug map will need this.

llvm-svn: 239163

9 years ago[bpf] rename triple names bpf_be -> bpfeb
Alexei Starovoitov [Fri, 5 Jun 2015 16:11:14 +0000 (16:11 +0000)]
[bpf] rename triple names bpf_be -> bpfeb

llvm-svn: 239162

9 years ago[Hexagon] Reapply r239097 with tests corrected for shuffling and duplexing.
Colin LeMahieu [Fri, 5 Jun 2015 16:00:11 +0000 (16:00 +0000)]
[Hexagon] Reapply r239097 with tests corrected for shuffling and duplexing.

llvm-svn: 239161

9 years agoAvoid C-style cast.
Joerg Sonnenberger [Fri, 5 Jun 2015 15:54:26 +0000 (15:54 +0000)]
Avoid C-style cast.

llvm-svn: 239160

9 years agoRevert "Include BPF target in CMake builds."
Alexei Starovoitov [Fri, 5 Jun 2015 15:32:38 +0000 (15:32 +0000)]
Revert "Include BPF target in CMake builds."

This reverts commit r239035

llvm-svn: 239159

9 years ago[TargetParser] Properly attach functions of ARMTargetParser to the class
Benjamin Kramer [Fri, 5 Jun 2015 14:33:02 +0000 (14:33 +0000)]
[TargetParser] Properly attach functions of ARMTargetParser to the class

llvm-svn: 239158

9 years ago[ARM] Make helper function static.
Benjamin Kramer [Fri, 5 Jun 2015 14:32:54 +0000 (14:32 +0000)]
[ARM] Make helper function static.

This one had a declaration but it differed from the definition so the
declaration was actually dead.

llvm-svn: 239157

9 years ago[SPARC] Fix windows test failure after r239154.
James Y Knight [Fri, 5 Jun 2015 14:16:39 +0000 (14:16 +0000)]
[SPARC] Fix windows test failure after r239154.

(Hopefully)

llvm-svn: 239156

9 years agoRangify for loops in LegacyPassManager.cpp.
Yaron Keren [Fri, 5 Jun 2015 14:15:07 +0000 (14:15 +0000)]
Rangify for loops in LegacyPassManager.cpp.

llvm-svn: 239155

9 years ago[SPARC] Add multiarch include paths.
James Y Knight [Fri, 5 Jun 2015 13:44:43 +0000 (13:44 +0000)]
[SPARC] Add multiarch include paths.

Adds tests verifying the proper dirs are found in the Debian 8/GCC4.9
layout for sparc (32bit), sparc (32bit) with lib64 multilib, and
sparc64.

The test cases added here also cover r239047, which fixed the linker
paths.

llvm-svn: 239154

9 years agoFix for PR14269: Clang crashes when a bit field is used as inline assembler
Alexander Musman [Fri, 5 Jun 2015 13:40:59 +0000 (13:40 +0000)]
Fix for PR14269: Clang crashes when a bit field is used as inline assembler
input / output with memory constraint.
One generally can't get address of a bit field, so the general solution is to
error on such cases. GCC does the same.

Patch by Andrey Bokhanko

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

llvm-svn: 239153

9 years ago[ARM] Use TargetParser to determine FPU subtarget features
John Brawn [Fri, 5 Jun 2015 13:34:11 +0000 (13:34 +0000)]
[ARM] Use TargetParser to determine FPU subtarget features

The main effect of this is to fix anomalies where certain -mfpu options didn't
disable everything that they should causing strange behaviour when combined
with -mcpu or -march values that themselves enabled fpu subtarget features,
e.g. -mfpu=fpv5-dp-d16 with -march=armv7em previously behaved the same as
-mfpu=fpv5-sp-d16 due to fp-only-sp not being disabled.

Invalid -mfpu options now also give an error, which is consistent with the
handling of the .fpu directive.

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

llvm-svn: 239152

9 years ago[ARM] Add support for -sp- FPUs and FPU none to TargetParser
John Brawn [Fri, 5 Jun 2015 13:31:19 +0000 (13:31 +0000)]
[ARM] Add support for -sp- FPUs and FPU none to TargetParser

These are added mainly for the benefit of clang, but this also means that they
are now allowed in .fpu directives and we emit the correct .fpu directive when
single-precision-only is used.

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

llvm-svn: 239151

9 years ago[ARM] Add knowledge of FPU subtarget features to TargetParser
John Brawn [Fri, 5 Jun 2015 13:29:24 +0000 (13:29 +0000)]
[ARM] Add knowledge of FPU subtarget features to TargetParser

Add getFPUFeatures to TargetParser, which gets the list of subtarget features
that are enabled/disabled for each FPU, and use it when handling the .fpu
directive.

No functional change in this commit, though clang will start behaving
differently once it starts using this.

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

llvm-svn: 239150

9 years agoclang-format: More eagerly wrap trailing return types.
Daniel Jasper [Fri, 5 Jun 2015 13:18:09 +0000 (13:18 +0000)]
clang-format: More eagerly wrap trailing return types.

Before:
  template <typename T>
  auto aaaaaaaaaaaaaaaaaaaaaa(T t) -> decltype(eaaaaaaaaaaaaaaa<T>(t.a)
                                                   .aaaaaaaa());

After:
  template <typename T>
  auto aaaaaaaaaaaaaaaaaaaaaa(T t)
      -> decltype(eaaaaaaaaaaaaaaa<T>(t.a).aaaaaaaa());

Also add a test case for a difficult template parsing case I stumbled accross.
Needs fixing.

llvm-svn: 239149

9 years agoImprove OSType initialization in elf object file's arch_spec
Ed Maste [Fri, 5 Jun 2015 13:03:08 +0000 (13:03 +0000)]
Improve OSType initialization in elf object file's arch_spec

Setting the OSType in the ArchSpec triple is needed to correctly setup
up the register context plugin. ArchSpec::SetArchitecture, for Mach-O
only, sets the OSType. For ELF it was left to the ObjectFileELF to fill
in the missing OSType.

This change moves the ObjectFileELF logic into ArchSpec.

A new optional 'os' parameter has been added to SetArchitecture.
For ELF, this value is the from the ELF header.e_ident[EI_OSABI].
The default value is 0 or ELFOSABI_NONE.

The real work of determining the OSType was done by the ObjectFileELF
helper function GetOsFromOSABI. This logic has been moved
SetArchitecture.

GetOsFromOSABI has been commented as being deprectated.  It is left in
to support asserts.

For ELF the vendor value returned from SetArchitecture should be
UnknownVendor.  An unneeded resetting in ObjectFileELF has been removed
and replaced with an assert.

This fixes a problem reading a core file on FreeBSD/ARM because the spec
triple was arm-unknown-unknown.

Patch by Tom Rix.

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

llvm-svn: 239148

9 years ago[ARMTargetParser] Follow-up for r239099: one case was missed
Artyom Skrobov [Fri, 5 Jun 2015 12:39:28 +0000 (12:39 +0000)]
[ARMTargetParser] Follow-up for r239099: one case was missed

llvm-svn: 239147

9 years ago[X86][AVX2] Added tests for v32i8 vector shifts
Simon Pilgrim [Fri, 5 Jun 2015 12:35:36 +0000 (12:35 +0000)]
[X86][AVX2] Added tests for v32i8 vector shifts

Currently still scalarized, but D9474 should remedy that.

llvm-svn: 239146

9 years agoRevert "[mips] [IAS] Restore STI.FeatureBits in .set pop." (r239144).
Toma Tabacu [Fri, 5 Jun 2015 12:19:27 +0000 (12:19 +0000)]
Revert "[mips] [IAS] Restore STI.FeatureBits in .set pop." (r239144).

This is breaking the Windows buildbots.

llvm-svn: 239145

9 years ago[mips] [IAS] Restore STI.FeatureBits in .set pop.
Toma Tabacu [Fri, 5 Jun 2015 11:48:54 +0000 (11:48 +0000)]
[mips] [IAS] Restore STI.FeatureBits in .set pop.

Summary:
Only restoring AvailableFeatures is not enough and will lead to buggy behaviour.
For example, if we have a feature enabled and we ".set pop", the next time we try
to ".set" that feature nothing will happen because the "!(STI.getFeatureBits()[Feature])"
check will be false, because we didn't restore STI.FeatureBits.

In order to fix this, we need to make MipsAssemblerOptions remember the STI.FeatureBits
instead of the AvailableFeatures and then regenerate AvailableFeatures each time we ".set pop".
This is because, AFAIK, there is no way to convert from AvailableFeatures back to STI.FeatureBits,
but the reverse is possible by using ComputeAvailableFeatures(STI.FeatureBits).

I also moved the updating of AssemblerOptions inside the "if" statement in
setFeatureBits() and clearFeatureBits(), as there is no reason to update if
nothing changes.

Reviewers: dsanders, mkuper

Reviewed By: dsanders

Subscribers: llvm-commits

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

llvm-svn: 239144

9 years ago[LoopVectorize] Don't crash on zero-sized types in isInductionPHI
David Majnemer [Fri, 5 Jun 2015 10:52:40 +0000 (10:52 +0000)]
[LoopVectorize] Don't crash on zero-sized types in isInductionPHI

isInductionPHI wants to calculate the stride based on the pointee size.
However, this is not possible when the pointee is zero sized.

This fixes PR23763.

llvm-svn: 239143

9 years agoSimplify code; NFC.
Andrea Di Biagio [Fri, 5 Jun 2015 10:29:55 +0000 (10:29 +0000)]
Simplify code; NFC.

Also, moved test cases from CodeGen/X86/fold-buildvector-bug.ll into
CodeGen/X86/buildvec-insertvec.ll and regenerated CHECK lines using
update_llc_test_checks.py.

llvm-svn: 239142