platform/upstream/llvm.git
9 years ago[sanitizer] Disable compile-time checks for __kernel_old_uid_t size on aarch64.
Evgeniy Stepanov [Wed, 10 Dec 2014 11:44:09 +0000 (11:44 +0000)]
[sanitizer] Disable compile-time checks for __kernel_old_uid_t size on aarch64.

Should fix PR21476.

llvm-svn: 223925

9 years agoConstantFold: div undef, 0 should fold to undef, not zero
David Majnemer [Wed, 10 Dec 2014 09:14:55 +0000 (09:14 +0000)]
ConstantFold: div undef, 0 should fold to undef, not zero

Dividing by zero yields an undefined value.

llvm-svn: 223924

9 years agoInstSimplify: [al]shr exact undef, %X -> undef
David Majnemer [Wed, 10 Dec 2014 09:14:52 +0000 (09:14 +0000)]
InstSimplify: [al]shr exact undef, %X -> undef

Exact shifts always keep the non-zero bits of their input.  This means
it keeps it's undef bits.

llvm-svn: 223923

9 years ago[X86] Make a code path in EltsFromConsecutiveLoads work only on vectors it expects
Michael Kuperstein [Wed, 10 Dec 2014 08:46:12 +0000 (08:46 +0000)]
[X86] Make a code path in EltsFromConsecutiveLoads work only on vectors it expects

EltsFromConsecutiveLoads was apparently only ever called for 128-bit vectors, and assumed this implicitly. r223518 started calling it for AVX-sized vectors, causing the code path that had this assumption to crash.
This adds a check to make this path fire only for 128-bit vectors.

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

llvm-svn: 223922

9 years agoclang/test/Modules/modular_maps.cpp REQUIRES shell. chdir is unsupported on Lit inter...
NAKAMURA Takumi [Wed, 10 Dec 2014 08:20:32 +0000 (08:20 +0000)]
clang/test/Modules/modular_maps.cpp REQUIRES shell. chdir is unsupported on Lit internal runner.

llvm-svn: 223921

9 years agoRemove unreachable return statement.
Rui Ueyama [Wed, 10 Dec 2014 08:12:06 +0000 (08:12 +0000)]
Remove unreachable return statement.

llvm-svn: 223920

9 years agoInstSimplify: div %X, 0 -> undef
David Majnemer [Wed, 10 Dec 2014 07:52:18 +0000 (07:52 +0000)]
InstSimplify: div %X, 0 -> undef

We already optimized rem %X, 0 to undef, we should do the same for div.

llvm-svn: 223919

9 years agoUse unique_ptr instead of DeleteContainerSeconds.
Craig Topper [Wed, 10 Dec 2014 06:18:57 +0000 (06:18 +0000)]
Use unique_ptr instead of DeleteContainerSeconds.

llvm-svn: 223918

9 years ago[ELF] Make -init/-fini options compatible with the gnu linker
Simon Atanasyan [Wed, 10 Dec 2014 05:38:46 +0000 (05:38 +0000)]
[ELF] Make -init/-fini options compatible with the gnu linker

The LLD linker searches initializer and finalizer function names
and emits DT_INIT/DT_FINI dynamic table tags to point to these symbols.
The -init/-fini command line options override initializer ("_init") and
finalizer ("_fini") function names used by default.

Now the -init/-fini options do not affect .init_array/.fini_array
sections. The corresponding code has been removed.

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

llvm-svn: 223917

9 years agoClangFunction: Fix destruction order of parser and execution unit
Duncan P. N. Exon Smith [Wed, 10 Dec 2014 04:59:18 +0000 (04:59 +0000)]
ClangFunction: Fix destruction order of parser and execution unit

Fix PR21802 by correcting the destruction order of
`ClangExpressionParser` and `IRExecutionUnit` in `ClangFunction`.  The
former has hooks into the latter -- i.e., `clang::CGDebugInfo` points at
the `LLVMContext` -- so it needs to be torn down first.

This was exposed by r223802 in LLVM, which started doing work in the
`CGDebugInfo` teardown.

llvm-svn: 223916

9 years ago[LIT] Add support for `UNSUPPORTED` tag to `TestRunner.parseIntegratedTestScript`
Eric Fiselier [Wed, 10 Dec 2014 03:42:09 +0000 (03:42 +0000)]
[LIT] Add support for `UNSUPPORTED` tag to `TestRunner.parseIntegratedTestScript`

Summary:
This patch gives me just enough to leverage the existing functionality in `TestRunner` for use in `libc++` and `libc++abi` .

It does the following:
* Adds the `UNSUPPORTED` tag to `TestRunner.parseIntegratedTestScript`.
* Allows `parseIntegratedTestScript` to return an empty script if a script is not required by the caller.

Reviewers: ddunbar, EricWF

Reviewed By: EricWF

Subscribers: cfe-commits, llvm-commits

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

llvm-svn: 223915

9 years agoUpdate to match clang r223913.
Richard Smith [Wed, 10 Dec 2014 03:10:06 +0000 (03:10 +0000)]
Update to match clang r223913.

