platform/upstream/llvm.git
9 years ago[ARM] Add support for ARMV6K subtarget (Clang)
Renato Golin [Tue, 17 Mar 2015 11:55:43 +0000 (11:55 +0000)]
[ARM] Add support for ARMV6K subtarget (Clang)

ARMv6K is another layer between ARMV6 and ARMV6T2. This is the Clang
side of the changes.

ARMV6 family LLVM implementation.

+-------------------------------------+
| ARMV6                               |
+----------------+--------------------+
| ARMV6M (thumb) | ARMV6K (arm,thumb) | <- From ARMV6K and ARMV6M processors
+----------------+--------------------+    have support for hint instructions
| ARMV6T2 (arm,thumb,thumb2)          |    (SEV/WFE/WFI/NOP/YIELD). They can
+-------------------------------------+    be either real or default to NOP.
| ARMV7 (arm,thumb,thumb2)            |    The two processors also use
+-------------------------------------+    different encoding for them.

Patch by Vinicius Tinti.

llvm-svn: 232469

9 years ago[ARM] Add support for ARMV6K subtarget (LLVM)
Renato Golin [Tue, 17 Mar 2015 11:55:28 +0000 (11:55 +0000)]
[ARM] Add support for ARMV6K subtarget (LLVM)

ARMv6K is another layer between ARMV6 and ARMV6T2. This is the LLVM
side of the changes.

ARMV6 family LLVM implementation.

+-------------------------------------+
| ARMV6                               |
+----------------+--------------------+
| ARMV6M (thumb) | ARMV6K (arm,thumb) | <- From ARMV6K and ARMV6M processors
+----------------+--------------------+    have support for hint instructions
| ARMV6T2 (arm,thumb,thumb2)          |    (SEV/WFE/WFI/NOP/YIELD). They can
+-------------------------------------+    be either real or default to NOP.
| ARMV7 (arm,thumb,thumb2)            |    The two processors also use
+-------------------------------------+    different encoding for them.

Patch by Vinicius Tinti.

llvm-svn: 232468

9 years ago[MIPS] - Register Context for MIPS64
Mohit K. Bhakkad [Tue, 17 Mar 2015 11:43:56 +0000 (11:43 +0000)]
[MIPS] - Register Context for MIPS64

Patch by Jaydeep Patil

Summery:
1. Add MIPS variants by parsing e_flags of the ELF
2. Create RegisterInfoInterface and RegisterContext for MIPS64 and MIPS64EL

Reviewers: clayborg

Subscribers: tberghammer, bhushan, mohit.bhakkad, sagar

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

llvm-svn: 232467

9 years ago[ppc] Distinguish the 'es', 'o', 'm', 'Q', 'Z', and 'Zy' inline assembly memory const...
Daniel Sanders [Tue, 17 Mar 2015 11:09:13 +0000 (11:09 +0000)]
[ppc] Distinguish the 'es', 'o', 'm', 'Q', 'Z', and 'Zy' inline assembly memory constraints.

Summary:
But still handle them the same way since I don't know how they differ on
this target.

Of these, 'es', and 'Q' do not have backend tests but are accepted by
clang.

No functional change intended. Depends on D8173.

Reviewers: hfinkel

Reviewed By: hfinkel

Subscribers: llvm-commits

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

llvm-svn: 232466

9 years agoTeach Twine to support SmallString.
Yaron Keren [Tue, 17 Mar 2015 09:51:17 +0000 (09:51 +0000)]
Teach Twine to support SmallString.

Enable removing .str() member calls for these frequent cases.

 http://reviews.llvm.org/D6372

llvm-svn: 232465

9 years ago[ARM] Implement relocations: R_ARM_REL32, R_ARM_THM_JUMP11, R_ARM_PREL31
Denis Protivensky [Tue, 17 Mar 2015 09:18:24 +0000 (09:18 +0000)]
[ARM] Implement relocations: R_ARM_REL32, R_ARM_THM_JUMP11, R_ARM_PREL31

Test case for every relocation is added.

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

llvm-svn: 232464

