platform/upstream/llvm.git
9 years agoAdjust the wording of the "brackets go after the unqualified-id" error message. It...
Nick Lewycky [Fri, 1 May 2015 20:47:19 +0000 (20:47 +0000)]
Adjust the wording of the "brackets go after the unqualified-id" error message. It applies in cases that aren't unqualified-ids.

llvm-svn: 236344

9 years agoFix build.
Zachary Turner [Fri, 1 May 2015 20:33:10 +0000 (20:33 +0000)]
Fix build.

llvm-svn: 236343

9 years ago[llvm-pdbdump] Support dynamic load address and external symbols.
Zachary Turner [Fri, 1 May 2015 20:24:26 +0000 (20:24 +0000)]
[llvm-pdbdump] Support dynamic load address and external symbols.

This patch adds the --load-address command line option to
llvm-pdbdump, which dumps all addresses assuming the module has
loaded at the specified address.

Additionally, this patch adds an option to llvm-pdbdump to support
dumping of public symbols (i.e. symbols with external linkage).

llvm-svn: 236342

9 years agoReapply [RuntimeDyldELF] Fold Placeholder into Addend
Keno Fischer [Fri, 1 May 2015 20:21:45 +0000 (20:21 +0000)]
Reapply [RuntimeDyldELF] Fold Placeholder into Addend

This reapplies r235060 and 235070, which were reverted because of test failures
in LLDB. The failure was caused because at  moment RuntimeDyld is processing
relocations for all sections, irrespective of whether we actually load them
into memory or not, but RuntimeDyld was not actually remembering where in memory
the unrelocated section is. This commit includes a fix for that issue by
remembering that pointer, though the longer term fix should be to stop processing
unneeded sections.

Original Summary:

This allows us to get rid of the original unrelocated object file after
we're done processing relocations (but before applying them).
MachO and COFF already do not require this (currently we have temporary hacks
to prevent ownership from being released, but those are brittle and should be
removed soon).

The placeholder mechanism allowed the relocation resolver to look at original
object file to obtain more information that are required to apply the
relocations. This is usually necessary in two cases:

- For relocations targetting sub-word memory locations, there may be pieces
  of the instruction at the target address which we should not override.
- Some relocations on some platforms allow an extra addend to be encoded in
  their immediate fields.

The problem is that in the second case the information cannot be recovered
after the relocations have been applied once because they will have been
overridden. In the first case we also need to be careful to not use any bits
that aren't fixed and may have been overriden by applying a first relocation.

In the past both have been fixed by just looking at original object file. This
patch attempts to recover the information from the first by looking at the
relocated object file, while the extra addend in the second case is read
upon relocation processing and addend to the regular addend.

I have tested this on X86. Other platforms represent my best understanding
of how those relocations should work, but I may have missed something because
I do not have access to those platforms.
We will keep the ugly workarounds in place for a couple of days, so this commit
can be reverted if it breaks the bots.

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

llvm-svn: 236341

9 years agoRevert "[WinEH] Add an EH registration and state insertion pass for 32-bit x86"
Reid Kleckner [Fri, 1 May 2015 20:14:04 +0000 (20:14 +0000)]
Revert "[WinEH] Add an EH registration and state insertion pass for 32-bit x86"

This reverts commit r236339, it breaks the win32 clang-cl self-host.

llvm-svn: 236340

9 years ago[WinEH] Add an EH registration and state insertion pass for 32-bit x86
Reid Kleckner [Fri, 1 May 2015 20:04:54 +0000 (20:04 +0000)]
[WinEH] Add an EH registration and state insertion pass for 32-bit x86

This pass is responsible for constructing the EH registration object
that gets linked into fs:00, which is all it does in this change. In the
future, it will also insert stores to update the EH state number.

I considered keeping this functionality in WinEHPrepare, but it's pretty
separable and X86 specific. It has conceptually very little to do with
the task of WinEHPrepare, which is currently outlining.  WinEHPrepare is
also in theory useful on ARM, but this logic is pretty x86 specific.

Reviewers: andrew.w.kaylor, majnemer

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

llvm-svn: 236339

9 years agoSuppress clang/test/OpenMP/task_private_codegen.cpp on win32 for now. Investigating.
NAKAMURA Takumi [Fri, 1 May 2015 19:44:13 +0000 (19:44 +0000)]
Suppress clang/test/OpenMP/task_private_codegen.cpp on win32 for now. Investigating.

I'm dubious in weird behavior with CHECK-DAG.

Also, it won't "REQUIRE non-ms-sdk". All of RUNs have "-triple darwin".

llvm-svn: 236338

9 years agoEagerly correct typos in ParenExprs that may be type casts for non-C++ code.
Kaelyn Takata [Fri, 1 May 2015 19:36:25 +0000 (19:36 +0000)]
Eagerly correct typos in ParenExprs that may be type casts for non-C++ code.

This is needed to ensure the type casts are parsed properly. Fixes
PR23101.

llvm-svn: 236337

9 years agoRevert unrelated chunk committed by accident in r236334.
Davide Italiano [Fri, 1 May 2015 19:24:29 +0000 (19:24 +0000)]
Revert unrelated chunk committed by accident in r236334.