llvm-svn: 223914

9 years agoReinstate r223753, reverted in r223759 due to breakage of clang-tools-extra.
Richard Smith [Wed, 10 Dec 2014 03:09:48 +0000 (03:09 +0000)]
Reinstate r223753, reverted in r223759 due to breakage of clang-tools-extra.
Original commit message:

[modules] Add experimental -fmodule-map-file-home-is-cwd flag to -cc1.

For files named by -fmodule-map-file=, and files found by 'extern module'
directives, this flag specifies that we should resolve filenames relative to
the current working directory rather than relative to the directory in which
the module map file resides. This is aimed at fixing path handling, in
particular for relative -I paths, when building modules that represent
components of the current project (rather than libraries installed on the
current system, which the current project has as dependencies, where we'd
typically expect the module map files to be looked up implicitly).

llvm-svn: 223913

9 years agoFixed the AST importer ot use redeclaration contexts properly.
Sean Callanan [Wed, 10 Dec 2014 03:09:41 +0000 (03:09 +0000)]
Fixed the AST importer ot use redeclaration contexts properly.

To ensure that we don't import duplicates, the ASTImporter often
checks the DeclContext for a Decl before importing it to see if
a Decl with the same name is already present.

This is problematic if the Decl is inside a transparent context
like an extern "C" block.  Lookup isn't allowed on such contexts,
and in fact they assert() if you do that.  So instead we look at
the redeclaration context -- the containing context that can be
used safely for these kinds of checks -- instead.

llvm-svn: 223912

9 years agoDataLayout: Provide nicer diagnostics for malformed strings
David Majnemer [Wed, 10 Dec 2014 02:36:41 +0000 (02:36 +0000)]
DataLayout: Provide nicer diagnostics for malformed strings

llvm-svn: 223911

9 years agobuiltins: cleanup constant data section selection
Saleem Abdulrasool [Wed, 10 Dec 2014 02:36:22 +0000 (02:36 +0000)]
builtins: cleanup constant data section selection

Each of the object formats use a different directive for selecting the constant
section.  Use a macro to avoid the duplication across a number of files.  Also
correct a small macro mismatch on the Windows case (HIDDEN_DIRECTIVE -> HIDDEN).

Patch by Vadim Chugunov!

llvm-svn: 223910

9 years ago[DD] Don't store the second copy of CommonFlags inside DDFlags.
Alexey Samsonov [Wed, 10 Dec 2014 02:30:04 +0000 (02:30 +0000)]
[DD] Don't store the second copy of CommonFlags inside DDFlags.

llvm-svn: 223909

9 years ago[CMake] Make sure dd is built as a part of compiler-rt.
Alexey Samsonov [Wed, 10 Dec 2014 02:14:15 +0000 (02:14 +0000)]
[CMake] Make sure dd is built as a part of compiler-rt.

Remove unused variables and definitions in CMake files
for TSan and DD (deadlock detector).

llvm-svn: 223908

9 years agoAsmParser: Don't allow null bytes in BB labels
David Majnemer [Wed, 10 Dec 2014 02:10:35 +0000 (02:10 +0000)]
AsmParser: Don't allow null bytes in BB labels

Since Value objects can't have null bytes in their name, we shouldn't
allow them in the labels of basic blocks.

llvm-svn: 223907

9 years agoRemove the last vestige of the world before data formatters :-)
Enrico Granata [Wed, 10 Dec 2014 02:00:45 +0000 (02:00 +0000)]
Remove the last vestige of the world before data formatters :-)
Function pointers had a summary generated for them bypassing formatters, directly as part of the ValueObject subsystem

This patch transitions that code into a hardcoded summary

llvm-svn: 223906

9 years agoSkip TestExprPathSynthetic test on FreeBSD, Linux & Windows.
Oleksiy Vyalov [Wed, 10 Dec 2014 01:48:17 +0000 (01:48 +0000)]
Skip TestExprPathSynthetic test on FreeBSD, Linux & Windows.

llvm-svn: 223905

9 years agoIR: Move call to dropAllReferences() to MDNode subclasses
Duncan P. N. Exon Smith [Wed, 10 Dec 2014 01:45:04 +0000 (01:45 +0000)]
IR: Move call to dropAllReferences() to MDNode subclasses

Don't call `dropAllReferences()` from `MDNode::~MDNode()`, call it
directly from `~MDNodeFwdDecl()` and `~GenericMDNode()`.

llvm-svn: 223904

9 years agoDataLayout: Be more verbose when diagnosing problems in pointer specs
David Majnemer [Wed, 10 Dec 2014 01:38:28 +0000 (01:38 +0000)]
DataLayout: Be more verbose when diagnosing problems in pointer specs

llvm-svn: 223903

9 years agoDebugInfo: Correct location information for array accesses to elements of variable...
David Blaikie [Wed, 10 Dec 2014 01:34:25 +0000 (01:34 +0000)]
DebugInfo: Correct location information for array accesses to elements of variable array type.

llvm-svn: 223902