9 years agoRecommit simplification first attempted in r232309 (fixed a bit in r232312, with...
David Blaikie [Tue, 17 Mar 2015 05:49:45 +0000 (05:49 +0000)]
Recommit simplification first attempted in r232309 (fixed a bit in r232312, with fixes in r232314)

Messed it up because I didn't realize there were two different iterators
here (& clearly didn't build any of this... ) - still seems easier to
just use the injected class name than introduce a self typedef.

llvm-svn: 232462

9 years agoFix the clang -Werror build & make the unit tests link under Linux
David Blaikie [Tue, 17 Mar 2015 03:32:21 +0000 (03:32 +0000)]
Fix the clang -Werror build & make the unit tests link under Linux

The order of libraries passed to the linker didn't work under linux (you
need the llvm libraries first, then the lldb libraries). I modelled this
after clang's setup here. Seemed simple enough to just be consistent.

llvm-svn: 232461

9 years ago[ELF] Use parallel_for_each for writing.
Shankar Easwaran [Tue, 17 Mar 2015 03:29:32 +0000 (03:29 +0000)]
[ELF] Use parallel_for_each for writing.

This changes improves performance of lld, when self-hosting lld, when compared
with the bfd linker. BFD linker on average takes 8 seconds in elapsed time.
lld takes 3 seconds elapased time average. Without this change, lld takes ~5
seconds average. The runtime comparisons were done on a release build and
measured by running linking thrice.

lld self-host without the change
----------------------------------
real    0m3.196s
user    0m4.580s
sys     0m0.832s

lld self-host with lld
-----------------------
user    0m3.024s
user    0m3.252s
sys     0m0.796s

time taken to build lld with bfd
--------------------------------
real    0m8.419s
user    0m7.748s
sys     0m0.632s

llvm-svn: 232460

9 years ago[AArch64] Use intermediate step for concat_vectors of illegal truncs.
Ahmed Bougacha [Tue, 17 Mar 2015 03:23:09 +0000 (03:23 +0000)]
[AArch64] Use intermediate step for concat_vectors of illegal truncs.

Optimize concat_vectors of truncated vectors, where the intermediate
type is illegal, to avoid said illegality,  e.g.,
  (v4i16 (concat_vectors (v2i16 (truncate (v2i64))),
                         (v2i16 (truncate (v2i64)))))
->
  (v4i16 (truncate (v4i32 (concat_vectors (v2i32 (truncate (v2i64))),
                                          (v2i32 (truncate (v2i64)))))))

This isn't really target-specific, and, as such, would best go in the
DAGCombiner.  However, ISD::TRUNCATE legality isn't keyed on both input
and result type, so we might generate worse code when we don't know
better.  On AArch64 we know it's fine for v2i64->v4i16 and v4i32->v8i8.
rdar://20022387

llvm-svn: 232459

9 years ago[AArch64] Factor out N->getOperand()s; format. NFCI.
Ahmed Bougacha [Tue, 17 Mar 2015 03:19:18 +0000 (03:19 +0000)]
[AArch64] Factor out N->getOperand()s; format.  NFCI.

llvm-svn: 232458

9 years agoFix ODR violations caused by putting anonymous namespaces in header files (and
Richard Smith [Tue, 17 Mar 2015 02:36:51 +0000 (02:36 +0000)]
Fix ODR violations caused by putting anonymous namespaces in header files (and
then using the symbols from those anonymous namespaces from outside the
anonymous namespace).

This was "detected" by causing the modules selfhost to fail in some cases.
The corresponding Clang bug was fixed in r232455.

llvm-svn: 232457

9 years agoFix test in release mode.
Nick Lewycky [Tue, 17 Mar 2015 02:31:46 +0000 (02:31 +0000)]
Fix test in release mode.

llvm-svn: 232456

9 years ago[modules] Fix bug where an anonymous namespace could cause the containing
Richard Smith [Tue, 17 Mar 2015 02:23:11 +0000 (02:23 +0000)]
[modules] Fix bug where an anonymous namespace could cause the containing
namespace to not merge properly.

We have an invariant here: after a declaration reads its canonical declaration,
it can assume the canonical declaration is fully merged. This invariant can be
violated if deserializing some declaration triggers the deserialization of a
later declaration, because that later declaration can in turn deserialize a
redeclaration of that first declaration before it is fully merged.

The anonymous namespace for a namespace gets stored with the first declaration
of that namespace, which may be before its parent namespace, so defer loading
it until after we've finished merging the surrounding namespace.

llvm-svn: 232455

9 years agoFix the LLVM type used when lowering initializer list reference temporaries to global...
Nick Lewycky [Tue, 17 Mar 2015 02:21:31 +0000 (02:21 +0000)]
Fix the LLVM type used when lowering initializer list reference temporaries to global variables.

llvm-svn: 232454

9 years ago[Object][ELF] ELFEntityIterator : Add operators for random access
Shankar Easwaran [Tue, 17 Mar 2015 02:12:35 +0000 (02:12 +0000)]
[Object][ELF] ELFEntityIterator : Add operators for random access

Add operators add/subtract for random access. This is essentially used by
lld.

llvm-svn: 232453

9 years ago[IRCE] Re-commit tests cases.
Sanjoy Das [Tue, 17 Mar 2015 01:40:24 +0000 (01:40 +0000)]
[IRCE] Re-commit tests cases.

Re-commit the test cases added in r232444.  These now use
-irce-print-changed-loops and -irce-print-range-checks so they run
correctly on a without asserts build of llvm.

llvm-svn: 232452

9 years ago[IRCE] Add a -irce-print-range-checks option.
Sanjoy Das [Tue, 17 Mar 2015 01:40:22 +0000 (01:40 +0000)]
[IRCE] Add a -irce-print-range-checks option.

-irce-print-range-checks prints out the set of range checks recognized
by IRCE.

llvm-svn: 232451

9 years agoCodeGenCXX: Test that linetables work with variadic virtual thunks
Duncan P. N. Exon Smith [Tue, 17 Mar 2015 01:19:01 +0000 (01:19 +0000)]
CodeGenCXX: Test that linetables work with variadic virtual thunks

Add a frontend test for PR22929, which was fixed by LLVM r232449.
Besides the crash test, check that the `!dbg` attachment is sane since
its presence was the trigger.

llvm-svn: 232450

9 years agoMapMetadata: Allow unresolved metadata if it won't change
Duncan P. N. Exon Smith [Tue, 17 Mar 2015 01:14:40 +0000 (01:14 +0000)]
MapMetadata: Allow unresolved metadata if it won't change

Allow unresolved nodes through the `MapMetadata()` if
`RF_NoModuleLevelChanges`, since there's no remapping to do anyway.

This fixes PR22929.  I'll add a clang test as a follow-up.

llvm-svn: 232449

9 years agoMake it compile with MSVC 2013.
Rui Ueyama [Tue, 17 Mar 2015 01:10:12 +0000 (01:10 +0000)]
Make it compile with MSVC 2013.

MSVC 2013 cannot compile this code because of C1001 "internal error".
Stop using initializer list without type name.

llvm-svn: 232448

9 years ago[IRCE] Delete two tests.
Sanjoy Das [Tue, 17 Mar 2015 00:54:50 +0000 (00:54 +0000)]
[IRCE] Delete two tests.

I accidentally checked in two tests that used -debug-only -- these fail
on a release LLVM build.  Temporarily delete these from the repo to keep
the bots green while I fix this locally.

llvm-svn: 232446

9 years ago[IRCE] Add comments, NFC.
Sanjoy Das [Tue, 17 Mar 2015 00:42:16 +0000 (00:42 +0000)]
[IRCE] Add comments, NFC.

This change adds some comments that justify why a potentially
overflowing operation is safe.

llvm-svn: 232445

9 years ago[IRCE] Support half-range checks.
Sanjoy Das [Tue, 17 Mar 2015 00:42:13 +0000 (00:42 +0000)]
[IRCE] Support half-range checks.

This change to IRCE gets it to recognize "half" range checks.  Half
range checks are range checks that only either check if the index is
`slt` some positive integer ("length") or if the index is `sge` `0`.

The range solver does not try to be clever / aggressive about solving
half-range checks -- it transforms "I < L" to "0 <= I < L" and "0 <= I"
to "0 <= I < INT_SMAX".  This is safe, but not always optimal.

llvm-svn: 232444

9 years agollvm-cov: Warn instead of error if a .gcda has arcs from an exit block
Justin Bogner [Tue, 17 Mar 2015 00:18:51 +0000 (00:18 +0000)]
llvm-cov: Warn instead of error if a .gcda has arcs from an exit block

Patch by Vanderson M. Rosario. Thanks!

llvm-svn: 232443

9 years agoAsmWriter: Assert on unresolved metadata nodes
Duncan P. N. Exon Smith [Tue, 17 Mar 2015 00:16:35 +0000 (00:16 +0000)]
AsmWriter: Assert on unresolved metadata nodes

Assert that `MDNode::isResolved()`.  While in theory the `Verifier`
should catch this, it doesn't descend into all debug info, and the
`DebugInfoVerifier` doesn't call into the `Verifier`.  Besides, this
helps to catch bugs when `-disable-verify=true`.

Note that I haven't come across a place where this fails with clang
today, so no testcase.

llvm-svn: 232442

9 years agoXFAIL flaky tests
Vince Harron [Tue, 17 Mar 2015 00:10:51 +0000 (00:10 +0000)]
XFAIL flaky tests

llvm-svn: 232441

9 years agoFix typo in previous commit
Justin Bogner [Tue, 17 Mar 2015 00:04:57 +0000 (00:04 +0000)]
Fix typo in previous commit

llvm-svn: 232440

9 years agoGCOV: Expose the -coverage-exit-block-before-body flag in clang -cc1
Justin Bogner [Mon, 16 Mar 2015 23:52:21 +0000 (23:52 +0000)]
GCOV: Expose the -coverage-exit-block-before-body flag in clang -cc1

This exposes the optional exit block placement logic from r232438 as a
clang -cc1 option. There is a test on the llvm side, but there isn't
really a way to inspect the gcov options from clang to test it here as
well.

llvm-svn: 232439

9 years agoGCOV: Make the exit block placement from r223193 optional
Justin Bogner [Mon, 16 Mar 2015 23:52:03 +0000 (23:52 +0000)]
GCOV: Make the exit block placement from r223193 optional

By default we want our gcov emission to stay 4.2 compatible, which
means we need to continue emit the exit block last by default. We add
an option to emit it before the body for users that need it.

llvm-svn: 232438

9 years agoMake ModuleList::GetSharedModule to use module_search_paths parameter.
Oleksiy Vyalov [Mon, 16 Mar 2015 23:44:30 +0000 (23:44 +0000)]
Make ModuleList::GetSharedModule to use module_search_paths parameter.

http://reviews.llvm.org/D8365

llvm-svn: 232437

9 years agoPECOFF: Make FileCOFF:findAtomAt from O(n) to O(1).
Rui Ueyama [Mon, 16 Mar 2015 23:43:11 +0000 (23:43 +0000)]
PECOFF: Make FileCOFF:findAtomAt from O(n) to O(1).

I knew I cut corners when I wrote this. Turned out that it is
actually slow when a file being read has many symbols. This patch
is to stop doing linear search and instead do map lookup.

llvm-svn: 232436

9 years agoLowerBitSets: do not use private aliases at all on Darwin.
Peter Collingbourne [Mon, 16 Mar 2015 23:36:24 +0000 (23:36 +0000)]
LowerBitSets: do not use private aliases at all on Darwin.

LLVM currently turns these into linker-private symbols, which can be dead
stripped by the Darwin linker.

llvm-svn: 232435

9 years agoCleanup implementation of formatter for std::vector from libstdc++.
Siva Chandra [Mon, 16 Mar 2015 23:02:03 +0000 (23:02 +0000)]
Cleanup implementation of formatter for std::vector from libstdc++.

Summary: Removed unused variables and methods.

Test Plan: dotest.py -p TestDataFormatterStdVector

Reviewers: vharron

Subscribers: lldb-commits

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

llvm-svn: 232434

9 years agoReport an error for line number values that don't convert to integers during argument
Jim Ingham [Mon, 16 Mar 2015 22:47:38 +0000 (22:47 +0000)]
Report an error for line number values that don't convert to integers during argument
parsing so that we can give a more accurate error message.

<rdar://problem/20145563>

llvm-svn: 232433

9 years agoEnable TestDataFormatterStdMap on linux (libstdc++) with clang.
Siva Chandra [Mon, 16 Mar 2015 22:45:05 +0000 (22:45 +0000)]
Enable TestDataFormatterStdMap on linux (libstdc++) with clang.

Summary:
This test should have been enabled along with
7181dae1248cc1b03505cca1b7c6e3dfeffefc0a, but since the test was
actually crashing, I thought it was a much deeper problem. Turns out,
all I had to do was to add "-fno-limit-debug-info" when compiling
the test case.

The test is still skipped when the testcase is compiled with GCC.

Test Plan: dotest.py -p TestDataFormatterStdMap

Reviewers: vharron

Subscribers: lldb-commits

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

llvm-svn: 232432

9 years ago[clang-tidy] Move google-readability-function check to readability-named-parameter.
Alexander Kornienko [Mon, 16 Mar 2015 22:31:16 +0000 (22:31 +0000)]
[clang-tidy] Move google-readability-function check to readability-named-parameter.

Summary: The relevant style rule is going to be removed, thus the check is no longer needed in the Google module. Leaving the check in readability/ in case someone needs it.

Reviewers: djasper

Reviewed By: djasper

Subscribers: curdeius, cfe-commits

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

llvm-svn: 232431

9 years agoUpdate for llvm API change.
Rafael Espindola [Mon, 16 Mar 2015 22:30:13 +0000 (22:30 +0000)]
Update for llvm API change.

llvm-svn: 232430

9 years agoPass in a "const Triple &T" instead of a raw StringRef.
Rafael Espindola [Mon, 16 Mar 2015 22:29:29 +0000 (22:29 +0000)]
Pass in a "const Triple &T" instead of a raw StringRef.

llvm-svn: 232429

9 years agoRemove unused argument. NFC.
Rafael Espindola [Mon, 16 Mar 2015 22:06:15 +0000 (22:06 +0000)]
Remove unused argument. NFC.

llvm-svn: 232428

9 years agoAdd testing for mismatched explicit type on a gep operator when loading from bitcode
David Blaikie [Mon, 16 Mar 2015 22:03:50 +0000 (22:03 +0000)]
Add testing for mismatched explicit type on a gep operator when loading from bitcode

llvm-svn: 232427

9 years agoCFI: Make check-cfi depend on libLTO on Darwin.
Peter Collingbourne [Mon, 16 Mar 2015 22:00:04 +0000 (22:00 +0000)]
CFI: Make check-cfi depend on libLTO on Darwin.

llvm-svn: 232426

9 years agoTake the non-reference type when constructing a dummy expression.
Richard Trieu [Mon, 16 Mar 2015 21:49:43 +0000 (21:49 +0000)]
Take the non-reference type when constructing a dummy expression.

Otherwise, Expr will assert during construction with a reference type.

llvm-svn: 232425

9 years agoAdd testing for mismatched explicit type on a load instruction when loading from...
David Blaikie [Mon, 16 Mar 2015 21:48:46 +0000 (21:48 +0000)]
Add testing for mismatched explicit type on a load instruction when loading from bitcode

llvm-svn: 232424

9 years agoThere is only one Asm streamer, there is no need for targets to register it.
Rafael Espindola [Mon, 16 Mar 2015 21:43:42 +0000 (21:43 +0000)]
There is only one Asm streamer, there is no need for targets to register it.

Instead, have the targets register a TargetStreamer to be use with the
asm streamer (if any).

llvm-svn: 232423

9 years agoInstrProf: Fix CoverageMappingReader on big endian
Justin Bogner [Mon, 16 Mar 2015 21:40:18 +0000 (21:40 +0000)]
InstrProf: Fix CoverageMappingReader on big endian

This makes the reader check the endianness of the object file its
given and behave appropriately. For the test I dug up a really old
linker and created a ppc-apple-darwin file for llvm-cov to read.

llvm-svn: 232422

9 years agoCodeGen: @llvm.eh.typeid.for replaced @llvm.eh.typeid.for.i32
David Majnemer [Mon, 16 Mar 2015 21:36:38 +0000 (21:36 +0000)]
CodeGen: @llvm.eh.typeid.for replaced @llvm.eh.typeid.for.i32

We removed @llvm.eh.typeid.for.i32 and replaced it with
@llvm.eh.typeid.for quite some time ago.  Fix up some test cases which
never got updated.

llvm-svn: 232421

9 years agoTest bitcode parsing error-handling for incorrect explicit type
David Blaikie [Mon, 16 Mar 2015 21:35:48 +0000 (21:35 +0000)]
Test bitcode parsing error-handling for incorrect explicit type

(turns out I had regressed this when sinking handling of this type down
into GetElementPtrInst::Create - since that asserted before the error
handling was performed)

llvm-svn: 232420

9 years ago[Core] Add parallel_for_each
Shankar Easwaran [Mon, 16 Mar 2015 21:27:32 +0000 (21:27 +0000)]
[Core] Add parallel_for_each

This adds a parallel_for_each similar to functionality in MSVC concurrency
library.

This was very patiently reviewed by Rui and credits go to him for this patch.

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

llvm-svn: 232419

9 years agoVerifier: Don't call debug info verifier if the module is broken
Duncan P. N. Exon Smith [Mon, 16 Mar 2015 21:23:56 +0000 (21:23 +0000)]
Verifier: Don't call debug info verifier if the module is broken

If `Verifier` has already found a failure, don't call
`DebugInfoVerifier`.  The latter sometimes crashes in `DebugInfoFinder`
when the former would give a nice message.  The only two cases I found
it crashing are explicit verifier tests I've added:

  - test/Verifier/llvm.dbg.declare-expression.ll
  - test/Verifier/llvm.dbg.value-expression.ll

However, I assume frontends with bugs will create invalid IR as well.

IMO, the `DebugInfoVerifier` should never crash (instead, it should fail
to verify), but subtleties like that will be easier to work out once
it's enabled again.

This is part of PR22777.

llvm-svn: 232418

9 years agoAsmWriter: Handle broken metadata nodes
Duncan P. N. Exon Smith [Mon, 16 Mar 2015 21:21:10 +0000 (21:21 +0000)]
AsmWriter: Handle broken metadata nodes

Print out temporary `MDNode`s so we don't crash in the verifier (or
during `dump()` output).

llvm-svn: 232417

9 years agoDebugInfo: Fix testcases that fail -verify-debug-info=true
Duncan P. N. Exon Smith [Mon, 16 Mar 2015 21:10:12 +0000 (21:10 +0000)]
DebugInfo: Fix testcases that fail -verify-debug-info=true

As part of PR22777, fix testcases that fail the debug info verifier.
The changes fall into the following categories:

  - Empty `filename:` fields in `MDFile`s.  Compile units and some types
    require non-empty filenames.  A number of testcases have empty
    filenames, probably due to hand-reduction of testcases.
  - Not-quite empty arrays: `!{i32 0}`.  This used to be equivalent in
    the debug info schema to `!{}`.  They cause problems for
    `!MDSubroutineType`'s `types:` array, since it requires all operands
    to be valid types.  (Note that `!{null}` is the correct type array
    for functions that take no arguments and return `void`.)
  - Significantly bitrotted testcases.  Nodes got left behind a few
    upgrades ago because of missing or invalid tags.

llvm-svn: 232415

9 years ago[ELF] Use pcrel format for eh_frame_ptr field encoding
Simon Atanasyan [Mon, 16 Mar 2015 21:07:46 +0000 (21:07 +0000)]
[ELF] Use pcrel format for eh_frame_ptr field encoding

The `eh_frame_ptr` field in the `.eh_frame_hdr` section contains an address
of the `.eh_frame` section. Using an absolute 32-bit format for encoding
of this field does not work for 64-bit targets. It is better to use a
relative format because it covers both 32-bit and 64-bit cases. Sure
this work if a distance between `.eh_frame_hdr` and `.eh_frame` sections
is less than 4 Gb but it is a rather correct assumption.

http://reviews.llvm.org/D8352

llvm-svn: 232414

9 years agoVerifier: Simplify logic in processCallInst(), NFC
Duncan P. N. Exon Smith [Mon, 16 Mar 2015 21:05:33 +0000 (21:05 +0000)]
Verifier: Simplify logic in processCallInst(), NFC

No need for local variables here.

llvm-svn: 232413

9 years agoIR: Take advantage of -verify checks for MDExpression
Duncan P. N. Exon Smith [Mon, 16 Mar 2015 21:03:55 +0000 (21:03 +0000)]
IR: Take advantage of -verify checks for MDExpression

Now that we check `MDExpression` during `-verify` (r232299), make
the `DIExpression` wrapper more strict:

  - remove redundant checks in `DebugInfoVerifier`,
  - overload `get()` to `cast_or_null<MDExpression>` (superseding
    `getRaw()`),
  - stop checking for null in any accessor, and
  - remove `DIExpression::Verify()` entirely in favour of
    `MDExpression::isValid()`.

There is still some logic in this class, mostly to do with high-level
iterators; I'll defer cleaning up those until the rest of the wrappers
are similarly strict.

llvm-svn: 232412

9 years ago[modules] If we find more formerly-canonical declarations of an entity while
Richard Smith [Mon, 16 Mar 2015 20:54:07 +0000 (20:54 +0000)]
[modules] If we find more formerly-canonical declarations of an entity while
building its redecl chains, make sure we pull in the redeclarations of those
canonical declarations.

It's pretty difficult to reach a situation where we can find more canonical
declarations of an entity while building its redecl chains; I think the
provided testcase (4 modules and 7 declarations) cannot be reduced further.

llvm-svn: 232411

9 years agoDebugInfo: Simplify logic in DIType::Verify(), NFC
Duncan P. N. Exon Smith [Mon, 16 Mar 2015 20:46:27 +0000 (20:46 +0000)]
DebugInfo: Simplify logic in DIType::Verify(), NFC

Clarify the logic in `DIType::Verify()` by checking `isBasicType()`
earlier, by skipping `else` after `return`s, and by documenting an
otherwise opaque check.

No functionality change.

llvm-svn: 232410

9 years ago[LinkerScript] Handle symbols defined in linker scripts
Rafael Auler [Mon, 16 Mar 2015 20:39:07 +0000 (20:39 +0000)]
[LinkerScript] Handle symbols defined in linker scripts

Puts symbols defined in linker script expressions in a runtime file that is
added as input to the resolver, making the input object files see symbols
defined in linker scripts.

http://reviews.llvm.org/D8263

llvm-svn: 232409

9 years agoVerifier: Remove unnecessary double-checks
Duncan P. N. Exon Smith [Mon, 16 Mar 2015 20:24:02 +0000 (20:24 +0000)]
Verifier: Remove unnecessary double-checks

Turns out `visitIntrinsicFunctionCall()` descends into all operands
already, so explicitly descending in `visitDbgIntrinsic()` (part of
r232296) isn't useful.

Updating a testcase that doesn't really need `-verify-debug-info` (since
r231082) as confirmation.

