platform/upstream/llvm.git
11 years agoAArch64: Simplify logic in deciding whether bfi is valid
Tim Northover [Mon, 11 Feb 2013 12:32:18 +0000 (12:32 +0000)]
AArch64: Simplify logic in deciding whether bfi is valid

Previous code had a confusing comment which was mostly an implementation
detail. This condition corresponds to "lsb up to register width" and "width not
ridiculous".

llvm-svn: 174877

11 years ago[msan] Lit tests for MemorySanitizer.
Evgeniy Stepanov [Mon, 11 Feb 2013 11:34:26 +0000 (11:34 +0000)]
[msan] Lit tests for MemorySanitizer.

Build system setup for MSan lit tests (build with freshly-built clang, run,
check output) - a nearly exact copy from ASan.
First 2 lit tests for MSan.

llvm-svn: 174876

11 years ago[tsan] added tsan-vs-gvn test
Kostya Serebryany [Mon, 11 Feb 2013 11:28:03 +0000 (11:28 +0000)]
[tsan] added tsan-vs-gvn test

llvm-svn: 174875

11 years agoAArch64: Add basic relocation processing for llvm-dwarfdump.
Tim Northover [Mon, 11 Feb 2013 11:16:02 +0000 (11:16 +0000)]
AArch64: Add basic relocation processing for llvm-dwarfdump.

This allows llvm-dwarfdump to handle the relocations needed, at least
for LLVM-produced code.

llvm-svn: 174874

11 years agoAArch64: Undo change to how test was run
Tim Northover [Mon, 11 Feb 2013 10:51:41 +0000 (10:51 +0000)]
AArch64: Undo change to how test was run

This broke on Windows, presumably due to interleaving of output streams.

llvm-svn: 174873

11 years ago[cmake] Make CLooG optional
Tobias Grosser [Mon, 11 Feb 2013 10:36:19 +0000 (10:36 +0000)]
[cmake] Make CLooG optional

CLooG is already optional in the autoconf build.

llvm-svn: 174872

11 years agoMake use of DiagnosticType to provide better AArch64 diagnostics.
Tim Northover [Mon, 11 Feb 2013 09:29:37 +0000 (09:29 +0000)]
Make use of DiagnosticType to provide better AArch64 diagnostics.

This gives a DiagnosticType to all AsmOperands in sight. This replaces all
"invalid operand" diagnostics with something more specific. The messages given
should still be sufficiently vague that they're not usually actively misleading
when LLVM guesses your instruction incorrectly.

llvm-svn: 174871

11 years agoAdd support for updating LiveIntervals to MachineBasicBlock::SplitCriticalEdge().
Cameron Zwarich [Mon, 11 Feb 2013 09:24:47 +0000 (09:24 +0000)]
Add support for updating LiveIntervals to MachineBasicBlock::SplitCriticalEdge().
This is currently a bit hairier than it needs to be, since depending on where the
split block resides the end ListEntry of the split block may be the end ListEntry
of the original block or a new entry. Some changes to the SlotIndexes updating
should make it possible to eliminate the two cases here.

This also isn't as optimized as it could be. In the future Liveinterval should
probably get a flag that indicates whether the LiveInterval is within a single
basic block. We could ignore all such intervals when splitting an edge.

llvm-svn: 174870

11 years agoUpdate SlotIndexes after updateTerminator() possibly removes instructions. I am
Cameron Zwarich [Mon, 11 Feb 2013 09:24:45 +0000 (09:24 +0000)]
Update SlotIndexes after updateTerminator() possibly removes instructions. I am
really trying to avoid piping SlotIndexes through to RemoveBranch() and friends.

llvm-svn: 174869

11 years agoFix some problems with the updating of SlotIndexes after adding a new MBB. In
Cameron Zwarich [Mon, 11 Feb 2013 09:24:42 +0000 (09:24 +0000)]
Fix some problems with the updating of SlotIndexes after adding a new MBB. In
particular, holes were being left between two blocks after splitting an edge.

llvm-svn: 174868

11 years agoAdd support for printing out the attribute groups.
Bill Wendling [Mon, 11 Feb 2013 08:43:33 +0000 (08:43 +0000)]
Add support for printing out the attribute groups.