9 years agoAdd D request handler to GDBRemoteCommunicationServer in order to support detach...
Oleksiy Vyalov [Wed, 10 Dec 2014 01:27:28 +0000 (01:27 +0000)]
Add D request handler to GDBRemoteCommunicationServer in order to support detach from inferior.

llvm-svn: 223901

9 years agoMade the ASTImporter resilient if it can't import
Sean Callanan [Wed, 10 Dec 2014 01:26:39 +0000 (01:26 +0000)]
Made the ASTImporter resilient if it can't import
SourceLocations.  LLDB rarely has the same files
mapped into the target AST context as the source
AST context, so the ASTImporter shouldn't expect
to see those files there.

This started to become a problem when importing
entities from modules -- these have proper source
locations, in contrast to all the ASTs LLDB
creates which have empty ones.

llvm-svn: 223900

9 years agoI didn't intend to commit this with r223898
David Majnemer [Wed, 10 Dec 2014 01:17:48 +0000 (01:17 +0000)]
I didn't intend to commit this with r223898

llvm-svn: 223899

9 years agoDataLayout: Move asserts over to report_fatal_error
David Majnemer [Wed, 10 Dec 2014 01:17:08 +0000 (01:17 +0000)]
DataLayout: Move asserts over to report_fatal_error

As indicated by the tests, it is possible to feed the AsmParser an
invalid datalayout string.  We should verify the result of parsing this
string regardless of whether or not we have assertions enabled.

llvm-svn: 223898

9 years agoDebugInfo: Fix another case of array access line information
David Blaikie [Wed, 10 Dec 2014 01:16:09 +0000 (01:16 +0000)]
DebugInfo: Fix another case of array access line information

llvm-svn: 223897

9 years agoMachineVerifier: Allow physreg use if just a subreg is defined.
Matthias Braun [Wed, 10 Dec 2014 01:13:13 +0000 (01:13 +0000)]
MachineVerifier: Allow physreg use if just a subreg is defined.

We can't mark partially undefined registers, so we have to allow reading
a register in the machine verifier if just parts of a register are
defined.

llvm-svn: 223896

9 years agoMachineVerifier: Allow LiveInterval segments to end at a partial write.
Matthias Braun [Wed, 10 Dec 2014 01:13:11 +0000 (01:13 +0000)]
MachineVerifier: Allow LiveInterval segments to end at a partial write.

In the subregister liveness tracking case we do not create implicit
reads on partial register writes anymore, still we need to produce a new
SSA value for partial writes so the live segment has to end.

llvm-svn: 223895

9 years agoVirtRegMap: Improve block live-in info if subregister liveness is available.
Matthias Braun [Wed, 10 Dec 2014 01:13:08 +0000 (01:13 +0000)]
VirtRegMap: Improve block live-in info if subregister liveness is available.

llvm-svn: 223894

9 years agoMCRegisterInfo: Add MCSubRegIndexIterator.
Matthias Braun [Wed, 10 Dec 2014 01:13:06 +0000 (01:13 +0000)]
MCRegisterInfo: Add MCSubRegIndexIterator.

This iterator iterates over subregister and their associated subregister indices
at the same time.

llvm-svn: 223893

9 years agoVirtRegMap: No implicit defs/uses for super registers with subreg liveness tracking.
Matthias Braun [Wed, 10 Dec 2014 01:13:04 +0000 (01:13 +0000)]
VirtRegMap: No implicit defs/uses for super registers with subreg liveness tracking.

Adding the implicit defs/uses to the superregisters is semantically questionable
but was not dangerous before as the register allocator never assigned the same
register to two overlapping LiveIntervals even when the actually live
subregisters do not overlap. With subregister liveness tracking enabled this
does actually happen and leads to subsequent bugs if we don't stop adding
the superregister defs/uses.

llvm-svn: 223892

9 years agoLiveRegMatrix: Respect subregister liveness when allocating registers.
Matthias Braun [Wed, 10 Dec 2014 01:13:01 +0000 (01:13 +0000)]
LiveRegMatrix: Respect subregister liveness when allocating registers.

llvm-svn: 223891

9 years agoLiveIntervalUnion: Allow specification of liverange when unifying/extracting.
Matthias Braun [Wed, 10 Dec 2014 01:12:59 +0000 (01:12 +0000)]
LiveIntervalUnion: Allow specification of liverange when unifying/extracting.

This allows it to add subregister ranges into the union.

llvm-svn: 223890

9 years agoTablegen'erate lanemasks for register units.
Matthias Braun [Wed, 10 Dec 2014 01:12:56 +0000 (01:12 +0000)]
Tablegen'erate lanemasks for register units.

Now we can relate lanemasks in a virtual register to register units.

llvm-svn: 223889

9 years agoRegisterCoalescer: Preserve subregister liveranges.
Matthias Braun [Wed, 10 Dec 2014 01:12:52 +0000 (01:12 +0000)]
RegisterCoalescer: Preserve subregister liveranges.

llvm-svn: 223888

9 years agoLiveInterval: Add removeEmptySubRanges().
Matthias Braun [Wed, 10 Dec 2014 01:12:40 +0000 (01:12 +0000)]
LiveInterval: Add removeEmptySubRanges().