llvm-svn: 232408

9 years agoLambdaify some helper functions. No functionality change.
Richard Smith [Mon, 16 Mar 2015 20:11:03 +0000 (20:11 +0000)]
Lambdaify some helper functions. No functionality change.

llvm-svn: 232407

9 years agoAdd the options, -dylibs-used and -dylib-id to llvm-objdump used with -macho
Kevin Enderby [Mon, 16 Mar 2015 20:08:09 +0000 (20:08 +0000)]
Add the options, -dylibs-used and -dylib-id to llvm-objdump used with -macho
to print the Mach-O dynamic shared libraries used by a linked image or the
library id of a shared library.

llvm-svn: 232406

9 years agoDon't repeat names in comments. Remove unused default value.
Rafael Espindola [Mon, 16 Mar 2015 20:02:28 +0000 (20:02 +0000)]
Don't repeat names in comments. Remove unused default value.

llvm-svn: 232405

9 years ago[LinkerScript] Adding test cases for SECTIONS semantics
Rafael Auler [Mon, 16 Mar 2015 19:56:42 +0000 (19:56 +0000)]
[LinkerScript] Adding test cases for SECTIONS semantics

llvm-svn: 232404

9 years agoSkip TestDataFormatterStdMap on linux instead of xfailing.
Siva Chandra [Mon, 16 Mar 2015 19:56:36 +0000 (19:56 +0000)]
Skip TestDataFormatterStdMap on linux instead of xfailing.