The change is likely to be correct, but unrelated to the aforementioned
commit and needs a test to gets shipped. Sorry.

llvm-svn: 236336

9 years agoInstrProf: Fix a coverage crash where a macro begins in an unreachable block
Justin Bogner [Fri, 1 May 2015 19:23:34 +0000 (19:23 +0000)]
InstrProf: Fix a coverage crash where a macro begins in an unreachable block

llvm-svn: 236335

9 years ago[ELF] Fix test for .init_array.
Davide Italiano [Fri, 1 May 2015 19:20:48 +0000 (19:20 +0000)]
[ELF] Fix test for .init_array.

Change the test so that it tests the right functionality.
Also put a description with the code from which the test was generated.
Reported by Simon Atanasysan.

llvm-svn: 236334

9 years ago[ARM] Transfer the internal flag in thumb2 size reduction.
Pete Cooper [Fri, 1 May 2015 18:57:32 +0000 (18:57 +0000)]
[ARM] Transfer the internal flag in thumb2 size reduction.

Converting from t2LDRs to tLDRr caused the shift argument to drop the internal flag.  This would then throw machine verifier errors.

Unfortunately i'm having trouble reducing a test case.  I'm going to keep trying, but so far its a scary combination of machine sinking, an 'and i1', loads feeding loads, and a bunch of code which shouldn't change IT block formation, but does.  Its not useful to commit a test in that state as we have no way of knowing if it even hits this code reliably in future.

rdar://problem/20752113

llvm-svn: 236333

9 years agoMove unit test into anonymous namespace as per convention.
Douglas Katzman [Fri, 1 May 2015 18:51:06 +0000 (18:51 +0000)]
Move unit test into anonymous namespace as per convention.

llvm-svn: 236332

9 years agoYAML: Fix the output of sequences that contain flow sequences.
Alex Lorenz [Fri, 1 May 2015 18:34:25 +0000 (18:34 +0000)]
YAML: Fix the output of sequences that contain flow sequences.

This patch fixes a bug where the YAML Output class emitted
a sequence of flow sequences without the '-' characters.
Before:

  seq:
    [ a, b ]
    [ c, d ]

After:

  seq:
    - [ a, b ]
    - [ c, d ]

Reviewers: Justin Bogner

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

llvm-svn: 236329

9 years agoUpdate YamlIO documentation for the ScalarTraits class.
Alex Lorenz [Fri, 1 May 2015 18:20:23 +0000 (18:20 +0000)]
Update YamlIO documentation for the ScalarTraits class.

This patch adds the missing context parameter to the
input and output methods in ScalarTraits.

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

llvm-svn: 236328

9 years agoARM: Align functions containing Thumb-2 jump tables to 4 bytes.
Peter Collingbourne [Fri, 1 May 2015 18:05:59 +0000 (18:05 +0000)]
ARM: Align functions containing Thumb-2 jump tables to 4 bytes.

Functions with jump tables need an alignment of 4 because they use the ADR
instruction, which aligns the PC to 4 bytes before adding an offset.

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

llvm-svn: 236327

9 years agoFix infinite recursion in ScaledNumber::toInt.
Diego Novillo [Fri, 1 May 2015 17:59:15 +0000 (17:59 +0000)]
Fix infinite recursion in ScaledNumber::toInt.

Patch from dexonsmith. The call to toInt() was calling compareTo() which
in some cases would call back to toInt(), creating an infinite loop.

Fixed by simplifying the logic in compareTo() to avoid the co-recursion.

llvm-svn: 236326

9 years agoR600: Report fp64 on all capable asics
Jan Vesely [Fri, 1 May 2015 17:38:13 +0000 (17:38 +0000)]
R600: Report fp64 on all capable asics

Signed-off-by: Jan Vesely <jan.vesely@rutgers.edu>
Reviewed-by: Tom Stellard <thomas.stellard@amd.com>
llvm-svn: 236325

9 years ago[Sparc] Repair fixups in little endian mode.
James Y Knight [Fri, 1 May 2015 17:13:02 +0000 (17:13 +0000)]
[Sparc] Repair fixups in little endian mode.

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

llvm-svn: 236324

9 years agoFixed some compiler warnings because of bit-width mismatches.
Chaoren Lin [Fri, 1 May 2015 16:58:18 +0000 (16:58 +0000)]
Fixed some compiler warnings because of bit-width mismatches.

llvm-svn: 236323