This emits the attribute groups that are used by the functions. (It currently
doesn't print out return type or parameter attributes within attribute groups.)

Note: The functions still retrieve their attributes from the "old" bitcode
format (using the deprecated 'Raw()' method). This means that string attributes
within an attribute group will not show up during a disassembly. This will be
addressed in a future commit.

llvm-svn: 174867

11 years agoUpdate test to not fail with attribute groups.
Bill Wendling [Mon, 11 Feb 2013 08:35:52 +0000 (08:35 +0000)]
Update test to not fail with attribute groups.

llvm-svn: 174866

11 years agoFileCheck-ize the tests.
Bill Wendling [Mon, 11 Feb 2013 08:34:57 +0000 (08:34 +0000)]
FileCheck-ize the tests.

llvm-svn: 174865

11 years ago[tsan/msan] adding thread_safety and uninitialized_checks attributes
Kostya Serebryany [Mon, 11 Feb 2013 08:13:54 +0000 (08:13 +0000)]
[tsan/msan] adding thread_safety and uninitialized_checks attributes

llvm-svn: 174864

11 years agoFix formatting of overloaded operator definitions.
Daniel Jasper [Mon, 11 Feb 2013 08:01:18 +0000 (08:01 +0000)]
Fix formatting of overloaded operator definitions.

Before:
operatorvoid*();
operator vector< A< A>>();

After:
operator void *();
operator vector<A<A> >();

llvm-svn: 174863

11 years agoDo not use VariadicDynCastAllOfMatcher where VariadicAllOfMatcher works.
Manuel Klimek [Mon, 11 Feb 2013 07:45:01 +0000 (07:45 +0000)]
Do not use VariadicDynCastAllOfMatcher where VariadicAllOfMatcher works.

llvm-svn: 174862

11 years ago[sanitizer] Fix line numbers in a sanitizer lit test.
Evgeniy Stepanov [Mon, 11 Feb 2013 07:19:24 +0000 (07:19 +0000)]
[sanitizer] Fix line numbers in a sanitizer lit test.

llvm-svn: 174861

11 years agoRevert "Rename LLVMContext diagnostic handler types and functions."
Bob Wilson [Mon, 11 Feb 2013 05:37:07 +0000 (05:37 +0000)]
Revert "Rename LLVMContext diagnostic handler types and functions."

This reverts my commit 171047. Now that I've removed my misguided attempt to
support backend warnings, these diagnostics are only about inline assembly.
It would take quite a bit more work to generalize them properly, so I'm
just reverting this.

llvm-svn: 174860

11 years agoBBVectorize: Remove the linear searches from pair connection searching
Hal Finkel [Mon, 11 Feb 2013 05:29:51 +0000 (05:29 +0000)]
BBVectorize: Remove the linear searches from pair connection searching

This removes the last of the linear searches over ranges of std::multimap
iterators, giving a 7% speedup on the doduc.bc input from PR15222.

No functionality change intended.

llvm-svn: 174859

11 years agoBBVectorize: Avoid linear searches within the load-move set
Hal Finkel [Mon, 11 Feb 2013 05:29:49 +0000 (05:29 +0000)]
BBVectorize: Avoid linear searches within the load-move set

This is another cleanup aimed at eliminating linear searches
in ranges of std::multimap.

No functionality change intended.

llvm-svn: 174858

11 years agoBBVectorize: isa/cast cleanup in getInstructionTypes
Hal Finkel [Mon, 11 Feb 2013 05:29:48 +0000 (05:29 +0000)]
BBVectorize: isa/cast cleanup in getInstructionTypes

Profiling suggests that getInstructionTypes is performance-sensitive,
this cleans up some double-casting in that function in favor of
using dyn_cast.

No functionality change intended.

llvm-svn: 174857

11 years agoBBVectorize: Make the bookkeeping to support full cycle checking less expensive
Hal Finkel [Mon, 11 Feb 2013 05:29:41 +0000 (05:29 +0000)]
BBVectorize: Make the bookkeeping to support full cycle checking less expensive

By itself, this does not have much of an effect, but only because in the default
configuration the full cycle checks are used only for small problem sizes.
This is part of a general cleanup of uses of iteration over std::multimap
ranges only for the purpose of checking membership.

No functionality change intended.

llvm-svn: 174856

11 years agoCurrently, codegen may spent some time in SDISel passes even if an entire
Evan Cheng [Mon, 11 Feb 2013 01:27:15 +0000 (01:27 +0000)]
Currently, codegen may spent some time in SDISel passes even if an entire
function is successfully handled by fast-isel. That's because function
arguments are *always* handled by SDISel. Introduce FastLowerArguments to
allow each target to provide hook to handle formal argument lowering.

As a proof-of-concept, add ARMFastIsel::FastLowerArguments to handle
functions with 4 or fewer scalar integer (i8, i16, or i32) arguments. It
completely eliminates the need for SDISel for trivial functions.

rdar://13163905

llvm-svn: 174855

11 years agoRemove unnecessary code.
Evan Cheng [Mon, 11 Feb 2013 01:18:26 +0000 (01:18 +0000)]
Remove unnecessary code.

llvm-svn: 174854

11 years agoFix unnecessary removal of const through cast machinery
David Blaikie [Mon, 11 Feb 2013 01:16:51 +0000 (01:16 +0000)]
Fix unnecessary removal of const through cast machinery

I have some uncommitted changes to the cast code that catch this sort of thing
at compile-time but I still need to do some other cleanup before I can enable
it.

llvm-svn: 174853

11 years agoSpelling correction
Joel Jones [Sun, 10 Feb 2013 23:56:30 +0000 (23:56 +0000)]
Spelling correction

llvm-svn: 174852

11 years agoFix the unused but nearly correct method SlotIndexes::insertMBBInMaps() and add
Cameron Zwarich [Sun, 10 Feb 2013 23:29:54 +0000 (23:29 +0000)]
Fix the unused but nearly correct method SlotIndexes::insertMBBInMaps() and add
support for updating SlotIndexes to MachineBasicBlock::SplitCriticalEdge(). This
calls renumberIndexes() every time; it should be improved to only renumber
locally.

llvm-svn: 174851

11 years agoAbstract the liveness checking in PHIElimination::SplitPHIEdges() to support
Cameron Zwarich [Sun, 10 Feb 2013 23:29:49 +0000 (23:29 +0000)]
Abstract the liveness checking in PHIElimination::SplitPHIEdges() to support
both LiveVariables and LiveIntervals.

llvm-svn: 174850

11 years agoAdd support in the bitcode reader to read the attribute groups.
Bill Wendling [Sun, 10 Feb 2013 23:24:25 +0000 (23:24 +0000)]
Add support in the bitcode reader to read the attribute groups.

This reads the attribute groups. It currently doesn't do anything with them.

NOTE: In the commit to the bitcode writer, the format *may* change in the near
future. Which means that this code would also change.

llvm-svn: 174849

11 years agoThe 'Raw' method cannot handle 'string' attributes. Don't even try.
Bill Wendling [Sun, 10 Feb 2013 23:18:05 +0000 (23:18 +0000)]
The 'Raw' method cannot handle 'string' attributes. Don't even try.

llvm-svn: 174848

11 years agoUpdate with attribute group IDs.
Bill Wendling [Sun, 10 Feb 2013 23:17:10 +0000 (23:17 +0000)]
Update with attribute group IDs.

llvm-svn: 174847

11 years agoEat the alignment keyword if we're in an attribute group.
Bill Wendling [Sun, 10 Feb 2013 23:15:51 +0000 (23:15 +0000)]
Eat the alignment keyword if we're in an attribute group.

llvm-svn: 174846

11 years agoAdd code for emitting the attribute groups.
Bill Wendling [Sun, 10 Feb 2013 23:09:32 +0000 (23:09 +0000)]
Add code for emitting the attribute groups.

This is some initial code for emitting the attribute groups into the bitcode.

NOTE: This format *may* change! Do not rely upon the attribute groups' bitcode
not changing.

llvm-svn: 174845

11 years agoAdd support for attribute groups in the value enumerator.
Bill Wendling [Sun, 10 Feb 2013 23:06:02 +0000 (23:06 +0000)]
Add support for attribute groups in the value enumerator.

Attribute groups are essentially all AttributeSets which are used by the
program. Enumerate them here.

llvm-svn: 174844

11 years agoFormatter: Remove now-unneeded code for formatting ':'s in ObjC method decls.
Nico Weber [Sun, 10 Feb 2013 21:08:31 +0000 (21:08 +0000)]
Formatter: Remove now-unneeded code for formatting ':'s in ObjC method decls.

The more general code for formatting ObjC method exprs does this and more,
it's no longer necessary to special-case this. No behavior change.

llvm-svn: 174843

11 years agoFormatter: Add a test for multi-line ObjC dict literals.
Nico Weber [Sun, 10 Feb 2013 20:48:24 +0000 (20:48 +0000)]
Formatter: Add a test for multi-line ObjC dict literals.

As it turns out, this already works reasonably well.

This example from http://clang.llvm.org/docs/ObjectiveCLiterals.html
NSDictionary *dictionary = @{
    @"name" : NSUserName(),
    @"date" : [NSDate date],
    @"processInfo" : [NSProcessInfo processInfo]
};

is formatted like
NSDictionary *dictionary = @{ @"name" : NSUserName(), @"date" : [NSDate date],
                              @"processInfo" : [NSProcessInfo processInfo] };

There's already a FIXME in NestedStaticInitializers about supporting one
initializer per line, which is really all that's missing here too.

llvm-svn: 174842

11 years agoFormatter: Add another ObjC literal test.
Nico Weber [Sun, 10 Feb 2013 20:39:05 +0000 (20:39 +0000)]
Formatter: Add another ObjC literal test.

(From http://clang.llvm.org/docs/ObjectiveCLiterals.html.)

llvm-svn: 174841

11 years agoFormatter: Initial support for ObjC dictionary literals.
Nico Weber [Sun, 10 Feb 2013 20:35:35 +0000 (20:35 +0000)]
Formatter: Initial support for ObjC dictionary literals.

Before:
  @{
  foo:
    bar
  }
  ;

Now:
  @{ foo : bar };

parseBracedList() already does the right thing from an UnwrappedLineParser
perspective, so check for "@{" in all loops that process constructs that can
contain expressions and call parseBracedList() if found.

llvm-svn: 174840

11 years agoTest Commit - Remove some trailing whitespace in R600Instructions.td
Vincent Lejeune [Sun, 10 Feb 2013 17:57:33 +0000 (17:57 +0000)]
Test Commit - Remove some trailing whitespace in R600Instructions.td

llvm-svn: 174839

11 years agoUse -mno-implicit-float by default for kernel/kext code. <rdar://13177960>
Bob Wilson [Sun, 10 Feb 2013 16:01:41 +0000 (16:01 +0000)]
Use -mno-implicit-float by default for kernel/kext code. <rdar://13177960>

Apple's kernel engineers have been expecting this behavior even though
we've never implemented it before, as far as I can tell. In recent months,
clang has gotten better at using vector instructions to optimize memcpy-like
operations, and that has exposed problems when vector/floating-point
instructions are used in kexts that don't support that. This behavior also
matches what Apple's GCC did for PowerPC targets.

llvm-svn: 174838

11 years agoDelete an extra blank line.
Bob Wilson [Sun, 10 Feb 2013 16:01:38 +0000 (16:01 +0000)]
Delete an extra blank line.

llvm-svn: 174837

11 years agoRecognize -mno-implicit-float option for x86 as well as ARM. <rdar://13180731>
Bob Wilson [Sun, 10 Feb 2013 15:25:44 +0000 (15:25 +0000)]
Recognize -mno-implicit-float option for x86 as well as ARM. <rdar://13180731>

For x86 targets, we've been using the -msoft-float option to control passing
the no-implicit-float option to cc1. Since the -mno-implicit-float option is
now accepted by the driver, this just makes it work for x86 the same as it
does for ARM targets.

llvm-svn: 174836

11 years agoUse static functions instead of an unnamed namespace
Dmitri Gribenko [Sun, 10 Feb 2013 11:54:22 +0000 (11:54 +0000)]
Use static functions instead of an unnamed namespace

llvm-svn: 174835

11 years agoHandle string attributes in the AttrBuilder.
Bill Wendling [Sun, 10 Feb 2013 10:13:23 +0000 (10:13 +0000)]
Handle string attributes in the AttrBuilder.

llvm-svn: 174834

11 years agoUse a 'continue' here to stop from double lexing.
Bill Wendling [Sun, 10 Feb 2013 10:12:50 +0000 (10:12 +0000)]
Use a 'continue' here to stop from double lexing.

llvm-svn: 174833

11 years agoAdd 'empty' query methods to the builder and use them in the verifier.
Bill Wendling [Sun, 10 Feb 2013 10:12:06 +0000 (10:12 +0000)]
Add 'empty' query methods to the builder and use them in the verifier.

llvm-svn: 174832

11 years agoAdd support for updating LiveIntervals to PHIElimination. If LiveIntervals are
Cameron Zwarich [Sun, 10 Feb 2013 06:42:36 +0000 (06:42 +0000)]
Add support for updating LiveIntervals to PHIElimination. If LiveIntervals are
present, it currently verifies them with the MachineVerifier, and this passed
all of the test cases in 'make check' (when accounting for existing verifier
errors). There were some assertion failures in the two-address pass, but they
also happened on code without phis and look like they are caused by different
kill flags from LiveIntervals.

The only part that doesn't work is the critical edge splitting heuristic,
because there isn't currently an efficient way to update LiveIntervals after
splitting an edge. I'll probably start by implementing the slow fallback and
test that it works before tackling the fast path for single-block ranges. The
existing code that updates LiveVariables is fairly slow as it is.

There isn't a command-line option for enabling this; instead, just edit
PHIElimination.cpp to require LiveIntervals.

llvm-svn: 174831

11 years agoFix a typo.
Cameron Zwarich [Sun, 10 Feb 2013 06:42:34 +0000 (06:42 +0000)]
Fix a typo.

llvm-svn: 174830

11 years agoRemove ancient references to 'atomic' phis in PHIElimination that don't really
Cameron Zwarich [Sun, 10 Feb 2013 06:42:32 +0000 (06:42 +0000)]
Remove ancient references to 'atomic' phis in PHIElimination that don't really
make sense anymore.

llvm-svn: 174829

11 years agoMake LiveVariables an instance variable of PHIElimination.
Cameron Zwarich [Sun, 10 Feb 2013 06:42:30 +0000 (06:42 +0000)]
Make LiveVariables an instance variable of PHIElimination.

llvm-svn: 174828

11 years agook, ok, stop fighting type punning warnings by just using a union.
Chris Lattner [Sun, 10 Feb 2013 06:36:29 +0000 (06:36 +0000)]
ok, ok, stop fighting type punning warnings by just using a union.

llvm-svn: 174827

11 years agohopefully "really" fix a type punning warning by defining the buffer as
Chris Lattner [Sun, 10 Feb 2013 06:07:16 +0000 (06:07 +0000)]
hopefully "really" fix a type punning warning by defining the buffer as
type char, which can't have TBAA tags.

llvm-svn: 174826

11 years agoattempt to defeat a gcc warning that is breaking a -Werror buildbot.
Chris Lattner [Sun, 10 Feb 2013 05:45:34 +0000 (05:45 +0000)]
attempt to defeat a gcc warning that is breaking a -Werror buildbot.

llvm-svn: 174825

11 years agoAdd accessor for the LLVMContext.
Bill Wendling [Sun, 10 Feb 2013 05:00:40 +0000 (05:00 +0000)]
Add accessor for the LLVMContext.

llvm-svn: 174824

11 years agoReformat formatter code. No functionality change.
Nico Weber [Sun, 10 Feb 2013 04:38:23 +0000 (04:38 +0000)]
Reformat formatter code. No functionality change.

llvm-svn: 174823

11 years agoFormatter: Detect ObjC array literals.
Nico Weber [Sun, 10 Feb 2013 02:08:05 +0000 (02:08 +0000)]
Formatter: Detect ObjC array literals.

Use this to add a space after "@[" and before "]" for now.

Later, I want to use this to format multi-line array literals nicer, too.

llvm-svn: 174822

11 years agoobjective-C: Fixes a bogus warning due to not setting
Fariborz Jahanian [Sun, 10 Feb 2013 00:16:04 +0000 (00:16 +0000)]
objective-C: Fixes a bogus warning due to not setting
the "nonatomic" attribute in property redeclaration
in class extension. Also, improved on diagnostics in
this area while at it. // rdar://13156292

llvm-svn: 174821

11 years agoRemove unneeded "TargetMachine.h" #includes.
Jakub Staszak [Sat, 9 Feb 2013 20:54:05 +0000 (20:54 +0000)]
Remove unneeded "TargetMachine.h" #includes.

llvm-svn: 174817

11 years agoFormatter: Add test for default arguments.
Nico Weber [Sat, 9 Feb 2013 18:02:07 +0000 (18:02 +0000)]
Formatter: Add test for default arguments.

llvm-svn: 174816

11 years agoFileCheck'ize tests
Dmitri Gribenko [Sat, 9 Feb 2013 16:41:47 +0000 (16:41 +0000)]
FileCheck'ize tests

llvm-svn: 174815

11 years agoFileCheck'ize a test
Dmitri Gribenko [Sat, 9 Feb 2013 16:25:38 +0000 (16:25 +0000)]
FileCheck'ize a test

llvm-svn: 174814

11 years agoTEMPORARY SYNTAX CHANGE!
Bill Wendling [Sat, 9 Feb 2013 15:48:49 +0000 (15:48 +0000)]
TEMPORARY SYNTAX CHANGE!

The original syntax for the attribute groups was ambiguous. For example:

    declare void @foo() #1
    #0 = attributes { noinline }

The '#0' would be parsed as an attribute reference for '@foo' and not as a
top-level entity. In order to continue forward while waiting for a decision on
what the correct syntax is, I'm changing it to this instead:

     declare void @foo() #1
     attributes #0 = { noinline }

Repeat: This is TEMPORARY until we decide what the correct syntax should be.
llvm-svn: 174813

11 years agoAdd a DenseMapInfo class for the AttributeSet.
Bill Wendling [Sat, 9 Feb 2013 15:42:51 +0000 (15:42 +0000)]
Add a DenseMapInfo class for the AttributeSet.

We are going to place the AttributeSet into a DenseMap during assembly writing.

llvm-svn: 174812

11 years agoRemove unreachable statement
Dmitri Gribenko [Sat, 9 Feb 2013 15:24:28 +0000 (15:24 +0000)]
Remove unreachable statement

llvm-svn: 174811

11 years agoComment parsing: use CharInfo.h
Dmitri Gribenko [Sat, 9 Feb 2013 15:16:58 +0000 (15:16 +0000)]
Comment parsing: use CharInfo.h

This also gives us 0.2% speedup on '-fsyntax-only -Wdocumentation' time for
a testcase that consists of all Clang headers.

llvm-svn: 174810

11 years agolibclang: use CXCursor getters to simplify code
Dmitri Gribenko [Sat, 9 Feb 2013 14:12:09 +0000 (14:12 +0000)]
libclang: use CXCursor getters to simplify code

llvm-svn: 174809

11 years ago[NVPTX] Make address space errors more explicit (llvm_unreachable -> report_fatal_error)
Justin Holewinski [Sat, 9 Feb 2013 13:34:15 +0000 (13:34 +0000)]
[NVPTX] Make address space errors more explicit (llvm_unreachable -> report_fatal_error)

llvm-svn: 174808

11 years agoSimplify code.
Jakub Staszak [Sat, 9 Feb 2013 13:29:31 +0000 (13:29 +0000)]
Simplify code.

llvm-svn: 174807

11 years agoRemove unneeded #includes.
Jakub Staszak [Sat, 9 Feb 2013 13:29:10 +0000 (13:29 +0000)]
Remove unneeded #includes.

llvm-svn: 174806

11 years agoRemove some stray uses of <ctype.h> functions.
Jordan Rose [Sat, 9 Feb 2013 10:09:43 +0000 (10:09 +0000)]
Remove some stray uses of <ctype.h> functions.

These are causing assertions on some MSVC builds.

llvm-svn: 174805

11 years agoThis is the correct version of r174802.
Chris Lattner [Sat, 9 Feb 2013 07:37:59 +0000 (07:37 +0000)]
This is the correct version of r174802.

llvm-svn: 174804

11 years agoFix a nasty off-by one error that only manifests with 64-bit word size (which is
Chris Lattner [Sat, 9 Feb 2013 07:37:26 +0000 (07:37 +0000)]
Fix a nasty off-by one error that only manifests with 64-bit word size (which is
not enabled yet).

llvm-svn: 174803

11 years agoQoI: -Wreadonly-iboutlet-property should have the warning's location on the property.
Ted Kremenek [Sat, 9 Feb 2013 07:13:16 +0000 (07:13 +0000)]
QoI: -Wreadonly-iboutlet-property should have the warning's location on the property.

There's no need to refer to the @implementation at all.

Fixes <rdar://problem/13186515>

llvm-svn: 174802

11 years agoFix the underlying problem that was causing read(0) to be called: sometimes the
Chris Lattner [Sat, 9 Feb 2013 07:07:29 +0000 (07:07 +0000)]
Fix the underlying problem that was causing read(0) to be called: sometimes the
bitcode writer would generate abbrev records saying that the abbrev should be
filled with fixed zero-bit bitfields (this happens in the .bc writer when
the number of types used in a module is exactly one, since log2(1) == 0).

In this case, just handle it as a literal zero.  We can't "just fix" the writer
without breaking compatibility with existing bc files, so have the abbrev reader
do the substitution.

Strengthen the assert in read to reject reads of zero bits so we catch such
crimes in the future, and remove the special case designed to handle this.

llvm-svn: 174801

11 years agorecommit r173072 (preparing bitstream reader to read a machine word at a time,
Chris Lattner [Sat, 9 Feb 2013 06:52:14 +0000 (06:52 +0000)]
recommit r173072 (preparing bitstream reader to read a machine word at a time,
instead of always 32-bits at a time) with two changes:

1. Make Read(0) always return zero without affecting the state of our cursor.
2. Hack word_t to always be 32 bits, as staging.

These two caveats will change shortly.

llvm-svn: 174800

11 years agoRelease notes: mention support for Unicode and UCNs in identifiers.
Jordan Rose [Sat, 9 Feb 2013 02:12:23 +0000 (02:12 +0000)]
Release notes: mention support for Unicode and UCNs in identifiers.

I'm using the name "Extended Identifiers" for the feature because that's
what GCC calls them. According to the standard, the new feature is
"universal character names are now allowed in identifiers", but the more
interesting "feature" is that identifiers can now contain Unicode characters,
however they are written.

llvm-svn: 174798

11 years agoQuick fix for the libc++ std::map synthetic children provider
Enrico Granata [Sat, 9 Feb 2013 01:44:23 +0000 (01:44 +0000)]
Quick fix for the libc++ std::map synthetic children provider
If you try to access any child > 0 without having touched child 0, LLDB won't be able to reconstruct type information from the debug info.
Previously, we would fail.
Now, we simply go fetch child 0 and then come back.

llvm-svn: 174795

11 years agoEnsure that type definitions present in just-loaded modules are
Douglas Gregor [Sat, 9 Feb 2013 01:35:03 +0000 (01:35 +0000)]
Ensure that type definitions present in just-loaded modules are
visible.

The basic problem here is that a given translation unit can use
forward declarations to form pointers to a given type, say,

  class X;
  X *x;

and then import a module that includes a definition of X:

  import XDef;

We will then fail when attempting to access a member of X, e.g.,

  x->method()

because the AST reader did not know to look for a default of a class
named X within the new module.

This implementation is a bit of a C-centric hack, because the only
definitions that can have this property are enums, structs, unions,
Objective-C classes, and Objective-C protocols, and all of those are
either visible at the top-level or can't be defined later. Hence, we
can use the out-of-date-ness of the name and the identifier-update
mechanism to force the update.

In C++, we will not be so lucky, and will need a more advanced
solution, because the definitions could be in namespaces defined in
two different modules, e.g.,

  // module 1
  namespace N { struct X; }

  // module 2
  namespace N { struct X { /* ... */ }; }

One possible implementation here is for C++ to extend the information
associated with each identifier table to include the declaration IDs
of any definitions associated with that name, regardless of
context. We would have to eagerly load those definitions.

llvm-svn: 174794

11 years agoReworked the way Process::RunThreadPlan and the ThreadPlanCallFunction interoperate...
Jim Ingham [Sat, 9 Feb 2013 01:29:05 +0000 (01:29 +0000)]
Reworked the way Process::RunThreadPlan and the ThreadPlanCallFunction interoperate to fix problems where
hitting auto-continue signals while running a thread plan would cause us to lose control of the debug
session.

<rdar://problem/12993641>

llvm-svn: 174793

11 years agoclang/lib/StaticAnalyzer/Core/BugReporter.cpp: Appease old msvc in std::pair(0, 0).
NAKAMURA Takumi [Sat, 9 Feb 2013 01:22:23 +0000 (01:22 +0000)]
clang/lib/StaticAnalyzer/Core/BugReporter.cpp: Appease old msvc in std::pair(0, 0).

llvm-svn: 174792

11 years agoRemove trailing spaces.
Jakub Staszak [Sat, 9 Feb 2013 01:19:12 +0000 (01:19 +0000)]
Remove trailing spaces.

llvm-svn: 174791

11 years agoRemove unneeded #includes.
Jakub Staszak [Sat, 9 Feb 2013 01:15:18 +0000 (01:15 +0000)]
Remove unneeded #includes.

llvm-svn: 174790

11 years agoLSR IVChain improvement.
Andrew Trick [Sat, 9 Feb 2013 01:11:01 +0000 (01:11 +0000)]
LSR IVChain improvement.

Handle chains in which the same offset is used for both loads and
stores to the same array.

Fixes rdar://11410078.

llvm-svn: 174789

11 years agoProperly validate UCNs for C99 and C++03 (both more restrictive than C(++)11).
Jordan Rose [Sat, 9 Feb 2013 01:10:25 +0000 (01:10 +0000)]
Properly validate UCNs for C99 and C++03 (both more restrictive than C(++)11).

Add warnings under -Wc++11-compat, -Wc++98-compat, and -Wc99-compat when a
particular UCN is incompatible with a different standard, and -Wunicode when
a UCN refers to a surrogate character in C++03.

llvm-svn: 174788

11 years ago[analyzer] Invalidation checker: move the "missing implementation" check
Anna Zaks [Sat, 9 Feb 2013 01:09:27 +0000 (01:09 +0000)]
[analyzer] Invalidation checker: move the "missing implementation" check

The missing definition check should be in the same category as the
missing ivar validation - in this case, the intent is to invalidate in
the given class, as described in the declaration, but the implementation
does not perform the invalidation. Whereas the MissingInvalidationMethod
checker checks the cases where the method intention is not to
invalidate. The second checker has potential to have a much higher false
positive rate.

llvm-svn: 174787

11 years agoRemove #includes from the commonly used LoopInfo.h.
Jakub Staszak [Sat, 9 Feb 2013 01:04:28 +0000 (01:04 +0000)]
Remove #includes from the commonly used LoopInfo.h.

llvm-svn: 174786

11 years agoDwarf: do not use line_table_start in at_stmt_list since we do not always emit
Manman Ren [Sat, 9 Feb 2013 00:41:44 +0000 (00:41 +0000)]
Dwarf: do not use line_table_start in at_stmt_list since we do not always emit
line table entries in assembly.

llvm-svn: 174785

11 years agoThe new progress bar mode was losing us information compared to the old dots mode...
Enrico Granata [Sat, 9 Feb 2013 00:37:07 +0000 (00:37 +0000)]
The new progress bar mode was losing us information compared to the old dots mode in that we would have no way of knowing about test failures (short of peeking into the test result directory.. and you're not supposed to peek!)

Added a new line of information that reports the count of tests that pass, fail or have other things happen to them.

Again no flag to have the dots back. If you care, let us know!

llvm-svn: 174784

11 years agoRemove the old liveness algorithm.
Jakob Stoklund Olesen [Sat, 9 Feb 2013 00:04:07 +0000 (00:04 +0000)]
Remove the old liveness algorithm.

This is part of the plan to delete LiveVariables.

llvm-svn: 174783

11 years ago[analyzer] Move DefaultBool so that all checkers can share it.
Anna Zaks [Fri, 8 Feb 2013 23:55:50 +0000 (23:55 +0000)]
[analyzer] Move DefaultBool so that all checkers can share it.

llvm-svn: 174782

11 years ago[analyzer] Split IvarInvalidation into two checkers
Anna Zaks [Fri, 8 Feb 2013 23:55:47 +0000 (23:55 +0000)]
[analyzer] Split IvarInvalidation into two checkers

Separate the checking for the missing invalidation methods into a
separate checker so that it can be turned on/off independently.

llvm-svn: 174781

11 years ago[analyzer] IvarInvalidation: refactor, pull out the diagnostic printing
Anna Zaks [Fri, 8 Feb 2013 23:55:45 +0000 (23:55 +0000)]
[analyzer] IvarInvalidation: refactor, pull out the diagnostic printing

llvm-svn: 174780

11 years ago[analyzer] IvarInvalidation: add annotation for partial invalidation
Anna Zaks [Fri, 8 Feb 2013 23:55:43 +0000 (23:55 +0000)]
[analyzer] IvarInvalidation: add annotation for partial invalidation

The new annotation allows having methods that only partially invalidate
IVars and might not be called from the invalidation methods directly
(instead, are guaranteed to be called before the invalidation occurs).
The checker is going to trust the programmer to call the partial
invalidation method before the invalidator.This is common in cases when
partial object tear down happens before the death of the object.

llvm-svn: 174779

11 years agoFixing a logic flaw with NSURL summary. This was caught by running the test suite...
Enrico Granata [Fri, 8 Feb 2013 23:54:46 +0000 (23:54 +0000)]
Fixing a logic flaw with NSURL summary. This was caught by running the test suite in 32bit mode

llvm-svn: 174778

11 years ago<rdar://problem/13176279>
Enrico Granata [Fri, 8 Feb 2013 23:39:18 +0000 (23:39 +0000)]
<rdar://problem/13176279>

The LLDB test suite now shows a progress bar instead of dots when not in verbose mode
If you crave the dots, make your Terminal window smaller than 10 columns :-)
(or ask for a flag to have the dots come back on demand)

llvm-svn: 174777

11 years agoEnable *BasicBlockPass::createPrinterPass()
Sergei Larin [Fri, 8 Feb 2013 23:37:41 +0000 (23:37 +0000)]
Enable *BasicBlockPass::createPrinterPass()

Enables raw_ostream I/O for BasicBlockPass.

llvm-svn: 174776

11 years agoobjective-C: don't issue bogus warning about
Fariborz Jahanian [Fri, 8 Feb 2013 23:32:30 +0000 (23:32 +0000)]
objective-C: don't issue bogus warning about
"auto-synthesized may not work correctly with 'nib' loader"
when 'readonly' property is redeclared 'readwrite' in class
extension. // rdar://13123861

llvm-svn: 174775

11 years agoTurn on -new-live-intervals by default.
Jakob Stoklund Olesen [Fri, 8 Feb 2013 23:18:37 +0000 (23:18 +0000)]
Turn on -new-live-intervals by default.

This uses a liveness algorithm that does not depend on data from the
LiveVariables analysis, it is the first step towards removing
LiveVariables completely.

llvm-svn: 174774

11 years agoCMake: Use check_symbol_exists instead of check_cxx_symbol_exists.
Jordan Rose [Fri, 8 Feb 2013 23:17:31 +0000 (23:17 +0000)]
CMake: Use check_symbol_exists instead of check_cxx_symbol_exists.

check_cxx_symbol_exists requires CMake 2.8.6, so even though I
recommended it to Owen it's probably better to stay away for now.
This check is not technically correct because we're checking <math.h>
but then using <cmath> in the actual code, but if we run into problems we
can do the same sort of dance as isinf() and isnan() where we check /both/
headers and then write a wrapper header around them.

llvm-svn: 174773

11 years agoFixed a crash when we didn't get a plist but tried
Sean Callanan [Fri, 8 Feb 2013 23:17:17 +0000 (23:17 +0000)]
Fixed a crash when we didn't get a plist but tried
to pass it to CFGetTypeID() anyway.

<rdar://problem/13181904>

llvm-svn: 174772