Summary:
After 7181dae1248cc1b03505cca1b7c6e3dfeffefc0a, this test progresses
much further but crashes. Will skip this test while I fix this properly.

Test Plan: dotest.py -p TestDataFormatterStdMap

Reviewers: vharron

Subscribers: lldb-commits

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

llvm-svn: 232403

9 years ago[LinkerScript] Implement semantics for simple sections mappings
Rafael Auler [Mon, 16 Mar 2015 19:55:15 +0000 (19:55 +0000)]
[LinkerScript] Implement semantics for simple sections mappings

This commit implements the behaviour of the SECTIONS linker script directive,
used to not only define a custom mapping between input and output sections, but
also order input sections in the output file. To do this, we modify
DefaultLayout with hooks at important places that allow us to re-order input
sections according to a custom order. We also add a hook in SegmentChunk to
allow us to calculate linker script expressions while assigning virtual
addresses to the input sections that live in a segment.

Not all SECTIONS constructs are currently supported, but only the ones that do
not use special sort orders. It adds two LIT test as practical examples of
which sections directives are currently supported.

In terms of high-level changes, it creates a new class "script::Sema" that owns
all linker script ASTs and the logic for linker script semantics as well.
ELFLinkingContext owns a single copy of Sema, which will be used throughout
the object file writing process (to layout sections as proposed by the linker
script).