llvm-svn: 223887

9 years agoLiveIntervalAnalysis: Add subregister aware variants pruneValue().
Matthias Braun [Wed, 10 Dec 2014 01:12:36 +0000 (01:12 +0000)]
LiveIntervalAnalysis: Add subregister aware variants pruneValue().

llvm-svn: 223886

9 years agoLiveInterval: Introduce LiveQuery accessor for dead or live out values.
Matthias Braun [Wed, 10 Dec 2014 01:12:33 +0000 (01:12 +0000)]
LiveInterval: Introduce LiveQuery accessor for dead or live out values.

llvm-svn: 223885

9 years agoAdd a flag to enable/disable subregister liveness.
Matthias Braun [Wed, 10 Dec 2014 01:12:30 +0000 (01:12 +0000)]
Add a flag to enable/disable subregister liveness.

llvm-svn: 223884

9 years agoLiveIntervalAnalysis: Adapt repairIntervalsInRange() to subregister liveness.
Matthias Braun [Wed, 10 Dec 2014 01:12:26 +0000 (01:12 +0000)]
LiveIntervalAnalysis: Adapt repairIntervalsInRange() to subregister liveness.

llvm-svn: 223883

9 years agoLiveRangeEdit: Adapt eliminateDeadDef() to subregister liveness.
Matthias Braun [Wed, 10 Dec 2014 01:12:23 +0000 (01:12 +0000)]
LiveRangeEdit: Adapt eliminateDeadDef() to subregister liveness.

llvm-svn: 223882

9 years agoLiveIntervalAnalysis: Adapt handleMove() to subregister ranges.
Matthias Braun [Wed, 10 Dec 2014 01:12:20 +0000 (01:12 +0000)]
LiveIntervalAnalysis: Adapt handleMove() to subregister ranges.

llvm-svn: 223881

9 years agoLiveIntervalAnalysis: Update SubRanges in shrinkToUses().
Matthias Braun [Wed, 10 Dec 2014 01:12:18 +0000 (01:12 +0000)]
LiveIntervalAnalysis: Update SubRanges in shrinkToUses().

llvm-svn: 223880

9 years agoLiveIntervalAnalysis: Make computeDeadValues() private.
Matthias Braun [Wed, 10 Dec 2014 01:12:15 +0000 (01:12 +0000)]
LiveIntervalAnalysis: Make computeDeadValues() private.

llvm-svn: 223879

9 years agoLiveIntervalAnalysis: Compute subregister ranges.
Matthias Braun [Wed, 10 Dec 2014 01:12:12 +0000 (01:12 +0000)]
LiveIntervalAnalysis: Compute subregister ranges.

llvm-svn: 223878

9 years agoLiveInterval: Add support to track liveness of subregisters.
Matthias Braun [Wed, 10 Dec 2014 01:12:10 +0000 (01:12 +0000)]
LiveInterval: Add support to track liveness of subregisters.

This code adds the required data structures. Algorithms to compute it follow.

llvm-svn: 223877

9 years agoLiveInterval: Add a 'covers' operation to LiveRange.
Matthias Braun [Wed, 10 Dec 2014 01:12:06 +0000 (01:12 +0000)]
LiveInterval: Add a 'covers' operation to LiveRange.

llvm-svn: 223876

9 years agoLiveInterval: Add const version of LiveRange::advanceTo().
Matthias Braun [Wed, 10 Dec 2014 01:12:02 +0000 (01:12 +0000)]
LiveInterval: Add const version of LiveRange::advanceTo().

llvm-svn: 223875

9 years agoAdd function that translates subregister lane masks to other subregs.
Matthias Braun [Wed, 10 Dec 2014 01:12:00 +0000 (01:12 +0000)]
Add function that translates subregister lane masks to other subregs.

This works like the composeSubRegisterIndices() function but transforms
a subregister lane mask instead of a subregister index.

llvm-svn: 223874

9 years agoLet tablegen compute maximum lanemask for regs/regclasses.
Matthias Braun [Wed, 10 Dec 2014 01:11:56 +0000 (01:11 +0000)]
Let tablegen compute maximum lanemask for regs/regclasses.

Let tablegen compute the combination of subregister lanemasks for all
subregisters in a register/register class. This is preparation for further
work subregister allocation

llvm-svn: 223873

9 years agoDebugInfo: Correct the location of array accesses
David Blaikie [Wed, 10 Dec 2014 01:03:48 +0000 (01:03 +0000)]
DebugInfo: Correct the location of array accesses

Especially relevant to ASan when dealing with complex expressions
containing multiple array accesses. See PR21737.

llvm-svn: 223872

9 years agoMake sure that vec_perm is listed as a static function in altivec.h.
Eric Christopher [Wed, 10 Dec 2014 00:57:43 +0000 (00:57 +0000)]
Make sure that vec_perm is listed as a static function in altivec.h.

llvm-svn: 223871

9 years agoTweak test case from r223842 to make it pass on Windows MSVC
Reid Kleckner [Wed, 10 Dec 2014 00:47:33 +0000 (00:47 +0000)]
Tweak test case from r223842 to make it pass on Windows MSVC