9 years agoFix omission from adding sparcel (original http://reviews.llvm.org/D9263)
Douglas Katzman [Fri, 1 May 2015 16:49:58 +0000 (16:49 +0000)]
Fix omission from adding sparcel (original reviews.llvm.org/D9263)

"obviously" it needs to go in parseArch *and* getArchTypeForLLVMName.

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

llvm-svn: 236322

9 years agoSupport remote-android with multiple connected devices.
Chaoren Lin [Fri, 1 May 2015 16:49:28 +0000 (16:49 +0000)]
Support remote-android with multiple connected devices.

Summary:
This change introduces a new URL scheme for `platform connect`:
```
adb://device-id:port
```

Reviewers: vharron, tberghammer, clayborg, ovyalov

Reviewed By: ovyalov

Subscribers: tberghammer, lldb-commits

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

llvm-svn: 236321

9 years agoPosixPipes should not be copyable but should be movable.
Chaoren Lin [Fri, 1 May 2015 16:49:23 +0000 (16:49 +0000)]
PosixPipes should not be copyable but should be movable.

Summary: This addresses Oleksiy's comment in D9307.

Reviewers: clayborg, ovyalov

Reviewed By: clayborg, ovyalov

Subscribers: lldb-commits

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

llvm-svn: 236320

9 years agoFix float->uint conversion for inputs less than 0
Derek Schuff [Fri, 1 May 2015 16:02:16 +0000 (16:02 +0000)]
Fix float->uint conversion for inputs less than 0

Summary:
The spec for these functions says that they should return 0 in this case but
this regressed in r234148. That revision essentially delegates the conversion
to the hardware, but that has different behavior on different platforms (e.g.
it is wrong on x86).

Also fix a typo in the name of __fixunsdfti

Test Plan: The existing unit tests now pass

Reviewers: joerg, howard.hinnant

Subscribers: llvm-commits

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

llvm-svn: 236319

9 years agoRemove std::move on return of temporary.
Benjamin Kramer [Fri, 1 May 2015 15:26:22 +0000 (15:26 +0000)]
Remove std::move on return of temporary.

No functionality change. Found by -Wpessimizing-move.

llvm-svn: 236318

9 years agoRemove std::move on return of temporary.
Benjamin Kramer [Fri, 1 May 2015 15:25:29 +0000 (15:25 +0000)]
Remove std::move on return of temporary.

No functionality change. Found by -Wpessimizing-move.

llvm-svn: 236317

9 years agoRemove std::move on return when it could prevent copy elision.
Benjamin Kramer [Fri, 1 May 2015 15:16:11 +0000 (15:16 +0000)]
Remove std::move on return when it could prevent copy elision.

Found by -Wpessimizing-move, no functional change. The APFloat and
PassManager change doesn't affect codegen as returning a by-value
argument will always result in a move.

llvm-svn: 236316

9 years agoMake helper functions static. NFC.
Benjamin Kramer [Fri, 1 May 2015 13:59:53 +0000 (13:59 +0000)]
Make helper functions static. NFC.

llvm-svn: 236315

9 years ago[Mips] Check creation of GOT entries corresponded to R_MIPS_REL32 relocations
Simon Atanasyan [Fri, 1 May 2015 13:41:45 +0000 (13:41 +0000)]
[Mips] Check creation of GOT entries corresponded to R_MIPS_REL32 relocations

No functional changes.

llvm-svn: 236314

9 years ago[mips] [IAS] Fix error messages for using LI with 64-bit immediates.
Toma Tabacu [Fri, 1 May 2015 12:19:27 +0000 (12:19 +0000)]
[mips] [IAS] Fix error messages for using LI with 64-bit immediates.

Summary:
LI should never accept immediates larger than 32 bits.
The additional Is32BitImm boolean also paves the way for unifying the functionality that LA and LI have in common.

Reviewers: dsanders

Reviewed By: dsanders

Subscribers: llvm-commits

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

llvm-svn: 236313

9 years ago[CMake] Also search for prefixed versions of ld.gold
Niels Ole Salscheider [Fri, 1 May 2015 11:58:30 +0000 (11:58 +0000)]
[CMake] Also search for prefixed versions of ld.gold

llvm-svn: 236312

9 years ago[mips] [IAS] Slightly improve shift instruction generation in expandLoadImm.
Toma Tabacu [Fri, 1 May 2015 10:26:47 +0000 (10:26 +0000)]
[mips] [IAS] Slightly improve shift instruction generation in expandLoadImm.

Summary:
Generate one DSLL32 of 0 instead of two consecutive DSLL of 16.
In order to do this I had to change createLShiftOri's template argument from a bool to an unsigned.

This also gave me the opportunity to rewrite the mips64-expansions.s test, as it was testing the same cases multiple times and skipping over other cases.
It was also somewhat unreadable, as the CHECK lines were grouped in a huge block of text at the beginning of the file.

Reviewers: dsanders

Reviewed By: dsanders

Subscribers: llvm-commits

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

llvm-svn: 236311

9 years agoASTReader.h: Prune "\param Complain" since r236300. [-Wdocumentation]
NAKAMURA Takumi [Fri, 1 May 2015 08:38:41 +0000 (08:38 +0000)]
ASTReader.h: Prune "\param Complain" since r236300. [-Wdocumentation]

llvm-svn: 236310

9 years agoRevert r236001, "Disable clang-tools-extra/test/pp-trace/pp-trace-modules.cpp on...
NAKAMURA Takumi [Fri, 1 May 2015 08:38:22 +0000 (08:38 +0000)]
Revert r236001, "Disable clang-tools-extra/test/pp-trace/pp-trace-modules.cpp on win32 for now. Investigating."

It has been resolved.

llvm-svn: 236309

9 years ago[SelectionDAG] Unary vector constant folding integer legality fixes
Simon Pilgrim [Fri, 1 May 2015 08:20:04 +0000 (08:20 +0000)]
[SelectionDAG] Unary vector constant folding integer legality fixes

This patch fixes issues with vector constant folding not correctly handling scalar input operands if they require implicit truncation - this was tested with llvm-stress as recommended by Patrik H Hagglund.

The patch ensures that integer input scalars from a build vector are correctly truncated before folding, and that constant integer scalar results are promoted to a legal type before inclusion in the new folded build vector.

I have added another crash test case and also a test for UINT_TO_FP / SINT_TO_FP using an non-truncated scalar input, which was failing before this patch.

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

llvm-svn: 236308

9 years agoR600/SI: Add VCC as an implict def of SI_KILL
Tom Stellard [Fri, 1 May 2015 03:44:09 +0000 (03:44 +0000)]
R600/SI: Add VCC as an implict def of SI_KILL

When SI_KILL has a register operand, its lowered form writes to vcc.

llvm-svn: 236307

9 years agoR600/SI: Fix verifier errors from the SIAnnotateControlFlow pass
Tom Stellard [Fri, 1 May 2015 03:44:08 +0000 (03:44 +0000)]
R600/SI: Fix verifier errors from the SIAnnotateControlFlow pass

This pass was generating 'Instruction does not dominate all uses!'
errors for programs which had loops with a condition variable that
depended on the result of a phi instruction from outside of the loop.

The pass was inserting new phi nodes outside of the loop which used values
defined inside the loop.

http://bugs.freedesktop.org/show_bug.cgi?id=90056

llvm-svn: 236306

9 years agoFix a few line endings. NFC.
Yunzhong Gao [Fri, 1 May 2015 02:04:32 +0000 (02:04 +0000)]
Fix a few line endings. NFC.

llvm-svn: 236301

9 years ago[modules] Start moving the module visibility information off the Module itself.
Richard Smith [Fri, 1 May 2015 01:53:09 +0000 (01:53 +0000)]
[modules] Start moving the module visibility information off the Module itself.

It has no place there; it's not a property of the Module, and it makes
restoring the visibility set when we leave a submodule more difficult.

llvm-svn: 236300

9 years agoDisallow conversions from function pointers to void*.
Eric Fiselier [Fri, 1 May 2015 01:49:37 +0000 (01:49 +0000)]
Disallow conversions from function pointers to void*.

Function pointers and member function pointers cannot be converted to void*.
libc++abi incorrectly allows this conversion for function pointers.

Review URL: http://reviews.llvm.org/D8811

llvm-svn: 236299

9 years agoInstrProf: This call does nothing, remove it
Justin Bogner [Fri, 1 May 2015 01:02:17 +0000 (01:02 +0000)]
InstrProf: This call does nothing, remove it

llvm-svn: 236298

9 years agoAdded support for locating and importing functions
Sean Callanan [Fri, 1 May 2015 00:47:29 +0000 (00:47 +0000)]
Added support for locating and importing functions
(including inline functions) from modules in the
expression parser.  We now have to retain a reference
to the code generator in ClangExpressionDeclMap so
that any imported function bodies can be appropriately
sent to that code generator.

<rdar://problem/19883002>

llvm-svn: 236297

9 years ago[ARM][TEST] Strengthen test against smarter reg alloc.
Quentin Colombet [Fri, 1 May 2015 00:45:55 +0000 (00:45 +0000)]
[ARM][TEST] Strengthen test against smarter reg alloc.
Follow-up of r236247.

rdar://problem/20770899

llvm-svn: 236296

9 years agoFixed some compiler warnings because of bit-width
Sean Callanan [Fri, 1 May 2015 00:44:36 +0000 (00:44 +0000)]
Fixed some compiler warnings because of bit-width
mismatches.

llvm-svn: 236295

9 years ago[asancov] Fix coverage reserving 4x the necessary amount of memory on fork.
Evgeniy Stepanov [Fri, 1 May 2015 00:40:42 +0000 (00:40 +0000)]
[asancov] Fix coverage reserving 4x the necessary amount of memory on fork.

llvm-svn: 236294

9 years agoChange test target from x86_64-linux to x86_64.
Davide Italiano [Fri, 1 May 2015 00:36:41 +0000 (00:36 +0000)]
Change test target from x86_64-linux to x86_64.

llvm-svn: 236293

9 years agoUpdated our use of clang::Preprocessor to reflect
Sean Callanan [Fri, 1 May 2015 00:19:44 +0000 (00:19 +0000)]
Updated our use of clang::Preprocessor to reflect
a change in the API used to get macros.

llvm-svn: 236292

9 years ago[ELF] Mark linker defined symbols as .hidden when needed.
Davide Italiano [Fri, 1 May 2015 00:07:11 +0000 (00:07 +0000)]
[ELF] Mark linker defined symbols as .hidden when needed.

I noticed that gold mark these as hidden. While at it I rewrote the test for
this feature to use yaml rather than an object file as input.

Differential Revision: http://reviews.llvm.org/D9418
Reviewed by: ruiu

llvm-svn: 236291

9 years ago[ARM] optimizeSelect should clear kill flags.
Pete Cooper [Thu, 30 Apr 2015 23:57:47 +0000 (23:57 +0000)]
[ARM] optimizeSelect should clear kill flags.

If we move an instruction from one block down to a MOVC and predicate it,
then the original instruction could be moved in to a loop.  In this case,
its invalid for any kill flags to remain on there.

Fails with -verfy-machineinstrs.

rdar://problem/20752113

llvm-svn: 236290

9 years agoInstrProf: Support for setting profile output from command line
Justin Bogner [Thu, 30 Apr 2015 23:49:42 +0000 (23:49 +0000)]
InstrProf: Support for setting profile output from command line

This change is the third of 3 patches to add support for specifying
the profile output from the command line via -fprofile-instr-generate=<path>,
where the specified output path/file will be overridden by the
LLVM_PROFILE_FILE environment variable.

This patch adds the necessary support to the clang frontend, and adds a
new test.

The compiler-rt and llvm parts are r236055 and r236288, respectively.

Patch by Teresa Johnson. Thanks!

llvm-svn: 236289

9 years agoInstrProf: Instrumenter support for setting profile output from command line
Justin Bogner [Thu, 30 Apr 2015 23:49:23 +0000 (23:49 +0000)]
InstrProf: Instrumenter support for setting profile output from command line

This change is the second of 3 patches to add support for specifying
the profile output from the command line via -fprofile-instr-generate=<path>,
where the specified output path/file will be overridden by the
LLVM_PROFILE_FILE environment variable.

This patch adds the necessary support to the llvm instrumenter, specifically
a new member of GCOVOptions for clang to save the specified filename, and
support for calling the new compiler-rt interface from __llvm_profile_init.

Patch by Teresa Johnson. Thanks!

llvm-svn: 236288

9 years agoDon't return nullptr when you mean to return an empty llvm::StringRef...
Jim Ingham [Thu, 30 Apr 2015 23:45:07 +0000 (23:45 +0000)]
Don't return nullptr when you mean to return an empty llvm::StringRef...

<rdar://problem/20747164>

llvm-svn: 236287

9 years agoGuard against the case where the Write method is called with
Jason Molenda [Thu, 30 Apr 2015 23:42:56 +0000 (23:42 +0000)]
Guard against the case where the Write method is called with
an argument pointing into the middle of m_buffer and then
Write() calls GrowBuffer() to resize m_buffer, leaving
the content argument pointing into deallocated memory.

Patch by Kate Stone.
<rdar://problem/20756722>

llvm-svn: 236286

9 years agoMake macro dumping robust against a nonexistent macro.
Richard Smith [Thu, 30 Apr 2015 23:42:10 +0000 (23:42 +0000)]
Make macro dumping robust against a nonexistent macro.

llvm-svn: 236285

9 years agoUse #include "lldb/API/SBCommandReturnObject.h" instead of <...>.
Jason Molenda [Thu, 30 Apr 2015 23:31:04 +0000 (23:31 +0000)]
Use #include "lldb/API/SBCommandReturnObject.h" instead of <...>.

llvm-svn: 236284

9 years agoFix typo
Matt Arsenault [Thu, 30 Apr 2015 23:20:56 +0000 (23:20 +0000)]
Fix typo

llvm-svn: 236283

9 years agoCommute the internal flag on MachineOperands.
Pete Cooper [Thu, 30 Apr 2015 23:14:14 +0000 (23:14 +0000)]
Commute the internal flag on MachineOperands.

When commuting a thumb instruction in the size reduction pass, thumb
instructions are represented as a bundle and so some operands may be marked
as internal.  The internal flag has to move with the operand when commuting.

This test is sensitive to register allocation so can't specifically check that
this error was happening, but so long as it continues to pass with -verify then
hopefully its still ok.

rdar://problem/20752113

llvm-svn: 236282

9 years agoFix -Wpessimizing-move by removing call to std::move
Richard Trieu [Thu, 30 Apr 2015 23:13:52 +0000 (23:13 +0000)]
Fix -Wpessimizing-move by removing call to std::move

llvm-svn: 236281

9 years ago[modules] Add a mechanism to dump information about a macro.
Richard Smith [Thu, 30 Apr 2015 23:10:40 +0000 (23:10 +0000)]
[modules] Add a mechanism to dump information about a macro.

Wire this up to "#pragma clang __debug macro <name>".

llvm-svn: 236280

9 years ago[Object] Teach Object and llvm-objdump about ".hidden"
Davide Italiano [Thu, 30 Apr 2015 23:08:53 +0000 (23:08 +0000)]
[Object] Teach Object and llvm-objdump about ".hidden"

Differential Revision: http://reviews.llvm.org/D9416
Reviewed by: rafael

llvm-svn: 236279

9 years agoFix -Wpessimizing-move warnings by removing std::move calls.
Richard Trieu [Thu, 30 Apr 2015 23:07:00 +0000 (23:07 +0000)]
Fix -Wpessimizing-move warnings by removing std::move calls.

llvm-svn: 236278

9 years agoInstrProf: Fix handling of profile counters in the body of range based for
Justin Bogner [Thu, 30 Apr 2015 22:58:28 +0000 (22:58 +0000)]
InstrProf: Fix handling of profile counters in the body of range based for

We were assigning the counter for the body of the loop to the loop
variable initialization for some reason here, but our tests completely
lacked coverage for range-for loops. This fixes that and makes the
logic generally more similar to the logic for a regular for.

llvm-svn: 236277

9 years agoRe-commit the test fix that went with r236274
Reid Kleckner [Thu, 30 Apr 2015 22:42:45 +0000 (22:42 +0000)]
Re-commit the test fix that went with r236274

llvm-svn: 236276

9 years agoRemove unnecessary break.
Rafael Espindola [Thu, 30 Apr 2015 22:41:12 +0000 (22:41 +0000)]
Remove unnecessary break.

llvm-svn: 236275

9 years agoRevert most of r236271, leaving only the datalayout change in lib/Basic/Targets.cpp
Reid Kleckner [Thu, 30 Apr 2015 22:29:25 +0000 (22:29 +0000)]
Revert most of r236271, leaving only the datalayout change in lib/Basic/Targets.cpp

llvm-svn: 236274

9 years ago[AArch64] Fix bad register class constraint in fast-isel for TST instruction.
Quentin Colombet [Thu, 30 Apr 2015 22:27:20 +0000 (22:27 +0000)]
[AArch64] Fix bad register class constraint in fast-isel for TST instruction.

rdar://problem/20748715

llvm-svn: 236273

9 years agoDon't always apply kill flag in thumb2 ABS pseudo expansion.
Pete Cooper [Thu, 30 Apr 2015 22:15:59 +0000 (22:15 +0000)]
Don't always apply kill flag in thumb2 ABS pseudo expansion.

The expansion for t2ABS was always setting the kill flag on the rsb instruction.
It should instead only be set on rsb if it was set on the original ABS instruction.

rdar://problem/20752113

llvm-svn: 236272

9 years agoUse 4 byte preferred aggregate alignment in datalayout on x86 Win32
Reid Kleckner [Thu, 30 Apr 2015 22:13:05 +0000 (22:13 +0000)]
Use 4 byte preferred aggregate alignment in datalayout on x86 Win32

llvm-svn: 236271

9 years ago[X86] Use 4 byte preferred aggregate alignment on Win32
Reid Kleckner [Thu, 30 Apr 2015 22:11:59 +0000 (22:11 +0000)]
[X86] Use 4 byte preferred aggregate alignment on Win32

This helps reduce the frequency of stack realignment prologues in 32-bit
X86 Windows code. Before this change and the corresponding clang change,
we would take the max of the type preferred alignment and the explicit
alignment on the alloca.

If you don't override aggregate alignment in datalayout, you get a
default of 8. This dates back to 2007 / r34356, and changing it seems
prohibitively difficult at this point.

llvm-svn: 236270

9 years agoInstCombineSimplifyDemanded: Remove nsw/nuw flags when optimizing demanded bits
Matthias Braun [Thu, 30 Apr 2015 22:05:30 +0000 (22:05 +0000)]
InstCombineSimplifyDemanded: Remove nsw/nuw flags when optimizing demanded bits

When optimizing demanded bits of the operands of an Add we have to
remove the nsw/nuw flags as we have no guarantee anymore that we don't
wrap.  This is legal here because the top bit is not demanded.  In fact
this operaion was already performed but missed in the case of an Add
with a constant on the right side.  To fix this this patch refactors the
code to unify the code paths in SimplifyDemandedUseBits() handling of
Add/Sub:

- The transformation of Add->Or is removed from the simplify demand
  code because the equivalent transformation exists in
  InstCombiner::visitAdd()
- KnownOnes/KnownZero are not adjusted for Add x, C anymore as
  computeKnownBits() already performs these computations.
- The simplification of the operands is unified. In this new version
  constant on the right side of a Sub are shrunk now as I could not find
  a reason why not to do so.
- The special case for clearing nsw/nuw in ShrinkDemandedConstant() is
  not necessary anymore as the caller does that already.

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

llvm-svn: 236269

9 years agoInstCombine: Move Sub->Xor rule from SimplifyDemanded to InstCombine
Matthias Braun [Thu, 30 Apr 2015 22:04:26 +0000 (22:04 +0000)]
InstCombine: Move Sub->Xor rule from SimplifyDemanded to InstCombine

The rule that turns a sub to xor if the LHS is 2^n-1 and the remaining bits
are known zero, does not use the demanded bits at all: Move it to the
normal InstCombine code path.

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

llvm-svn: 236268

9 years agoSimplify the creation of compressed debug sections.
Rafael Espindola [Thu, 30 Apr 2015 21:51:58 +0000 (21:51 +0000)]
Simplify the creation of compressed debug sections.

This is actually fairly simple in the current code layout: Check if we should
compress just before writing out and everything else just works.

This removes the last case in which the object writer was creating a
fragment.

llvm-svn: 236267

9 years agoMade macros from modules be injected before our
Sean Callanan [Thu, 30 Apr 2015 21:49:58 +0000 (21:49 +0000)]
Made macros from modules be injected before our
global convenience expression prefix.  Also ensured
that if macros are defined by the modules we don't
try to redefine them.  Finally cleaned up a bit of
code while I was in there.

<rdar://problem/20756642>

llvm-svn: 236266

9 years agoFix -Wpessimizing-move warning by remove the call to std::move.
Richard Trieu [Thu, 30 Apr 2015 21:47:28 +0000 (21:47 +0000)]
Fix -Wpessimizing-move warning by remove the call to std::move.

llvm-svn: 236265

9 years agoInstrProf: Make sure coverage propagates out of foreach loops correctly
Justin Bogner [Thu, 30 Apr 2015 21:31:02 +0000 (21:31 +0000)]
InstrProf: Make sure coverage propagates out of foreach loops correctly

llvm-svn: 236264

9 years agoFix comment in test. NFC.
Andrea Di Biagio [Thu, 30 Apr 2015 21:22:28 +0000 (21:22 +0000)]
Fix comment in test. NFC.

llvm-svn: 236262

9 years agoReplace unreachable code with llvm_unreachable.
Rafael Espindola [Thu, 30 Apr 2015 21:20:06 +0000 (21:20 +0000)]
Replace unreachable code with llvm_unreachable.

llvm-svn: 236261

9 years agoDon't create a MCSectionData when we don't have to.
Rafael Espindola [Thu, 30 Apr 2015 21:10:06 +0000 (21:10 +0000)]
Don't create a MCSectionData when we don't have to.

llvm-svn: 236260

9 years agoRemove the NullLog class introduced in r236174.
Zachary Turner [Thu, 30 Apr 2015 21:03:37 +0000 (21:03 +0000)]
Remove the NullLog class introduced in r236174.

Based on list discussions, a different approach is desired for
reducing the visual impact of logging statements on the
readability of the code.  Another mechanism will be added in
a followup patch, but for now, since NullLog is unreferenced,
this patch just removes it.

This patch does *not* remove the other half of r236174, which was
to delete some dead code surrounding logging flags.

llvm-svn: 236259

9 years agoFix for PR23103. Correctly propagate the 'IsUndef' flag to the register operands...
Andrea Di Biagio [Thu, 30 Apr 2015 21:03:29 +0000 (21:03 +0000)]
Fix for PR23103. Correctly propagate the 'IsUndef' flag to the register operands of a commuted instruction.

Revision 220239 exposed a latent bug in method
'TargetInstrInfo::commuteInstruction'. When commuting the operands of a machine
instruction, method 'commuteInstruction' didn't correctly propagate the
'IsUndef' flag to the register operands of the new (commuted) instruction.

Before this patch, the following instruction:
  %vreg4<def> = VADDSDrr  %vreg14, %vreg5<undef>; FR64:%vreg4,%vreg14,%vreg5

was wrongly converted by method 'commuteInstruction' into:
  %vreg4<def> = VADDSDrr  %vreg5, %vreg14<undef>; FR64:%vreg4,%vreg5,%vreg14

The correct instruction should have been:
  %vreg4<def> = VADDSDrr  %vreg5<undef>, %vreg14; FR64:%vreg4,%vreg5,%vreg14

This patch fixes the problem in method 'TargetInstrInfo::commuteInstruction'.
When swapping the operands of a machine instruction, we now make sure that
'IsUndef' flags are correctly set.
Added test case 'pr23103.ll'.

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

llvm-svn: 236258

9 years agoAvoid an extra loop over the sections.
Rafael Espindola [Thu, 30 Apr 2015 20:57:14 +0000 (20:57 +0000)]
Avoid an extra loop over the sections.

Add string to the section header string table as we add sections.

llvm-svn: 236257

9 years agoPR19691: initialize MacroDirective::DefInfo::IsPublic member in "invalid" state.
Richard Smith [Thu, 30 Apr 2015 20:53:28 +0000 (20:53 +0000)]
PR19691: initialize MacroDirective::DefInfo::IsPublic member in "invalid" state.

No functionality change; no-one inspects this field yet, and probably no-one
will ever inspect it in the "invalid" state, but ubsan could be unhappy about
this if such a DefInfo is copied.

llvm-svn: 236256

9 years agoMake the section table a member of ELFObjectWriter.
Rafael Espindola [Thu, 30 Apr 2015 20:53:27 +0000 (20:53 +0000)]
Make the section table a member of ELFObjectWriter.

This avoids passing it around and lets us build a small helper to add
a section to the table.

llvm-svn: 236255

9 years agoPR22354: Add a test that we emit copy-ctors for captures in generic lambdas.
Richard Smith [Thu, 30 Apr 2015 20:51:03 +0000 (20:51 +0000)]
PR22354: Add a test that we emit copy-ctors for captures in generic lambdas.

The bug was fixed by r235921.

llvm-svn: 236254

9 years agoNothing inherits from this, drop the protected:
Rafael Espindola [Thu, 30 Apr 2015 20:37:36 +0000 (20:37 +0000)]
Nothing inherits from this, drop the protected:

llvm-svn: 236253

9 years agoFor llvm-objdump, with the -archive-headers and -macho options, use the -non-verbose
Kevin Enderby [Thu, 30 Apr 2015 20:30:42 +0000 (20:30 +0000)]
For llvm-objdump, with the -archive-headers and -macho options, use the -non-verbose
option to print the archive headers using raw numeric values.  Also add the -archive-member-offsets
for use with these to also trigger printing of the offset of the archive member from the start
of the archive.

llvm-svn: 236252

9 years agoExhaustively test all triples in TripleTest.
Douglas Katzman [Thu, 30 Apr 2015 20:08:44 +0000 (20:08 +0000)]
Exhaustively test all triples in TripleTest.

Iteration over all permutations didn't really work,
due to evolution of the underlying enums.

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

llvm-svn: 236251

9 years agoMips: Remove dead declaration
Matt Arsenault [Thu, 30 Apr 2015 19:35:43 +0000 (19:35 +0000)]
Mips: Remove dead declaration

llvm-svn: 236250

9 years agoMachineVerifier: Don't crash if MachineOperand has no parent
Matt Arsenault [Thu, 30 Apr 2015 19:35:41 +0000 (19:35 +0000)]
MachineVerifier: Don't crash if MachineOperand has no parent

If you somehow added a MachineOperand to an instruction
that did not have the parent set, the verifier would
crash since it attempts to use the operand's parent.

llvm-svn: 236249

9 years agoDon't rewrite jumps to empty BBs to landing pads.
Pete Cooper [Thu, 30 Apr 2015 18:58:23 +0000 (18:58 +0000)]
Don't rewrite jumps to empty BBs to landing pads.

In the test case here, the 'unreachable' BB was removed by BranchFolding because its empty.

It then rewrote the jump from 'entry' to jump to its fallthrough, which was a landing pad.

This results in 'entry' jumping to 2 different landing pads, which fails the machine verifier.

rdar://problem/20750162

llvm-svn: 236248

9 years ago[ARM] Do not generate invalid encoding for stack adjust, even if this is just
Quentin Colombet [Thu, 30 Apr 2015 18:52:49 +0000 (18:52 +0000)]
[ARM] Do not generate invalid encoding for stack adjust, even if this is just
temporary.

Because of that:
1. The machine verifier was complaining on such code.
2. The generate code worked just because the thumb reduction size pass fixed the
opcode.

rdar://problem/20749824

llvm-svn: 236247

9 years agoFix the end location of init-capture annotations in ObjC++
Ben Langmuir [Thu, 30 Apr 2015 18:40:23 +0000 (18:40 +0000)]
Fix the end location of init-capture annotations in ObjC++

And thereby stop asserting.

In ObjC++ modes, we tentatively parse the lambda introducer twice: once
to disambiguate designators, which we also do in C++, and a second time
to disambiguate objc message expressions. During the second tentative
parse, the last cached token will be the annotation token we built in
the first parse. So use getLastLoc() to get the correct end location
for the rebuilt annotation.

llvm-svn: 236246

9 years agoAArch64: add BFC alias for the BFI/BFM instructions.
Tim Northover [Thu, 30 Apr 2015 18:28:58 +0000 (18:28 +0000)]
AArch64: add BFC alias for the BFI/BFM instructions.

Unlike 32-bit ARM, AArch64 can use wzr/xzr to implement this without the need
for a separate instruction.

rdar://18679590

llvm-svn: 236245

9 years agoAdd a note about permitting default member initializers
Reid Kleckner [Thu, 30 Apr 2015 18:17:12 +0000 (18:17 +0000)]
Add a note about permitting default member initializers

Use them in WinEHPrepare so that we can spot any toolchain bugs that
come up.

llvm-svn: 236244

9 years agoRemove some leftover debugging code.
David Majnemer [Thu, 30 Apr 2015 18:16:38 +0000 (18:16 +0000)]
Remove some leftover debugging code.

llvm-svn: 236243

9 years agoDon't warn about use of deprecated API when the containing context is unavailable.
Jordan Rose [Thu, 30 Apr 2015 17:20:35 +0000 (17:20 +0000)]
Don't warn about use of deprecated API when the containing context is unavailable.

This probably won't come up much, but it seems tidier.

Related to rdar://problem/20713550

llvm-svn: 236242

9 years agoBatch up access-related diagnostics on enum constants until the whole enum is parsed.
Jordan Rose [Thu, 30 Apr 2015 17:20:30 +0000 (17:20 +0000)]
Batch up access-related diagnostics on enum constants until the whole enum is parsed.

That way we can take any trailing availability attributes into account.

rdar://problem/20713550

llvm-svn: 236241

9 years agoReinstate revisions r234755, r234759, r234760
Jan Vesely [Thu, 30 Apr 2015 17:15:56 +0000 (17:15 +0000)]
Reinstate revisions r234755, r234759, r234760

changes:
  Don't apply on hexagon and NVPTX since they no longer claim to support UADDO/USUBO
  Add location to getConstant
  Drop comment about the ops being turned into expand

llvm-svn: 236240

9 years ago[MS ABI] Correctly make paths through covariant virtual bases
David Majnemer [Thu, 30 Apr 2015 17:15:48 +0000 (17:15 +0000)]
[MS ABI] Correctly make paths through covariant virtual bases

There can be multiple virtual bases which are on the path to a vfptr
when one vbase virtually inherits from another.  We should prefer the
most derived virtual base which covariantly overrides a method in the
vfptr class;  if we do not lengthen the path this way, we will end up
with too few vftable entries.

This fixes PR21073.

llvm-svn: 236239

9 years ago[AST] Fix some typos
David Majnemer [Thu, 30 Apr 2015 17:15:46 +0000 (17:15 +0000)]
[AST] Fix some typos

llvm-svn: 236238