Other high-level change is that the writer no longer uses a "const" copy of
the linking context. This happens because linker script expressions must be
calculated *while* calculating final virtual addresses, which is a very late
step in object file writing. While calculating these expressions, we need to
update the linker script symbol table (inside the semantics object), and, thus,
we are "modifying our context" as we prepare to write the file.

http://reviews.llvm.org/D8157

llvm-svn: 232402

9 years agoAdded an Python operating system plug-in test to verify that python can be used to...
Greg Clayton [Mon, 16 Mar 2015 19:54:22 +0000 (19:54 +0000)]
Added an Python operating system plug-in test to verify that python can be used to add threads to an existing process.

The test does the following:
1 - runs a program to main without the OS plug-in and verifies no OS threads are in the process
2 - loads the OS plug-in and verifies the 3 OS plug-in threads are now in the current process
3 - verify the register contents of each thread that shows up
4 - unload the python OS plug-in and verify that the OS threads are gone.

llvm-svn: 232401

9 years agoAsmParser: Stop requiring 'name:' when it's not printed
Duncan P. N. Exon Smith [Mon, 16 Mar 2015 19:01:54 +0000 (19:01 +0000)]
AsmParser: Stop requiring 'name:' when it's not printed

r230877 optimized which fields are written out for `CHECK`-ability, but
apparently missed changing some of them to optional in `LLParser`.