We can't mangle __complex yet, and there is no C1 emission.

llvm-svn: 223870

9 years agoAsmParser: Don't crash if a null byte is inside a quoted string
David Majnemer [Wed, 10 Dec 2014 00:43:17 +0000 (00:43 +0000)]
AsmParser: Don't crash if a null byte is inside a quoted string

We don't allow Value* to have names which contain null bytes.  The
AsmParser should reject .ll files that try to do this.

llvm-svn: 223869

9 years agoDisable data formatter tests on Windows.
Zachary Turner [Wed, 10 Dec 2014 00:39:17 +0000 (00:39 +0000)]
Disable data formatter tests on Windows.

clang does not yet support MS-ABI record layout for externally-sourced
ASTs.  As a result, attempting to format something that requires data
layout results in undefined behavior in clang, in this case an assert.

http://llvm.org/pr21800 tracks fixing this on the clang side.

llvm-svn: 223868

9 years agoRe-commit r223330: Rewrite InputGraph's Group
Rui Ueyama [Wed, 10 Dec 2014 00:33:00 +0000 (00:33 +0000)]
Re-commit r223330: Rewrite InputGraph's Group

llvm-svn: 223867

9 years agoExtend some comments around GCModuleInfo, GCFunctionInfo, & GCStrategy
Philip Reames [Wed, 10 Dec 2014 00:30:11 +0000 (00:30 +0000)]
Extend some comments around GCModuleInfo, GCFunctionInfo, & GCStrategy

Nothing particularly interesting here, just documenting the way the code currently works before I start changing it...

llvm-svn: 223866

9 years agoFix Darwin linker. Patch from Jean-Daniel Dupas.
Rui Ueyama [Wed, 10 Dec 2014 00:24:37 +0000 (00:24 +0000)]
Fix Darwin linker. Patch from Jean-Daniel Dupas.

llvm-svn: 223865

9 years agocmake: Make SVNVersion.inc work on Windows if svn is called svn.bat.
Nico Weber [Wed, 10 Dec 2014 00:10:21 +0000 (00:10 +0000)]
cmake: Make SVNVersion.inc work on Windows if svn is called svn.bat.

llvm-svn: 223864

9 years agoSimplify the handling of aliases in the gold plugin.
Rafael Espindola [Wed, 10 Dec 2014 00:09:35 +0000 (00:09 +0000)]
Simplify the handling of aliases in the gold plugin.

The complicated situation is when we have to keep an alias but drop a GV
that is part of the aliasee.

We used to clone the dropped GV and make the clone internal. This is wasteful
as we know the original will be dropped.

With this patch what is done instead is set the linkage of the original to
internal and replace all uses (but the one in the alias) with a new
declaration that takes the name of the old GV. This saves us from having
to copy the body.

llvm-svn: 223863

9 years ago[ARM] Combine base-updating/post-incrementing vector load/stores.
Ahmed Bougacha [Wed, 10 Dec 2014 00:07:37 +0000 (00:07 +0000)]
[ARM] Combine base-updating/post-incrementing vector load/stores.

We used to only combine intrinsics, and turn them into VLD1_UPD/VST1_UPD
when the base pointer is incremented after the load/store.

We can do the same thing for generic load/stores.

Note that we can only combine the first load/store+adds pair in
a sequence (as might be generated for a v16f32 load for instance),
because other combines turn the base pointer addition chain (each
computing the address of the next load, from the address of the last
load) into independent additions (common base pointer + this load's
offset).

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

llvm-svn: 223862

9 years agocmake: Make SVNVersion.inc step depend on GetSVN.cmake.
Nico Weber [Wed, 10 Dec 2014 00:03:37 +0000 (00:03 +0000)]
cmake: Make SVNVersion.inc step depend on GetSVN.cmake.

This way, the step generating SVNVersion.inc gets rerun every time someone
changes GetSVN.cmake (which is the file that decides how the contents of
SVNVersion.inc look). This makes hacking on GetSVN.cmake a bit easier.

llvm-svn: 223861

9 years agoUpdated the AST importer to support importing
Sean Callanan [Wed, 10 Dec 2014 00:00:37 +0000 (00:00 +0000)]
Updated the AST importer to support importing
LinkageSpecDecls.  This is relevant when LLDB
wants to import Decls from non-C++ modules,
since many declarations are in extern "C"
blocks.

llvm-svn: 223860

9 years agoRemove the Module pointer from GCStrategy and GCMetadataPrinter
Philip Reames [Tue, 9 Dec 2014 23:57:54 +0000 (23:57 +0000)]
Remove the Module pointer from GCStrategy and GCMetadataPrinter

In the current implementation, GCStrategy is a part of the ownership structure for the gc metadata which describes a Module. It also contains a reference to the module in question. As a result, GCStrategy instances are essentially Module specific.

I plan to transition away from this design. Instead, a GCStrategy will be owned by the LLVMContext. It will be a lightweight policy object which contains no information about the Modules or Functions involved, but can be easily reached given a Function.