Fixes PR22921.

llvm-svn: 232400

9 years agoHandle PyLong return values in LLDBSwigPython_CalculateNumChildren.
Siva Chandra [Mon, 16 Mar 2015 19:01:33 +0000 (19:01 +0000)]
Handle PyLong return values in LLDBSwigPython_CalculateNumChildren.

Summary:
Also, change its return type to size_t to match the return types of
its callers.

With this change, std::vector and std::list data formatter tests
pass on Linux (when using libstdc++) with clang as well as with gcc.
These tests have also been enabled in this patch.

Test Plan: dotest.py -p <TestDataFormatterStdVector|TestDataFormatterStdList>

Reviewers: vharron, clayborg

Reviewed By: clayborg

Subscribers: zturner, lldb-commits

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

llvm-svn: 232399

9 years agofixed to test feature, not CPU
Sanjay Patel [Mon, 16 Mar 2015 18:24:28 +0000 (18:24 +0000)]
fixed to test feature, not CPU

llvm-svn: 232398

9 years agoRemove dead file (was only used by the C backend)
David Blaikie [Mon, 16 Mar 2015 18:18:32 +0000 (18:18 +0000)]
Remove dead file (was only used by the C backend)

llvm-svn: 232397

9 years agoRemove redundant comments from lldb-mi source files.
Hafiz Abid Qadeer [Mon, 16 Mar 2015 18:18:18 +0000 (18:18 +0000)]
Remove redundant comments from lldb-mi source files.

Most of lldb-mi files have comments about environement, copyright etc which were neither needed nor uptodate.
This commit removes those comments.

llvm-svn: 232396

9 years agoTom is also responsible for the 3.6 branch.
Joerg Sonnenberger [Mon, 16 Mar 2015 18:15:27 +0000 (18:15 +0000)]
Tom is also responsible for the 3.6 branch.

llvm-svn: 232395

9 years agoFix uses of reserved identifiers starting with an underscore followed by an uppercase...
David Blaikie [Mon, 16 Mar 2015 18:06:57 +0000 (18:06 +0000)]
Fix uses of reserved identifiers starting with an underscore followed by an uppercase letter

This covers essentially all of llvm's headers and libs. One or two weird
cases I wasn't sure were worth/appropriate to fix.

llvm-svn: 232394

9 years ago[AsmPrinter] Use the per-function subtarget to emit inline asm instructions that
Akira Hatanaka [Mon, 16 Mar 2015 18:02:16 +0000 (18:02 +0000)]
[AsmPrinter] Use the per-function subtarget to emit inline asm instructions that
are not at the file level.

Previously, the default subtarget created from the target triple was used to
emit inline asm instructions. Compilation would fail in cases where the feature
bits necessary to assemble an inline asm instruction in a function weren't set.

llvm-svn: 232392

9 years agoadd CHECK-LABELs for more reliable testing
Sanjay Patel [Mon, 16 Mar 2015 17:59:07 +0000 (17:59 +0000)]
add CHECK-LABELs for more reliable testing

llvm-svn: 232391

9 years agoDon't attempt to validate the output of %p.
Ed Schouten [Mon, 16 Mar 2015 17:56:04 +0000 (17:56 +0000)]
Don't attempt to validate the output of %p.

In one of the ostream tests we attempt to validate whether the output of
%p is correct. This is actually outside the scope of libc++, for the
%reason that the format of %p is implementation defined. Change the test
%to validate that the output of %p is non-empty and is different when
%given two unequal addresses.

Differential Revision: http://reviews.llvm.org/D8354
Reviewed by: marshall

llvm-svn: 232390

9 years agoGlobal inline assembler blocks are merged before parsing, so no specific
Joerg Sonnenberger [Mon, 16 Mar 2015 17:54:54 +0000 (17:54 +0000)]
Global inline assembler blocks are merged before parsing, so no specific
location data is available. If pragma handling wants to look up the
position, it finds the LLVM buffer and wants to compare it with the
special built-in buffer, failing badly. Extend to the special handling
of the built-in buffer to also check for the inline asm buffer. Expect
only a single asm buffer. Sort it between the built-in buffers and the
normal file buffers.

Fixes the assert part of PR 22576.

llvm-svn: 232389

9 years agoFix doxygen comments from r232268
Duncan P. N. Exon Smith [Mon, 16 Mar 2015 17:49:03 +0000 (17:49 +0000)]
Fix doxygen comments from r232268

llvm-svn: 232388

9 years agofixed to test feature, not CPU; removed unnecessary declaration
Sanjay Patel [Mon, 16 Mar 2015 17:01:34 +0000 (17:01 +0000)]
fixed to test feature, not CPU; removed unnecessary declaration

llvm-svn: 232387

9 years agoR600/SI: don't try min3/max3/med3 with f64
Tom Stellard [Mon, 16 Mar 2015 15:53:55 +0000 (15:53 +0000)]
R600/SI: don't try min3/max3/med3 with f64

There are no opcodes for this. This also adds a test case.

v2: make test more robust

Patch by: Grigori Goronzy

llvm-svn: 232386

9 years agofix comments to match code; NFC
Sanjay Patel [Mon, 16 Mar 2015 15:38:48 +0000 (15:38 +0000)]
fix comments to match code; NFC

llvm-svn: 232385

9 years agoFix a problem when calling throw_with_nested with a class marked 'final'. Thanks...
Marshall Clow [Mon, 16 Mar 2015 15:10:28 +0000 (15:10 +0000)]
Fix a problem when calling throw_with_nested with a class marked 'final'. Thanks to STL @ Microsoft for the bug report.

llvm-svn: 232384

9 years agoDon't hardcode the Czech locale name.
Ed Schouten [Mon, 16 Mar 2015 15:09:15 +0000 (15:09 +0000)]
Don't hardcode the Czech locale name.

We already have a definition for the Czech locale name in
platform_support.h. Use this one instead.

While there, respect the common format of the tests. For most other
tests it's the case that test_iterators.h is placed right underneath the
other #includes (without an empty line). platform_support.h is included
after an empty line.

llvm-svn: 232383

9 years ago[MIPS] Fix justify error for small structures
Petar Jovanovic [Mon, 16 Mar 2015 15:01:09 +0000 (15:01 +0000)]
[MIPS] Fix justify error for small structures

Fix justify error for small structures bigger than 32 bits in fixed
arguments for MIPS64 big endian. There was a problem when small structures
are passed as fixed arguments. The structures that are bigger than 32 bits
but smaller than 64 bits were not left justified properly on MIPS64 big
endian. This is fixed by shifting the value to make it left justified when
appropriate.

Patch by Aleksandar Beserminji.

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

llvm-svn: 232382

9 years ago[Tsan] Do not sanitize memcpy() during thread initialization on FreeBSD
Viktor Kutuzov [Mon, 16 Mar 2015 14:42:21 +0000 (14:42 +0000)]
[Tsan] Do not sanitize memcpy() during thread initialization on FreeBSD
Differential Revision: http://reviews.llvm.org/D8324

llvm-svn: 232381

9 years agoEnabling the lldb-mi tests on Linux.
Hafiz Abid Qadeer [Mon, 16 Mar 2015 14:28:18 +0000 (14:28 +0000)]
Enabling the lldb-mi tests on Linux.

I think the issue that caused the random failure has been fixed. So I am enabling the tests again on Linux.
There are still some tests that are skipped on Linux due to different output. Those will be handled separately.

Tested with dotest.py and with "make check-lldb" and there was no MI related failure.

llvm-svn: 232380

9 years agoMake *abs() and *div() work on CloudABI.
Ed Schouten [Mon, 16 Mar 2015 14:27:44 +0000 (14:27 +0000)]
Make *abs() and *div() work on CloudABI.

According to POSIX, *abs() and *div() are allowed to be macros (in
addition to being functions). Make sure we undefine these, so that
std::*abs() and std::*div() work as expected.