The first step in this transition is to remove the direct Module reference from GCStrategy. This also requires removing the single user of this reference, the GCMetadataPrinter hierarchy. In theory, this will allow the lifetime of the printers to be scoped to the LLVMContext as well, but in practice, I'm not actually changing that. (Yet?)

An alternate design would have been to move the direct Module reference into the GCMetadataPrinter and change the keying of the owning maps to explicitly key off both GCStrategy and Module. I'm open to doing it that way instead, but didn't see much value in preserving the per Module association for GCMetadataPrinters.

The next change in this sequence will be to start unwinding the intertwined ownership between GCStrategy, GCModuleInfo, and GCFunctionInfo.

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

llvm-svn: 223859

9 years agoIR: Fix memory corruption in MDNode new/delete
Duncan P. N. Exon Smith [Tue, 9 Dec 2014 23:56:39 +0000 (23:56 +0000)]
IR: Fix memory corruption in MDNode new/delete

There were two major problems with `MDNode` memory management.

 1. `MDNode::operator new()` called a placement array constructor for
    `MDOperand`.  What?  Each operand needs to be placed individually.

 2. `MDNode::operator delete()` failed to destruct the `MDOperand`s at
    all.

Frankly it's hard to understand how this worked locally, how this
survived an LTO bootstrap, or how it worked on most of the bots.

llvm-svn: 223858

9 years agoForgot to add test for r223856
David Majnemer [Tue, 9 Dec 2014 23:51:14 +0000 (23:51 +0000)]
Forgot to add test for r223856

llvm-svn: 223857

9 years agoAsmParser: Verifier that the contents of a hex integer are hex
David Majnemer [Tue, 9 Dec 2014 23:50:38 +0000 (23:50 +0000)]
AsmParser: Verifier that the contents of a hex integer are hex

llvm-svn: 223856