llvm-svn: 232379

9 years agoUse the i8 immediate cmp instructions when possible.
Rafael Espindola [Mon, 16 Mar 2015 14:25:08 +0000 (14:25 +0000)]
Use the i8 immediate cmp instructions when possible.

llvm-svn: 232378

9 years ago[ASan] NFC: Factor out platform-specific interceptors
Timur Iskhodzhanov [Mon, 16 Mar 2015 14:22:53 +0000 (14:22 +0000)]
[ASan] NFC: Factor out platform-specific interceptors

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

llvm-svn: 232377

9 years agoRevert r232374: [hexagon] Distinguish the 'o', 'v', and 'm' inline assembly memory...
Daniel Sanders [Mon, 16 Mar 2015 14:21:22 +0000 (14:21 +0000)]
Revert r232374: [hexagon] Distinguish the 'o', 'v', and 'm' inline assembly memory constraints.

2007-12-17-InvokeAsm.ll fails on the buildbot but not on my own system. Will investigate.

llvm-svn: 232376

9 years agoDon't repeat names in comments and clang-format this function.
Rafael Espindola [Mon, 16 Mar 2015 14:05:49 +0000 (14:05 +0000)]
Don't repeat names in comments and clang-format this function.

llvm-svn: 232375

9 years ago[hexagon] Distinguish the 'o', 'v', and 'm' inline assembly memory constraints.
Daniel Sanders [Mon, 16 Mar 2015 13:54:19 +0000 (13:54 +0000)]
[hexagon] Distinguish the 'o', 'v', and 'm' inline assembly memory constraints.

Summary:
But still handle them the same way since I don't know how they differ on
this target.

No functional change intended.

Reviewers: kparzysz, adasgupt

Reviewed By: kparzysz, adasgupt

Subscribers: colinl, llvm-commits

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

llvm-svn: 232374

9 years agoMake each target map all inline assembly memory constraints to InlineAsm::Constraint_...
Daniel Sanders [Mon, 16 Mar 2015 13:13:41 +0000 (13:13 +0000)]
Make each target map all inline assembly memory constraints to InlineAsm::Constraint_m. NFC.

Summary:
This is instead of doing this in target independent code and is the last
non-functional change before targets begin to distinguish between
different memory constraints when selecting code for the ISD::INLINEASM
node.

Next, each target will individually move away from the idea that all
memory constraints behave like 'm'.

Subscribers: jholewinski, llvm-commits

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

llvm-svn: 232373

9 years agoFix the test for gcc.
Hafiz Abid Qadeer [Mon, 16 Mar 2015 12:16:19 +0000 (12:16 +0000)]
Fix the test for gcc.

Following 3 changes were made.
1. Test was assuming that function name will have () in the end. I dont know why lldb is generating function name like this but it looks like a bug. For this test, I have removed it.
2. Step instruction test was assuming that function call will not be the first instruction in the range of the line. This assumption failed with gcc. So I had fixed this.
3. Some minor adjustments with the line number.

Test with bot gcc and clang and all tests pass.

This test is still very fragile. We should be removing hardcoded line number.

llvm-svn: 232372

9 years ago[mips] [IAS] Outline NOP creation. NFC.
Toma Tabacu [Mon, 16 Mar 2015 12:03:39 +0000 (12:03 +0000)]
[mips] [IAS] Outline NOP creation. NFC.

Summary: Make the code more readable by outlining NOP creation.

Reviewers: dsanders

Reviewed By: dsanders

Subscribers: llvm-commits

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

llvm-svn: 232371

9 years agoCheck that RestartedFromEvent flag before processing the state changed event.
Hafiz Abid Qadeer [Mon, 16 Mar 2015 11:47:24 +0000 (11:47 +0000)]
Check that RestartedFromEvent flag before processing the state changed event.

Not checking for this flags caused lldb-mi to issue stop notification when target
has started running again. It also tried to get stack when target was running and
this caused randon failure.

Approved in http://lists.cs.uiuc.edu/pipermail/lldb-dev/2015-March/006953.html

llvm-svn: 232370

9 years agoFix build failure on MSVC compilers.
Gabor Horvath [Mon, 16 Mar 2015 10:19:53 +0000 (10:19 +0000)]
Fix build failure on MSVC compilers.

llvm-svn: 232368

9 years ago[clang] Replacing asserts with static_asserts where appropriate
Gabor Horvath [Mon, 16 Mar 2015 09:59:54 +0000 (09:59 +0000)]
[clang] Replacing asserts with static_asserts where appropriate

Summary: This patch consists of the suggestions of clang-tidy/misc-static-assert check.

Reviewers: alexfh

Subscribers: dblaikie, xazax.hun, cfe-commits

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

Patch by Szabolcs Sipos!

llvm-svn: 232367

9 years ago[llvm] Replacing asserts with static_asserts where appropriate
Gabor Horvath [Mon, 16 Mar 2015 09:53:42 +0000 (09:53 +0000)]
[llvm] Replacing asserts with static_asserts where appropriate

Summary:
This patch consists of the suggestions of clang-tidy/misc-static-assert check.

Reviewers: alexfh

Reviewed By: alexfh

Subscribers: xazax.hun, llvm-commits

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

llvm-svn: 232366

9 years agoDon't hardcode the locale name string.
Ed Schouten [Mon, 16 Mar 2015 09:44:37 +0000 (09:44 +0000)]
Don't hardcode the locale name string.

The rest of the test uses the #defines for the locale names properly. In
this single spot we do hardcode the string. This causes this test to
fail on CloudABI, where this locale is called en_US.UTF-8@UTC.

llvm-svn: 232365