9 years agoModified the Objective-C lexer and parser (only
Sean Callanan [Tue, 9 Dec 2014 23:47:56 +0000 (23:47 +0000)]
Modified the Objective-C lexer and parser (only
in debugger mode) to accept @import declarations
and pass them to the debugger.

In the preprocessor, accept import declarations
if the debugger is enabled, but don't actually
load the module, just pass the import path on to
the preprocessor callbacks.

In the Objective-C parser, if it sees an import
declaration in statement context (usual for LLDB),
ignore it and return a NullStmt.

llvm-svn: 223855

9 years agoDebugInfo: Correct location of aggregate assignment
David Blaikie [Tue, 9 Dec 2014 23:33:26 +0000 (23:33 +0000)]
DebugInfo: Correct location of aggregate assignment

llvm-svn: 223854

9 years agoRename static functiom "map" to be more descriptive and to avoid
Kaelyn Takata [Tue, 9 Dec 2014 23:32:46 +0000 (23:32 +0000)]
Rename static functiom "map" to be more descriptive and to avoid
potential confusion with the std::map type.

llvm-svn: 223853

9 years agoAST: Don't assume two zero sized objects live at different addresses
David Majnemer [Tue, 9 Dec 2014 23:32:34 +0000 (23:32 +0000)]
AST: Don't assume two zero sized objects live at different addresses

Zero sized objects may overlap with each other or any other object.

This fixes PR21786.

llvm-svn: 223852

9 years agoHandle thumb IT instructions correctly all the time.
Greg Clayton [Tue, 9 Dec 2014 23:31:02 +0000 (23:31 +0000)]
Handle thumb IT instructions correctly all the time.

The issue with Thumb IT (if/then) instructions is the IT instruction preceeds up to four instructions that are made conditional. If a breakpoint is placed on one of the conditional instructions, the instruction either needs to match the thumb opcode size (2 or 4 bytes) or a BKPT instruction needs to be used as these are always unconditional (even in a IT instruction). If BKPT instructions are used, then we might end up stopping on an instruction that won't get executed. So if we do stop at a BKPT instruction, we need to continue if the condition is not true.

When using the BKPT isntructions are easy in that you don't need to detect the size of the breakpoint that needs to be used when setting a breakpoint even in a thumb IT instruction. The bad part is you will now always stop at the opcode location and let LLDB determine if it should auto-continue. If the BKPT instruction is used, the BKPT that is used for ARM code should be something that also triggers the BKPT instruction in Thumb in case you set a breakpoint in the middle of code and the code is actually Thumb code. A value of 0xE120BE70 will work since the lower 16 bits being 0xBE70 happens to be a Thumb BKPT instruction.

The alternative is to use trap or illegal instructions that the kernel will translate into breakpoint hits. On Mac this was 0xE7FFDEFE for ARM and 0xDEFE for Thumb. The darwin kernel currently doesn't recognize any 32 bit Thumb instruction as a instruction that will get turned into a breakpoint exception (EXC_BREAKPOINT), so we had to use the BKPT instruction on Mac. The linux kernel recognizes a 16 and a 32 bit instruction as valid thumb breakpoint opcodes. The benefit of using 16 or 32 bit instructions is you don't stop on opcodes in a IT block when the condition doesn't match.

To further complicate things, single stepping on ARM is often implemented by modifying the BCR/BVR registers and setting the processor to stop when the PC is not equal to the current value. This means single stepping is another way the ARM target can stop on instructions that won't get executed.

This patch does the following:
1 - Fix the internal debugserver for Apple to use the BKPT instruction for ARM and Thumb
2 - Fix LLDB to catch when we stop in the middle of a Thumb IT instruction and continue if we stop at an instruction that won't execute
3 - Fixes this in a way that will work for any target on any platform as long as it is ARM/Thumb
4 - Adds a patch for ignoring conditions that don't match when in ARM mode (see below)

This patch also provides the code that implements the same thing for ARM instructions, though it is disabled for now. The ARM patch will check the condition of the instruction in ARM mode and continue if the condition isn't true (and therefore the instruction would not be executed). Again, this is not enable, but the code for it has been added.

<rdar://problem/19145455>

llvm-svn: 223851

9 years agoclang-format: Add a test for PR19603 which seems fixed (maybe by r221338?).
Nico Weber [Tue, 9 Dec 2014 23:22:35 +0000 (23:22 +0000)]
clang-format: Add a test for PR19603 which seems fixed (maybe by r221338?).

llvm-svn: 223850

9 years agoIR: Metadata: Detect an RAUW recursion
Duncan P. N. Exon Smith [Tue, 9 Dec 2014 23:04:59 +0000 (23:04 +0000)]
IR: Metadata: Detect an RAUW recursion

Speculatively handle a recursion in
`GenericMDNode::handleChangedOperand()`.  I'm hoping this fixes the
failing hexagon bot [1].

[1]: http://lab.llvm.org:8011/builders/llvm-hexagon-elf/builds/13434

llvm-svn: 223849

9 years agoUpdate information on where to find buildbots. Remove dead buildbot links.
Eric Fiselier [Tue, 9 Dec 2014 22:53:21 +0000 (22:53 +0000)]
Update information on where to find buildbots. Remove dead buildbot links.

llvm-svn: 223848

9 years agoRemove redundant variable.
Michael Zolotukhin [Tue, 9 Dec 2014 22:45:07 +0000 (22:45 +0000)]
Remove redundant variable.

Tested by adding assert(LoopVectorPreHeader == VecPreheader) on LLVM
test suite and SPECs.

llvm-svn: 223847

9 years agoObjective-C SDK modernizer. Modernize to use
Fariborz Jahanian [Tue, 9 Dec 2014 22:36:47 +0000 (22:36 +0000)]
Objective-C SDK modernizer. Modernize to use
property-dot-syntax when receiver is 'super'.
rdar://19140267

llvm-svn: 223846

9 years ago[Hexagon] [NFC] Cleaning up unused classes.
Colin LeMahieu [Tue, 9 Dec 2014 22:33:26 +0000 (22:33 +0000)]
[Hexagon] [NFC] Cleaning up unused classes.

llvm-svn: 223845

9 years agoFix compilation failures resulting from the llvm Metadata refactor.
Zachary Turner [Tue, 9 Dec 2014 22:29:47 +0000 (22:29 +0000)]
Fix compilation failures resulting from the llvm Metadata refactor.

Patch by Duncan P. N. Exon Smith

llvm-svn: 223844

9 years agoAdd a new 'eRegisterInLiveRegisterContext' RegisterLocation to track
Jason Molenda [Tue, 9 Dec 2014 22:28:10 +0000 (22:28 +0000)]
Add a new 'eRegisterInLiveRegisterContext' RegisterLocation to track
a register value that is live in the stack frame 0 register context.

Fixes a problem where retrieving a register value on stack frame #n
would involved O(n!) stack frame checks.  This could be very slow on
a deep stack when retrieving register values that had not been
modified/saved by any of the stack frames.  Not common, but annoying
when it was hit.

<rdar://problem/19010211>

llvm-svn: 223843

9 years agoDebugInfo: Correct location of initialization of auto __complex
David Blaikie [Tue, 9 Dec 2014 22:15:02 +0000 (22:15 +0000)]
DebugInfo: Correct location of initialization of auto __complex

llvm-svn: 223842

9 years ago[ARM] Make testcase more explicit. NFC.
Ahmed Bougacha [Tue, 9 Dec 2014 22:08:57 +0000 (22:08 +0000)]
[ARM] Make testcase more explicit. NFC.

llvm-svn: 223841

9 years agoprofile: Add low level versions of profile buffer functions
Justin Bogner [Tue, 9 Dec 2014 22:07:25 +0000 (22:07 +0000)]
profile: Add low level versions of profile buffer functions

On Darwin, compiler_rt uses magic linker symbols to find the profile
counters in the __DATA segment.  This is a reasonable method for
normal, hosted, userspace programs.  However programs with custom
memory layouts, such as the kernel, will need to tell compiler_rt
explicitly where to find these sections.

Patch by Lawrence D'Anna. Thanks!

llvm-svn: 223840

9 years agoDebugInfo: Correct the location of initializations of auto.
David Blaikie [Tue, 9 Dec 2014 22:04:13 +0000 (22:04 +0000)]
DebugInfo: Correct the location of initializations of auto.

llvm-svn: 223839

9 years agoUnbreak after LLVM's metadata split in r223802
Tobias Grosser [Tue, 9 Dec 2014 22:02:16 +0000 (22:02 +0000)]
Unbreak after LLVM's metadata split in r223802

llvm-svn: 223838

9 years agoExtend ValueObject::GetExpressionPath() to do something reasonable for synthetic...
Enrico Granata [Tue, 9 Dec 2014 21:41:16 +0000 (21:41 +0000)]
Extend ValueObject::GetExpressionPath() to do something reasonable for synthetic children

Because of the way they are created, synthetic children cannot (in general) have a sane expression path

A solution to this would be letting the parent front-end generate expression paths for its children
Doing so requires a significant amount of refactoring, and might not always lead to better results (esp. w.r.t. C++ templates)

This commit takes a simpler approach:
- if a synthetic child is of pointer type and it's a target pointer, then emit *((T)value)
- if a synthetic child is a non-pointer, but its location is in the target, then emit *((T*)loadAddr)
- if a synthetic child has a value, emit ((T)value)
- else, don't emit anything

Fixes rdar://18442386

llvm-svn: 223836

9 years agoDebugInfo: Correct location for compound complex assignment
David Blaikie [Tue, 9 Dec 2014 21:32:00 +0000 (21:32 +0000)]
DebugInfo: Correct location for compound complex assignment

llvm-svn: 223835

9 years ago[ARM] Factor out base-updating VLD/VST combiner function. NFC.
Ahmed Bougacha [Tue, 9 Dec 2014 21:30:00 +0000 (21:30 +0000)]
[ARM] Factor out base-updating VLD/VST combiner function. NFC.

Move the combiner-state check into another function, add a few
small comments, and use a more general type in a cast<>.

In preparation for a future patch.

llvm-svn: 223834

9 years ago[ARM] Move the store combiner function down. NFC.
Ahmed Bougacha [Tue, 9 Dec 2014 21:26:53 +0000 (21:26 +0000)]
[ARM] Move the store combiner function down. NFC.

And flip its final condition.
In preparation for a future patch.

llvm-svn: 223833

9 years ago[ARM] Also support v2f64 vld1/vst1.
Ahmed Bougacha [Tue, 9 Dec 2014 21:25:00 +0000 (21:25 +0000)]
[ARM] Also support v2f64 vld1/vst1.

It was missing from the VLD1/VST1 handling logic, even though the
corresponding instructions exist (same form as v2i64).

In preparation for a future patch.

llvm-svn: 223832

9 years agoRemoved an unnecessary variaable.
Sean Callanan [Tue, 9 Dec 2014 21:20:03 +0000 (21:20 +0000)]
Removed an unnecessary variaable.

llvm-svn: 223831

9 years agoFixed ValueObject::UpdateValueIfNeeded to keep
Sean Callanan [Tue, 9 Dec 2014 21:18:59 +0000 (21:18 +0000)]
Fixed ValueObject::UpdateValueIfNeeded to keep
track of the checksum of the object so we can
track if it is modified.  This fixes a testcase
(test/expression_command/issue_11588) on OS X.

Patch by Enrico Granata.

llvm-svn: 223830

9 years agoIR: Metadata/Value split: RAUW in a deterministic order
Duncan P. N. Exon Smith [Tue, 9 Dec 2014 21:12:56 +0000 (21:12 +0000)]
IR: Metadata/Value split: RAUW in a deterministic order

RAUW in a deterministic order to try to recover the hexagon bot [1],
whose tests started failing once my GCC fixes were in for r223802.

Otherwise, I'm not sure why tests would fail there and not here.

[1]: http://lab.llvm.org:8011/builders/llvm-hexagon-elf/builds/13426

llvm-svn: 223829

9 years agoDebugInfo: Accurate location information for complex assignment
David Blaikie [Tue, 9 Dec 2014 21:10:43 +0000 (21:10 +0000)]
DebugInfo: Accurate location information for complex assignment

llvm-svn: 223828

9 years agoReturn ErrorOr<std::unique_ptr<Archive>> form getAsArchive.
Rafael Espindola [Tue, 9 Dec 2014 21:05:36 +0000 (21:05 +0000)]
Return ErrorOr<std::unique_ptr<Archive>> form getAsArchive.

This is the same return type of Archive::create.

llvm-svn: 223827

9 years agoChange AddressSanitzierRuntime to print its info message via
Jason Molenda [Tue, 9 Dec 2014 20:52:26 +0000 (20:52 +0000)]
Change AddressSanitzierRuntime to print its info message via
the Debugger's output stream instead of logging to the module.

http://reviews.llvm.org/D6577

llvm-svn: 223826

9 years agoDebugInfo: Emit the correct location for initialization of a complex variable
David Blaikie [Tue, 9 Dec 2014 20:52:24 +0000 (20:52 +0000)]
DebugInfo: Emit the correct location for initialization of a complex variable

Especially useful for sanitizer reports.

llvm-svn: 223825