Commit Graph

46616 Commits

Author SHA1 Message Date
Fariborz Jahanian ae26bb67f8 Objective-C: Warn when fast enumeration variable isn't used.
// rdar://14182680.

llvm-svn: 185762
2013-07-06 18:04:13 +00:00
Sylvestre Ledru 8e5d82e541 Remove some useless declarations (found by scan-build)
llvm-svn: 185752
2013-07-06 08:00:09 +00:00
David Majnemer 027f9c4026 Sema: Fix a crash when main is redeclared as a function-template.
This boils down to us sending invalid function decls to
CheckFunctionDeclaration becauswe we did not consider that CheckMain
could cause the decl to be invalid.  Instead, interogate the new decl's
main-validity and *then* send it over to get CheckFunctionDeclaration'd
if it was still valid after calling CheckMain.

llvm-svn: 185745
2013-07-06 02:13:46 +00:00
Nick Lewycky 02df2062c6 Update test for change in r185735.
llvm-svn: 185736
2013-07-06 00:30:27 +00:00
Fariborz Jahanian e8545dde7b Remove referece type onproperty of abstract
class type. // rdar://14261999

llvm-svn: 185734
2013-07-05 23:50:55 +00:00
Fariborz Jahanian e4055692f4 [comment parsing]: Removes an unsafe API whose
use can cause crash. No test is available. It is uncovered
by code browsing.  // rdar://14348205

llvm-svn: 185732
2013-07-05 23:20:55 +00:00
Rafael Espindola 18627115f4 Use llvm::sys::fs::createUniqueFile.
Include a test that clang now produces output files with permissions matching
the umask.

llvm-svn: 185727
2013-07-05 21:13:58 +00:00
Argyrios Kyrtzidis 1035790034 [libclang] Add the new function to libclang.exports
llvm-svn: 185725
2013-07-05 20:51:44 +00:00
Fariborz Jahanian 266926d85e [objc migrator]: More knobs to do migration to
use of objc's properties.

llvm-svn: 185724
2013-07-05 20:46:03 +00:00
Argyrios Kyrtzidis 7b50fc520f [libclang] Introduce clang_Cursor_isObjCOptional, which returns whether the declaration was affected by "@optional"
rdar://14348525.

llvm-svn: 185722
2013-07-05 20:44:37 +00:00
Eli Friedman eecc09a99c Don't use mangleCXXRTTIName in TBAA for C code.
This changes the TBAA code so it doesn't use mangleCXXRTTIName in C,
because it doesn't really make sense there.  Also, as sort of a
defense-in-depth change, fix the mangler so it handles C RecordDecls
correctly.

No tests because I don't know the TBAA code well enough to write a test,
and I don't know how else to trigger mangling a local struct in C.

Fixes a crash with r185450 reported by Joerg Sonnenberger.

llvm-svn: 185721
2013-07-05 20:27:40 +00:00
Rafael Espindola a36e78ef5d Use llvm::sys::fs::createTemporaryFile.
llvm-svn: 185717
2013-07-05 20:00:06 +00:00
Craig Topper 5603df45df Use SmallVectorImpl& for function arguments instead of SmallVector.
llvm-svn: 185715
2013-07-05 19:34:19 +00:00
Eli Friedman 86af13f0ab Fix regression from r185450.
As it turns out, the NoFunction bit for local class mangling needed to be
propagated into more places. r185450 turned what used to be an incorrect
mangling into an assertion.

llvm-svn: 185713
2013-07-05 18:41:30 +00:00
Fariborz Jahanian 873bae79ac Objective-C: diagnose when synthesizing an ivar of
abstract class type. // rdar://14261999

llvm-svn: 185710
2013-07-05 17:18:11 +00:00
Benjamin Kramer f5d46005b6 Add a test case for r185707/PR16547.
llvm-svn: 185708
2013-07-05 15:51:00 +00:00
Rafael Espindola e4ffbdf349 Fix PR16547.
We should not be asking unique_file to prepend the system temporary directory
when creating the html report. Unfortunately I don't think we can test this
with the current infrastructure since unique_file ignores MakeAbsolute if the
directory is already absolute and the paths provided by lit are.

I will take a quick look at making this api a bit less error prone.

llvm-svn: 185707
2013-07-05 15:05:40 +00:00
Rafael Espindola 1d0912a475 We don't need to check for windows' error codes in here.
The operator== calls equivalent which calls default_error_condition which
handles windows to posix conversion.

llvm-svn: 185702
2013-07-05 14:15:24 +00:00
Daniel Jasper 6f9c8d2148 Fix formatting for allocation of new pointer variables.
Before:
T **t = new T * ;
T **q = new T * ();

After:
T **t = new T *;
T **q = new T *();

llvm-svn: 185699
2013-07-05 13:30:40 +00:00
Daniel Jasper 0e90c3d92c Improve detection for preventing certain kind of formatting patterns.
This is a better implementation of r183097. The main purpose is to
prevent certain constructs to be formatted "like a block of text".

Before:
aaaaaaaaaaaaa<
    aaaaaaaaaa, aaaaaaaaaaa, aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa,
    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa>* aaaa = new aaaaaaaaaaaaa<
    aaaaaaaaaa, aaaaaaaaaaa, aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa,
    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa>(bbbbbbbbbbbbbbbbbbbbbbbb);
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa[
    bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb] = (*cccccccccccccccc)[
    dddddddddddddddddddddddddddddddddddddddddddddddddddddddd];

After:
aaaaaaaaaaaaa<aaaaaaaaaa, aaaaaaaaaaa,
              aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa,
              aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa>* aaaa =
    new aaaaaaaaaaaaa<aaaaaaaaaa, aaaaaaaaaaa,
                      aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa,
                      aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa>(
        bbbbbbbbbbbbbbbbbbbbbbbb);
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa[
    bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb] =
    (*cccccccccccccccc)[
        dddddddddddddddddddddddddddddddddddddddddddddddddddddddd];

llvm-svn: 185687
2013-07-05 09:14:35 +00:00
Daniel Jasper 1bc1b502ec Don't break after a "(" following a binary operator.
Additionally, allow breaking after c-style casts, but with a high
penalty.

Before:
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa *foo = (
    aaaaaaaaaaaaaaaaa *)bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb;
After:
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa *foo = (aaaaaaaaaaaaaaaaa *)
    bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb;

This fixes llvm.org/PR16049.

llvm-svn: 185685
2013-07-05 07:58:34 +00:00
David Majnemer 0f328447b6 Sema: Call IgnoreParens fewer times in CheckAddressOfOperand
llvm-svn: 185684
2013-07-05 06:23:33 +00:00
Craig Topper 3598eb7eba Use typedef for Densemap contraining SmallVector passed to a function to avoid repeating SmallVector size.
llvm-svn: 185683
2013-07-05 04:43:31 +00:00
Craig Topper 79be4cdd2d Add typedefs for Densemaps containing SmallVectors to avoid repeating the SmallVector size when creating iterators for the DenseMap.
llvm-svn: 185682
2013-07-05 04:33:53 +00:00
Rafael Espindola c8c995a2bd Use the new --crash option in commands that are expected to crash.
llvm-svn: 185679
2013-07-05 02:53:30 +00:00
James Dennett b46f7b974e Add some more documentation on how to navigate from a LambdaExpr::Capture
to the associated FieldDecl.

llvm-svn: 185674
2013-07-04 22:15:44 +00:00
James Dennett 3947f5671a Minor documentation cleanup
llvm-svn: 185672
2013-07-04 22:14:20 +00:00
Roman Divacky 4575c64f9d Add test for r185584.
llvm-svn: 185668
2013-07-04 21:29:24 +00:00
Rafael Espindola 5c6c707e53 Require a shell for this test.
Some versions of python will expand the glob used in the test, others wont,
causing the test to fail when run with LIT_USE_INTERNAL_SHELL=1.

llvm-svn: 185653
2013-07-04 16:23:44 +00:00
Rafael Espindola 925213b0fa Add 'not' to commands that are expected to fail.
This is at least good documentation, but also opens the possibility of
using pipefail.

llvm-svn: 185652
2013-07-04 16:16:58 +00:00
Rafael Espindola 76e202c7b8 Looks like {{.*}} doesn't match the empty string. Fix test.
llvm-svn: 185650
2013-07-04 15:29:20 +00:00
Rafael Espindola 7ac579a3f8 Relax pattern to accept a signext on ppc64.
llvm-svn: 185649
2013-07-04 15:25:05 +00:00
Rafael Espindola be8a91b771 Replace 'grep foo | count 0' with 'not grep foo'.
This avoids depending on pipefail not being used.

llvm-svn: 185648
2013-07-04 15:22:16 +00:00
Rafael Espindola 0cf7c93849 Remove test for the old debug format which was XFAILed since 2009.
llvm-svn: 185647
2013-07-04 15:14:31 +00:00
Rafael Espindola 80a99478bd Convert test to FileCheck.
llvm-svn: 185645
2013-07-04 15:08:20 +00:00
Rafael Espindola 87627034a1 Add missing expected-warning.
llvm-svn: 185644
2013-07-04 15:04:25 +00:00
Rafael Espindola 3a228ee60c Remove more unused uses of -verify.
llvm-svn: 185643
2013-07-04 14:58:42 +00:00
Rafael Espindola 550f263dcf Remove unused -verify.
llvm-svn: 185641
2013-07-04 14:51:11 +00:00
Alexander Kornienko 1efe0a07bb Fixed typo: NoneComment -> NonComment, no other changes.
llvm-svn: 185640
2013-07-04 14:47:51 +00:00
Rafael Espindola e703c0194c clang -cc1 has no -fno-unit-at-a-time or -funit-at-a-time. Fix test.
llvm-svn: 185639
2013-07-04 14:42:44 +00:00
Rafael Espindola a5695db67d Use a clang -cc1 option instead of -m32 and remove tcl quotes.
llvm-svn: 185637
2013-07-04 14:36:22 +00:00
Rafael Espindola 1011024e37 Remove tcl quotes.
llvm-svn: 185636
2013-07-04 14:30:41 +00:00
Rafael Espindola 450eb99c89 Convert test to FileCheck.
llvm-svn: 185635
2013-07-04 14:28:33 +00:00
Rafael Espindola 00db4c6f00 Replace void with int to make this a valid C++ file.
The test was passing because clang would still print the ast before exiting
with an error. Since that didn't seem to be the intent of the test, I change
the test instead of adding 'not' to the command line.

llvm-svn: 185634
2013-07-04 14:25:25 +00:00
Rafael Espindola 5dac06ff4b Remove old test.
It was trivially passing because of the tcl quotes and we have better datalayout
tests.

llvm-svn: 185630
2013-07-04 14:20:52 +00:00
Rafael Espindola d1d617593b Remove old test.
It was not clear what was being tested and the test was trivially passing
by getting grep confused with tcl quotes.

llvm-svn: 185629
2013-07-04 14:18:32 +00:00
Rafael Espindola 53e40e4b06 Clang has no nested function support. Delete this test.
llvm-svn: 185628
2013-07-04 14:13:53 +00:00
Craig Topper 9c525eec94 Use SmallVectorImpl::const_iterator instead of SmallVector to avoid specifying the vector size.
llvm-svn: 185623
2013-07-04 13:11:33 +00:00
Alexander Kornienko 5861171893 Added AlwaysBreakBeforeMultilineStrings option.
Summary:
Always breaking before multiline strings can help format complex
expressions containing multiline strings more consistently, and avoid consuming
too much horizontal space.

Reviewers: djasper

Reviewed By: djasper

CC: cfe-commits, klimek

Differential Revision: http://llvm-reviews.chandlerc.com/D1097

llvm-svn: 185622
2013-07-04 12:02:44 +00:00
Richard Smith 6d6676b9d1 Add test for PR4997. This has been fixed for a while.
llvm-svn: 185614
2013-07-04 04:10:46 +00:00
Richard Smith e65319009c Testcase for PR14130, which was probably fixed by r183859.
llvm-svn: 185613
2013-07-04 04:04:20 +00:00
Craig Topper af6bd1b87f Add a space between closing template '>' to unbreak build.
llvm-svn: 185611
2013-07-04 03:15:42 +00:00
Craig Topper 2341c0d3b2 Use SmallVectorImpl instead of SmallVector for iterators and references to avoid specifying the vector size unnecessarily.
llvm-svn: 185610
2013-07-04 03:08:24 +00:00
Anna Zaks a42fb525e4 [analyzer] Suppress reports reported in std::list
The motivation is to suppresses false use-after-free reports that occur when calling
std::list::pop_front() or std::list::pop_back() twice. The analyzer does not
reason about the internal invariants of the list implementation, so just do not report
any of warnings in std::list.

Fixes radar://14317928.

llvm-svn: 185609
2013-07-04 02:38:10 +00:00
Anna Zaks 5673b6567a [analyzer] Make sure that inlined defensive checks work on div by zero.
This suppresses a false positive in std::hash_map.
Fixes  radar://14255587.

llvm-svn: 185608
2013-07-04 02:38:06 +00:00
Richard Smith c87b938e17 Part of PR15673: If a function template has a default argument in which
substitution failed, report that as a substitution failure rather than
pretending that there was no default argument.

The test cases in PR15673 have exposed some pre-existing poor diagnostics here.

llvm-svn: 185604
2013-07-04 01:01:24 +00:00
Richard Trieu 949abc327d Improve -Wlogical-not-parentheses to catch when the not is applied to an enum.
llvm-svn: 185602
2013-07-04 00:50:18 +00:00
Fariborz Jahanian 43bbaaca80 [ObjectiveC migrator] relax the rules for setter/getter
types when deciding on validity of a property
inclusion. // rdar://14345082

llvm-svn: 185599
2013-07-04 00:24:32 +00:00
Richard Smith cde3fd87e0 PR16480: Reimplement token-caching for constructor initializer lists. This
previously didn't work if a mem-initializer-id had a template argument which
contained parentheses or braces.

We now implement a simple rule: just look for a ') {' or '} {' that is not
nested. The '{' is assumed to start the function-body. There are still two
cases which we misparse, where the ') {' comes from a compound literal or
from a lambda. The former case is not valid C++, and the latter will probably
not be valid C++ once DR1607 is resolved, so these seem to be of low value,
and we do not regress on them with this change. EDG and g++ also misparse
both of these cases.

llvm-svn: 185598
2013-07-04 00:13:48 +00:00
Fariborz Jahanian de66100889 Minor refactoring of my last patch.
llvm-svn: 185593
2013-07-03 23:44:11 +00:00
Fariborz Jahanian a7437f0227 [ObjectiveC Migration]: Provide knobs for
migrating setter/getter methods to an eventual
property declaraiton. This is wip.
// rdar://14345082

llvm-svn: 185591
2013-07-03 23:05:00 +00:00
Roman Divacky ac6f5f4015 Check LongDoubleFormat instead of just Width as this is PowerPC specific.
llvm-svn: 185584
2013-07-03 21:08:41 +00:00
Bill Schmidt 58ae47bf10 [PowerPC] FreeBSD does not require f128 in its data layout string.
Long double is 64 bits on FreeBSD PPC, so the f128 entry is superfluous.

llvm-svn: 185582
2013-07-03 21:03:06 +00:00
Bill Schmidt 99a084b7ae "bool" should be a context-sensitive keyword in Altivec mode.
PR16456 reported that Clang implements a hybrid between AltiVec's
"Keyword and Predefine Method" and its "Context Sensitive Keyword
Method," where "bool" is always a keyword, but "vector" and "pixel"
are context-sensitive keywords.  This isn't permitted by the AltiVec
spec.  For consistency with gcc, this patch implements the Context
Sensitive Keyword Method for bool, and stops treating true and false
as keywords in Altivec mode.

The patch removes KEYALTIVEC as a trigger for defining these keywords
in include/clang/Basic/TokenKinds.def, and adds logic for "vector
bool" that mirrors the existing logic for "vector pixel."  The test
case is taken from the bug report.

llvm-svn: 185580
2013-07-03 20:54:09 +00:00
Roman Divacky b6debb6ab8 Add support for TF/TC modes available on eg. PowerPC64.
llvm-svn: 185578
2013-07-03 20:48:06 +00:00
Manman Ren 825e8e41ad Update testing cases to check dwarf-2 for Darwin.
llvm-svn: 185577
2013-07-03 20:45:07 +00:00
Chad Rosier 7ed67722e5 Revert r185557 as it was a bit (a lot) premature.
llvm-svn: 185574
2013-07-03 20:37:50 +00:00
Roman Divacky 13b586f298 Dont define __LONG_DOUBLE_128__ unless LongDoubleWidth is really 128bits width.
It's not the case on ie. FreeBSD.

llvm-svn: 185572
2013-07-03 19:45:54 +00:00
Eli Bendersky 9b64ec18c1 Add target hook CodeGen queries when generating builtin pow*.
Without fmath-errno, Clang currently generates calls to @llvm.pow.* intrinsics
when it sees pow*(). This may not be suitable for all targets (for
example le32/PNaCl), so the attached patch adds a target hook that CodeGen
queries. The target can state its preference for having or not having the
intrinsic generated. Non-PNaCl behavior remains unchanged;
PNaCl-specific test added.

llvm-svn: 185568
2013-07-03 19:19:12 +00:00
Richard Smith a9d6a0e1f8 Enable -ffreestanding for this test, to avoid #include_next'ing the system's
<stdint.h> (which might not exist or might not work).

llvm-svn: 185565
2013-07-03 18:35:53 +00:00
Bill Schmidt 3d11a3061a Provide test case for commit r185544.
Verify that assembling an empty file does not auto-include altivec.h.

llvm-svn: 185563
2013-07-03 18:21:12 +00:00
Eli Friedman a07aa69771 Add file suffix for assembler-with-cpp.
Fixes crash when trying to recover from a crash on an assembler-with-cpp
file.  (Not sure how to write a testcase.)

llvm-svn: 185562
2013-07-03 18:06:11 +00:00
Chad Rosier fbaff8489d Chris has agree to take part ownership of the driver.
llvm-svn: 185557
2013-07-03 17:25:50 +00:00
Jordan Rose 1187b95bd1 [scan-build] Log compiler invocation to stderr, not stdout.
This is important for preprocessing steps, which may output to stdout.

Also, change ENV accesses using barewords to use string keys instead.

PR16414

llvm-svn: 185555
2013-07-03 16:42:02 +00:00
Jordan Rose b8859f6791 With CLANG_ENABLE_STATIC_ANALYZER=0, link clang properly and skip clang-check.
Previously, the CMake build still tried to link clang against the static
analyzer libraries, even if CLANG_ENABLE_STATIC_ANALYZER was off.
Furthermore, clang-check depends on the analyzer, so it should be disabled
(in both CMake and configure builds).

In theory, clang-check could be made to conditionally include analyzer
support (like clang itself), but for now this at least gets a CMake ALL_BUILD
working.

Patch by Stephen Kelly, modified by me.

llvm-svn: 185548
2013-07-03 16:20:29 +00:00
Bill Schmidt b3b804e442 Fix PR16454: Don't #include altivec.h when preprocessing assembly.
When the -maltivec flag is present, altivec.h is auto-included for the
compilation.  This is not appropriate when the job action is to
preprocess a file containing assembly code.  So don't do that.

I was unable to convert the test in the bug report into a regression
test.  The original symptom was exposed with:

  % touch x.S
  % ./bin/clang -target powerpc64-unknown-linux-gnu -maltivec -S -o - x.S

I tried this test (and numerous variants) on a PPC64 system:

----------------------------------------------------------------------------
// RUN: touch %t
// RUN: %clang -maltivec -S %t -o - | FileCheck %s

// Verify that assembling an empty file does not auto-include altivec.h.

// CHECK-NOT: static vector
----------------------------------------------------------------------------

However, this test passes for some reason even on a clang built
without the fix.  I'd be happy to add a test case but at this point
I'm not able to figure one out, and I don't want to hold up the patch
unnecessarily.  Please let me know if you have ideas.

Thanks,
Bill

llvm-svn: 185544
2013-07-03 15:36:02 +00:00
Serge Pavlov f432f85777 Test case for PR7887 - failed with asm("")
llvm-svn: 185543
2013-07-03 15:32:48 +00:00
Rafael Espindola 10a63c2f03 We don't need to know the OpenSUSE version, so don't parse it.
Patch by Johannes Obermayr.

llvm-svn: 185537
2013-07-03 14:14:00 +00:00
Daniel Jasper 095737413f Prevent error message when formatting an empty file.
This fixes llvm.org/PR16514.

llvm-svn: 185531
2013-07-03 12:22:18 +00:00
Daniel Jasper 7ae41cdd22 Don't insert confusing line breaks in comparisons.
In general, clang-format breaks after an operator if the LHS spans
multiple lines. Otherwise, this can lead to confusing effects and
effectively hide the operator precendence, e.g. in

if (aaaaaaaaaaaaaa ==
        bbbbbbbbbbbbbb && c) { ...

This patch removes this rule for comparisons, if the LHS is not a binary
expression itself as many users were wondering why clang-format inserts
an unnecessary linebreak.

Before:
if (aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa(
        aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa) >
    5) { ...

After:
if (aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa(
        aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa) > 5) { ...

In the long run, we might:
- Want to do this for other binary expressions as well.
- Do this only if the RHS is short or even only if it is a literal.

llvm-svn: 185530
2013-07-03 10:34:47 +00:00
Pavel Labath f77e736844 [analyzer] Improve handling of noreturn destructors
Summary:
The analyzer incorrectly handled noreturn destructors which were hidden inside
function calls. This happened because NoReturnFunctionChecker only listened for
PostStmt events, which are not executed for destructor calls. I've changed it to
listen to PostCall events, which should catch both cases.

Reviewers: jordan_rose

CC: cfe-commits

Differential Revision: http://llvm-reviews.chandlerc.com/D1056

llvm-svn: 185522
2013-07-03 08:23:49 +00:00
Serge Pavlov b4bbae0703 Fixed test options.
llvm-svn: 185493
2013-07-03 01:43:57 +00:00
Kaelyn Uhrain 10413a46a0 Allow typo correction to try removing nested name specifiers.
The removal is tried by retrying the failed lookup of a correction
candidate with either the MemberContext or SS (CXXScopeSpecifier) or
both set to NULL if they weren't already. If the candidate identifier
is then looked up successfully, make a note in the candidate that the
SourceRange should include any existing nested name specifier even if
the candidate isn't adding a different one (i.e. the candidate has a
NULL NestedNameSpecifier).

Also tweak the diagnostic messages to differentiate between a suggestion
that just replaces the identifer but leaves the existing nested name
specifier intact and one that replaces the entire qualified identifier,
in cases where the suggested replacement is unqualified.

llvm-svn: 185487
2013-07-02 23:47:44 +00:00
Kaelyn Uhrain b18b0c0f16 Look for corrections in enclosing namespaces that require a global NestedNameSpecifier.
CorrectTypo will now see and consider those corrections that are effectively
shadowed by other declarations in a closer context when resolved via an
unqualified lookup. This involves adding any parent namespaces to the set of
namespaces as fully-qualified name specifiers, and also adding potential
corrections that passed name lookup but were rejected by the given
CorrectionCandidateCallback into the set of failed corrections that should be
tried with the set of namespace specifiers.

llvm-svn: 185486
2013-07-02 23:47:35 +00:00
Manman Ren 38db092083 Debug Info: set default to gdwarf-2 for Darwin.
Darwin systems currently do not support dwarf version 3 or above. When we are
ready, we can bump the default to gdwarf-4 for Darwin.

For other systems, the default is dwarf version 3, if everything goes smoothly,
we can bump the version to 4.

rdar://13591116

llvm-svn: 185483
2013-07-02 23:15:25 +00:00
Richard Trieu 1466faf8a6 Redirect the output of a test to a temporary file to prevent messing up
the test environment.

llvm-svn: 185470
2013-07-02 20:49:10 +00:00
James Dennett c5aff0550f Documentation: Update docs for C++ lambdas to more accurately reflect
C++1y init-capture support, and to improve some Doxygen markup.

llvm-svn: 185469
2013-07-02 20:28:47 +00:00
Manman Ren 0d441f1853 Debug Info: clean up usage of Verify.
No functionality change. It should suffice to check the type of a debug info
metadata, instead of calling Verify.

llvm-svn: 185463
2013-07-02 19:01:53 +00:00
Reid Kleckner f0ae35b88c [ms-cxxabi] Mangle variadic template parameter packs
Unlike Itanium, there is no code to indicate the beginning of a
parameter pack.  I tested this with MSVC 2013, which is the only version
that implements variadic templates so far.

This is needed to compile APInt.cpp for the MS C++ ABI.

Reviewers: timurrrr

Differential Revision: http://llvm-reviews.chandlerc.com/D1077

llvm-svn: 185454
2013-07-02 18:10:07 +00:00
Richard Smith 5001ec9190 Add regression test for PR12331.
llvm-svn: 185453
2013-07-02 18:08:50 +00:00
Eli Friedman 95f501284a More fixes for block mangling.
Make sure we properly treat names defined inside a block as local
names.  There are basically three fixes here.  One, correctly
treat blocks as a context where we need to use local-name mangling using
the new isLocalContainerContext helper. Two, make
CXXNameMangler::manglePrefix handle local names in a consistent way.
Three, extend CXXNameMangler::mangleLocalName so it can mangle a block
correctly.

llvm-svn: 185450
2013-07-02 17:52:28 +00:00
Serge Pavlov fb73ec834a Fix to PR15826 - clang hits assert in clang::ASTContext::getASTRecordLayout.
llvm-svn: 185446
2013-07-02 17:31:56 +00:00
Jordan Rose 00deddb6d8 [analyzer] Pointers-to-members are (currently) Locs, not NonLocs.
While we don't model pointers-to-members besides "null" and "non-null",
we were using Loc symbols for valid pointers and NonLoc integers for the
null case. This hit the assert committed in r185401.

Fixed by using a true (Loc) null for null member pointers.

llvm-svn: 185444
2013-07-02 16:50:24 +00:00
Andy Gibbs 456198d6a1 Suppress "control reaches end of non-void function" warning when compiling with gcc.
llvm-svn: 185439
2013-07-02 16:01:56 +00:00
Timur Iskhodzhanov 7f55a455d1 Simplify getting CXXRecordDecl from a base iterator
llvm-svn: 185438
2013-07-02 16:00:40 +00:00
Daniel Jasper a3fc21a0f1 Fix ranges computed by git clang-format.
Before, the computed byte range would include the trailing newline.
clang-format on the other hand counts whitespace as belonging to the
following token, so that git-clang-format inadvertendly reformats the
first unmodified line as well.

It is not entirely clear whether clang-format's behavior itself should
be modified, but for now this seems to be a safe change.

llvm-svn: 185423
2013-07-02 13:20:35 +00:00
Daniel Jasper dba1c5587c Fix formatting of long declarations with const type.
Before (exceeding the column limit):
LoooooooooooooooooooooooooooooooooooooooongType const LoooooooooooooooooooooooooooooooooooooooongVariable;

After:
LoooooooooooooooooooooooooooooooooooooooongType const
LoooooooooooooooooooooooooooooooooooooooongVariable;

llvm-svn: 185418
2013-07-02 09:47:29 +00:00
Pavel Labath 868bebf844 Teach static analyzer about AttributedStmts
Summary:
Static analyzer used to abort when encountering AttributedStmts, because it
asserted that the statements should not appear in the CFG. This is however not
the case, since at least the clang::fallthrough annotation makes it through.

This commit simply makes the analyzer ignore the statement attributes.

CC: cfe-commits

Differential Revision: http://llvm-reviews.chandlerc.com/D1030

llvm-svn: 185417
2013-07-02 09:38:48 +00:00
Eli Friedman 92821745bf Don't skip lambdas when mangling local vars.
This commit rearranges the logic in CXXNameMangler::mangleLocalName and
GetLocalClassDecl so that it doesn't accidentally skip over lambdas.  It
also reduces code duplication a bit.

llvm-svn: 185402
2013-07-02 02:01:18 +00:00
Jordan Rose 686df32216 [analyzer] Explicitly disallow mixed Loc-NonLoc comparisons.
The one bit of code that was using this is gone, and neither C nor C++
actually allows this. Add an assertion and remove dead code.

Found by Matthew Dempsky!

llvm-svn: 185401
2013-07-02 01:37:40 +00:00
Eli Friedman d02bbeb44e Simplify code in mangler.
llvm-svn: 185384
2013-07-01 21:29:48 +00:00
Eli Friedman c48d31c31c Simplify linkage code for static local vars.
The key insight here is that weak linkage for a static local variable
should always mean linkonce_odr, because every file that needs it will
generate a definition.  We don't actually care about the precise linkage
of the parent context.  I feel a bit silly that I didn't realize this before.

llvm-svn: 185381
2013-07-01 20:53:07 +00:00
Eli Friedman 4747c71427 Fix CMakeLists.txt.
Sorry about that.

llvm-svn: 185374
2013-07-01 20:34:51 +00:00
Eli Friedman 7e346a8127 Fix mangling for block literals.
Blocks, like lambdas, can be written in contexts which are required to be
treated as the same under ODR.  Unlike lambdas, it isn't possible to actually
take the address of a block, so the mangling of the block itself doesn't
matter. However, objects like static variables inside a block do need to
be mangled in a consistent way.

There are basically three components here. One, block literals need a
consistent numbering.  Two, objects/types inside a block literal need
to be mangled using it.  Three, objects/types inside a block literal need
to have their linkage computed correctly.

llvm-svn: 185372
2013-07-01 20:22:57 +00:00
Anton Korobeynikov ef4129084a Fix MSP430 builtin types.
Patch by Job Noorman!

llvm-svn: 185362
2013-07-01 19:42:40 +00:00
Daniel Jasper ca7bd720eb Fix incorrect token counting introduced by r185319.
This lead to weird formatting.
Before:
DoSomethingWithVector({ {} /* No data */ }, {
  { 1, 2 }
});
After:
DoSomethingWithVector({ {} /* No data */ }, { { 1, 2 } });

llvm-svn: 185346
2013-07-01 16:43:38 +00:00
Alexander Kornienko aa620e187e Avoid column limit violation in block comments in certain cases.
Summary:
Add penalty when an excessively long line in a block comment can not be
broken on a leading whitespace. Lack of this addition can lead to severe column
width violations when they can be easily avoided.

Reviewers: djasper

Reviewed By: djasper

CC: cfe-commits, klimek

Differential Revision: http://llvm-reviews.chandlerc.com/D1071

llvm-svn: 185337
2013-07-01 13:42:42 +00:00
Daniel Jasper 251b3c9e7e Don't align "} // namespace" comments.
This is not all bad, but people are often surprised by it.

Before:
namespace {
int SomeVariable = 0; // comment
}                     // namespace

After:
namespace {
int SomeVariable = 0; // comment
} // namespace

llvm-svn: 185327
2013-07-01 11:22:57 +00:00
NAKAMURA Takumi 77fcfe70be clang/test/lit.cfg: Improve is_filesystem_case_insensitive() to work properly on cygwin.
Cygwin does not accept the form /CYGDRIVE/X/PATH/TO/FILE against /cygdrive/X/PATH/TO/FILE.
"cygdrive" must be lower-cased.

llvm-svn: 185323
2013-07-01 09:51:55 +00:00
Daniel Jasper bafa6b711a Don't add an extra space before ellipsis after pointers.
Before (for styles where the pointer binds to the type):
template <class... Ts> void Foo(Ts... ts) {}
template <class... Ts> void Foo(Ts* ... ts) {}
After:
template <class... Ts> void Foo(Ts... ts) {}
template <class... Ts> void Foo(Ts*... ts) {}

llvm-svn: 185321
2013-07-01 09:47:25 +00:00
Daniel Jasper 022612db05 Keep space between pointer and block comment.
Before: void f(int */* unused */) {}
After:  void f(int * /* unused */) {}

The previous version seems to be valid C++ code but confuses many syntax
highlighters.

llvm-svn: 185320
2013-07-01 09:34:09 +00:00
Daniel Jasper 7f5d53e55f Fix braced-list detection in lieu of trailing comments.
Before:
DoSomethingWithVector({
} /* No data */);
After:
DoSomethingWithVector({} /* No data */);

llvm-svn: 185319
2013-07-01 09:15:46 +00:00
Sylvestre Ledru 103b51c72e Following the modification introduced in llvm by commit 185311
The build system is currently miss-identifying GNU/kFreeBSD as FreeBSD.
This kind of simplification is sometimes useful, but in general it's not correct. 

As GNU/kFreeBSD is an hybrid system, for kernel-related issues we want to match the
build definitions used for FreeBSD, whereas for userland-related issues we want to
match the definitions used for other systems with Glibc.

The current modification adjusts the build system so that they can be distinguished,
and explicitly adds GNU/kFreeBSD to the build checks in which it belongs.

Fixes bug #16445.

Patch by Robert Millan in the context of Debian.

llvm-svn: 185312
2013-07-01 08:13:34 +00:00
Craig Topper 69b6277a83 Put helper class in anonymous namespace.
llvm-svn: 185306
2013-07-01 06:34:58 +00:00
Craig Topper cd7b03342d Put helper class in anonymous namespace.
llvm-svn: 185305
2013-07-01 06:29:40 +00:00
Richard Smith 0bca59d6f7 PR16502: Fix a dumb bug where we might look past the last initializer in an
InitListExpr.

llvm-svn: 185304
2013-07-01 06:08:20 +00:00
Craig Topper 69665e112b Put helper classes in an anonymous namespace.
llvm-svn: 185303
2013-07-01 04:21:54 +00:00
Craig Topper 411294d353 Use LLVM_DELETED_FUNCTION on unimplemented copy constructor and assignment operator.
llvm-svn: 185302
2013-07-01 04:07:34 +00:00
Craig Topper 318ed7c1a2 Put helper classes in an anonymous namespace.
llvm-svn: 185301
2013-07-01 04:03:19 +00:00
Craig Topper bfb5c40bee Use static for helper functions instead of an anonymous namespace per coding standards.
llvm-svn: 185300
2013-07-01 03:38:29 +00:00
Craig Topper 6862dcc6da Make string pointer const.
llvm-svn: 185296
2013-06-30 22:44:02 +00:00
Craig Topper af35e8521a Put helper classes into anonymous namespace.
llvm-svn: 185295
2013-06-30 22:29:28 +00:00
James Dennett 6b65570f37 Documentation cleanup for TypeOrdering.h.
llvm-svn: 185293
2013-06-30 21:23:07 +00:00
Stephen Lin 9dc6eef755 Restore r184205 and associated commits (after commit of r185290)
This allows clang to use the backend parameter attribute 'returned' when generating 'this'-returning constructors and destructors in ARM and MSVC C++ ABIs.

llvm-svn: 185291
2013-06-30 20:40:16 +00:00
James Dennett 851b025e96 Documentation cleanup: Mostly formatting \brief documentation, also fix a
typo or two.

llvm-svn: 185288
2013-06-30 19:39:15 +00:00
Richard Smith e3dbfe04b7 Teach -Wunsequenced that the side-effects of a function evaluation are sequenced
before the value computation of the result. In C, this is implied by there being
a sequence point after their evaluation, and in C++, it's implied by the
side-effects being sequenced before the expressions and statements in the
function body.

llvm-svn: 185282
2013-06-30 10:40:20 +00:00
Richard Smith ac974a3c76 Reinstate r185229, reverted in r185256, with a tweak: further ignore the
standard's rule that an extern "C" declaration conflicts with any entity in the
global scope with the same name. Now we only care if the global scope entity is
a variable declaration (and so might have the same mangled name as the extern
"C" declaration). This has been reported as a standard defect.

Original commit message:

PR7927, PR16247: Reimplement handling of matching extern "C" declarations
across scopes.

When we declare an extern "C" name that is not a redeclaration of an entity in
the same scope, check whether it redeclares some extern "C" entity from another
scope, and if not, check whether it conflicts with a (non-extern-"C") entity in
the translation unit.

When we declare a name in the translation unit that is not a redeclaration,
check whether it conflicts with any extern "C" entities (possibly from other
scopes).

llvm-svn: 185281
2013-06-30 09:48:50 +00:00
David Majnemer 7aa8c2fd99 Lex: Cleanup whitespace in PragmaRegionHandler
llvm-svn: 185280
2013-06-30 08:18:16 +00:00
James Dennett 9ad9959e51 Bug fix: Make RecursiveASTVisitor<T>::TraverseLambdaExpr call
WalkUpFromLambdaExpr, so that the Visit* functions are called
on that AST node.

llvm-svn: 185277
2013-06-30 03:13:35 +00:00
James Dennett eb576c0a06 Add enumerators to TestVisitor::Language to allow visitor tests to
explicitly specify use of C++98 or C++11. Lang_CXX is preserved as
an alias for Lang_CXX98.

This does not add Lang_CXX1Y or Lang_C11, on the assumption that it's
better to add them if/when they are needed.

(This is a prerequisite for a test in a later patch for RecursiveASTVisitor.)

Reviewed by Richard Smith.

llvm-svn: 185276
2013-06-30 03:05:49 +00:00
Benjamin Kramer eb8c4463c2 Compress pairs. No functionality change.
llvm-svn: 185264
2013-06-29 17:52:13 +00:00
Benjamin Kramer b1276b4cff Driver: Push triple objects around instead of going to std::string all the time.
No functionality change.

llvm-svn: 185261
2013-06-29 16:37:14 +00:00
Timur Iskhodzhanov 32d1e73023 Revert r185229 as it breaks compilation of <windows.h>
llvm-svn: 185256
2013-06-29 08:38:42 +00:00
Argyrios Kyrtzidis ae7b38e6aa [test] Add test case for rdar://14183893.
llvm-svn: 185244
2013-06-28 23:47:22 +00:00
Eli Friedman ba2778f4ba Remove dead code.
llvm-svn: 185231
2013-06-28 22:13:27 +00:00
Richard Smith 902befa277 PR7927, PR16247: Reimplement handling of matching extern "C" declarations
across scopes.

When we declare an extern "C" name that is not a redeclaration of an entity in
the same scope, check whether it redeclares some extern "C" entity from another
scope, and if not, check whether it conflicts with a (non-extern-"C") entity in
the translation unit.

When we declare a name in the translation unit that is not a redeclaration,
check whether it conflicts with any extern "C" entities (possibly from other
scopes).

llvm-svn: 185229
2013-06-28 22:03:51 +00:00
Eli Friedman b13e64eb60 Fix error recovery with in-class initializer.
Previously, for a field with an invalid in-class initializer, we
would create a CXXDefaultInitExpr referring to a null Expr*.
This is not a good idea.

llvm-svn: 185216
2013-06-28 21:07:41 +00:00
Eli Friedman c37dbf7f65 Fix line endings.
llvm-svn: 185215
2013-06-28 20:48:34 +00:00
Peter Collingbourne 66f82e68c3 [ms-cxxabi] Move CodeGenVTables::needsVTTParameter to ItaniumCXXABI.
This function only makes sense there.  Eventually it should no longer
be part of the CGCXXABI interface, as it is an Itanium-specific detail.

Differential Revision: http://llvm-reviews.chandlerc.com/D821

llvm-svn: 185213
2013-06-28 20:45:28 +00:00
Anton Yartsev 93e5a02c8b + "For Windows Users" section
+ description for --use-analyzer option
+ managed size of columns of the 'options' table

llvm-svn: 185199
2013-06-28 19:21:11 +00:00
Benjamin Kramer 17381a0627 Use the multiple argument form of path::append.
llvm-svn: 185164
2013-06-28 16:25:46 +00:00
Timur Iskhodzhanov 1151031eb7 Fix a trivial typo, add a FIXME to have more test coverage for VTableBuilder
llvm-svn: 185159
2013-06-28 15:42:28 +00:00
Alexander Kornienko 1e80887d63 Use lexing mode based on FormatStyle.Standard.
Summary:
Some valid pre-C++11 constructs change meaning when lexed in C++11
mode, e.g.
#define x(_a) printf("foo"_a);
(example from http://llvm.org/bugs/show_bug.cgi?id=16342). "foo"_a is treated as
a user-defined string literal when parsed in C++11 mode.
In order to deal with this correctly, we need to set lexing mode according to
which standard the code conforms to. We already have a configuration value for
this (FormatStyle.Standard), which seems to be appropriate to use in this case
as well.

Reviewers: klimek

CC: cfe-commits, gribozavr

Differential Revision: http://llvm-reviews.chandlerc.com/D1028

llvm-svn: 185149
2013-06-28 12:51:24 +00:00
Richard Smith feb3e1a1e3 Lazily deserialize function template specializations. This fixes a cycle in
module deserialization / merging, and more laziness here is general goodness.

llvm-svn: 185132
2013-06-28 04:37:53 +00:00
Rafael Espindola 157f34bd31 Update for llvm::sys::fs::unique_file not creating directories.
llvm-svn: 185127
2013-06-28 03:49:04 +00:00
Eli Friedman c7ad5c4e29 Delete dead code.
llvm-svn: 185119
2013-06-28 00:23:34 +00:00
Eli Friedman cb9cd6c714 Switch Decl instantiation to DeclNodes.inc.
This replaces a long list of declarations for visitor functions with
a list generated from DeclNodes.inc.  Nothing really interesting came
out of it; we had comprehensive coverage anyway
(excluding FriendTemplateDecls).

llvm-svn: 185118
2013-06-27 23:21:55 +00:00
Richard Smith 8d7f11da50 Fix nested lifetime extension when a std::initializer_list member is
initialized during aggregate initialization of the surrounding structure.

llvm-svn: 185117
2013-06-27 22:54:33 +00:00
Peter Collingbourne 5c5e6179a0 Use the zero-argument DIBuilder::createNullPtrType in Clang.
Differential Revision: http://llvm-reviews.chandlerc.com/D1051

llvm-svn: 185115
2013-06-27 22:51:01 +00:00
John McCall 611d9b6659 Ensure that debugger calls to signature-less functions default to
passing arguments in the fixed style.

We have an abstraction for deciding this, but it's (1) deep in
IR-generation, (2) necessarily tied to exact argument lists, and
(3) triggered by unprototyped function types, which we can't
legitimately make in C++ mode.  So this solution, wherein Sema
rewrites the function type to an exact prototype but leaves the
variadic bit enabled so as to request x86-64-like platforms to
pass the extra variadic info, is very much a hack, but it's one
that works in practice on the platforms that LLDB will support
in the medium term --- the only place we know of where it's a
problem is instance methods in Windows, where variadic functions
are implicitly cdecl.  We may have a more abstracted base on which
to build a solution by then.

rdar://13731520

llvm-svn: 185112
2013-06-27 22:43:24 +00:00
Michael Gottesman a7b73d4534 Revert "Revert r184787: "Added arm_neon intrinsic tests.""
This reverts commit r184817. The failure Chandler was seeing was most likely the
bug that Bob Wilson fixed in r184870 (which was a bug caught by these tests).

To be safe, I just checked again on x86-64 mac os x/linux that this test passed
(which it did).

llvm-svn: 185110
2013-06-27 21:52:01 +00:00
Richard Smith 5a0ef78cd7 Remove bogus VarDecl::extendsLifetimeOfTemporary function and inline it into
its only caller with a FIXME explaining why it's bogus.

llvm-svn: 185109
2013-06-27 21:43:17 +00:00
Eli Friedman 9fb40ee966 Remove unnecessary check.
llvm-svn: 185108
2013-06-27 21:20:28 +00:00
Eli Friedman ba4b86d074 Delete dead code.
llvm-svn: 185103
2013-06-27 21:04:24 +00:00
Eli Friedman b998bff32b Delete dead code.
llvm-svn: 185101
2013-06-27 20:48:08 +00:00
Douglas Gregor f83b4ea8b6 Under -fms-extensions, only inject a friend tag name when we didn't see a tag with that name in an enclosing scope.
r177473 made us correctly consider only those declarations in the
enclosing namespace scope when looking for a friend declaration. Under
ms-extensions mode, where we do some level of friend injection, this
meant that we were introducing a new tag type into a different scope
than what Microsoft actually does. Address this by only doing the
friend injection when we didn't see any tag with that name in any
outer scope. Fixes <rdar://problem/14250378>.

llvm-svn: 185100
2013-06-27 20:42:30 +00:00
Eli Friedman 2850ba8e21 Simplify StmtIterator.
llvm-svn: 185098
2013-06-27 20:39:04 +00:00
Rafael Espindola 73c23a7182 Small improvements to createOutputFile.
* Use a single stat to find out if the file exists and if it is a regular file.
* Use early returns when possible.
* Add comments explaining why we have each check.

llvm-svn: 185091
2013-06-27 18:26:26 +00:00
Joey Gouly 7db275b947 Add support for passing v8fp options via -mfpu.
llvm-svn: 185075
2013-06-27 13:19:54 +00:00
Larisse Voufo 70bb43a115 A bit of program simplification from r185056
llvm-svn: 185058
2013-06-27 03:36:30 +00:00
Larisse Voufo 64cf3efd47 Fix a conversion to incomplete type bug -- The error message now specifically states that the type is incomplete and points to the forward declaration of the incomplete type.
llvm-svn: 185056
2013-06-27 01:50:25 +00:00
Eli Friedman aa205c431f Delete dead code.
llvm-svn: 185053
2013-06-27 01:36:36 +00:00
Eli Friedman 481673f367 Simplify code.
llvm-svn: 185042
2013-06-26 23:47:39 +00:00
Eli Friedman 437313c26f Handle all TemplateArguments in trivial TypeLocs.
Armed with a much better understanding of what
TemplateSpecializationTypeLoc::initializeArgLocs actually does, I now
understand that it's fine to just use an empty TemplateArgumentLocInfo
for Integral, Declaration, and NullPtr TemplateArguments.

Fixes PR14281. (The testcases are actually derived from libcxx_test in
deduction-crash.cpp because the original testcase was impossible to reduce.)

llvm-svn: 185038
2013-06-26 23:30:50 +00:00
Richard Smith 83e37bee44 PR16467: Teach -Wunsequenced that in C11 (unlike C++11), an assignment's
side-effect is not sequenced before its value computation. Also fix a
mishandling of ?: expressions where the condition is constant that was
exposed by the tests for this.

llvm-svn: 185035
2013-06-26 23:16:51 +00:00
David Majnemer 907d1766a8 Sema: Small cleanup around TemplateParamListContext
llvm-svn: 185029
2013-06-26 22:25:55 +00:00
Fariborz Jahanian e23f26bf94 ObjectiveC: diagnose duplicate declaration of
private ivars in class extensions and class
@implementation. // rdar://14278560

llvm-svn: 185025
2013-06-26 22:10:27 +00:00
Joerg Sonnenberger ffc6d49982 Don't use unnamed local enums as template arguments.
Fixes -Werror bootstrap.

llvm-svn: 185023
2013-06-26 21:31:47 +00:00
Aaron Ballman 2a6febc0c5 This patch fixes PR16395, when HandleMSProperty returns null due to a declaration with no name.
Patch thanks to Robert Wilhelm.

llvm-svn: 185022
2013-06-26 21:28:44 +00:00
David Majnemer 23e297ff0a AST: small cleanup to FriendObjectKind
llvm-svn: 185021
2013-06-26 21:28:41 +00:00
Rafael Espindola 8b96094420 Sync file handling logic in RewriterTestContext.h and RefactoringTest.cpp.
They are mostly duplicated and got out of sync during the PathV1 removal. We
should factor the code somewhere, but for now a FIXME will do.

llvm-svn: 185019
2013-06-26 21:02:22 +00:00
Eli Friedman 2782dacfbc Rewrite record layout for ms_struct structs.
The old implementation of ms_struct in RecordLayoutBuilder was a
complete mess: it depended on complicated conditionals which didn't
really reflect the underlying logic, and placed a burden on users of
the resulting RecordLayout. This commit rips out almost all of the
old code, and replaces it with simple checks in
RecordLayoutBuilder::LayoutBitField.

This commit also fixes <rdar://problem/14252115>, a bug where class
inheritance would cause us to lay out bitfields incorrectly.

llvm-svn: 185018
2013-06-26 20:50:34 +00:00
Aaron Ballman 6ce6309adf Updating the same comment in a different file, again for links. No functional change intended.
llvm-svn: 185014
2013-06-26 19:33:02 +00:00
Aaron Ballman fcd5b7e76e Updating a link in the comments; no functional change.
llvm-svn: 185013
2013-06-26 19:17:19 +00:00
Nico Weber cd5b2cfd60 Fix warning: commas at the end of enumerator lists are a C++11 extension [-Wc++11-extensions]
llvm-svn: 184972
2013-06-26 17:31:55 +00:00
Joey Gouly d077bc6a20 Add support for passing '-target armv8' through the Driver.
llvm-svn: 184970
2013-06-26 17:19:48 +00:00
Reid Kleckner 596b85cc23 Match MSVC's handling of commas during macro argument expansion
This allows clang to parse the type_traits header in Visual Studio 2012,
which is included widely in practice.

This is a rework of r163022 by João Matos.  The original patch broke
preprocessing of gtest headers, which this patch addresses.

Patch by Will Wilson!

llvm-svn: 184968
2013-06-26 17:16:08 +00:00
NAKAMURA Takumi 66b694490e clang/test/Driver/pth.c: Fix r184942, a regexp like "\\\\" is redundant here. Should be matched to single \ with '\\'.
llvm-svn: 184952
2013-06-26 15:03:20 +00:00
Rafael Espindola 641c6a182b Remove last use of PathV1.h from clang.
Instead of creating a temporary directory, remember the set of temporary files
we create.

llvm-svn: 184951
2013-06-26 15:01:50 +00:00
Rafael Espindola 32e3e7cefc We only create one file, no need to delete a directory.
llvm-svn: 184949
2013-06-26 14:33:23 +00:00
Rafael Espindola e6151cf586 Remove unused header.
llvm-svn: 184945
2013-06-26 13:49:47 +00:00
Rafael Espindola 8d593183b5 Try to fix this test on the msys buildbot.
llvm-svn: 184942
2013-06-26 13:02:16 +00:00
Aaron Ballman 29c427bec9 Quieting an MSVC warning about converting negative integer constants to unsigned types.
llvm-svn: 184941
2013-06-26 12:54:49 +00:00
Rafael Espindola b34c1fdfd4 Don't use PathV1.h in CIndexCodeCompletion.cpp.
llvm-svn: 184940
2013-06-26 12:54:23 +00:00
Rafael Espindola 839f6e8c6d Remove dead include.
llvm-svn: 184939
2013-06-26 12:49:58 +00:00
Rafael Espindola ccc6ea6c0b Don't use PathV1.h in cc1as_main.cpp.
llvm-svn: 184938
2013-06-26 12:48:34 +00:00
Rafael Espindola c888979879 Remove unused header.
llvm-svn: 184937
2013-06-26 12:46:06 +00:00
Rafael Espindola 5bfc690f42 Remove unused include.
llvm-svn: 184936
2013-06-26 12:44:19 +00:00
NAKAMURA Takumi 8e85e6a919 clang/test/lit.cfg: Tweak getClangBuiltinIncludeDir() not to expose dosish path separator on MSYS bash.exe, since r184774.
$ bin/clang.exe -print-file-name=include
    e:/path/to/build/bin\..\lib\clang\3.4\include

llvm-svn: 184930
2013-06-26 10:45:20 +00:00
Rafael Espindola a9b6429ec8 Remove unused include.
llvm-svn: 184922
2013-06-26 06:15:57 +00:00
Rafael Espindola 4168ee73a4 Remove more uses of llvm::sys::Path.
llvm-svn: 184921
2013-06-26 06:13:06 +00:00
Rafael Espindola 380988340c Remove PathV1.h from CompilerInvocation.cpp.
llvm-svn: 184918
2013-06-26 05:40:30 +00:00
Rafael Espindola 9678d27140 Use llvm::sys::fs::getMainExecutable.
llvm-svn: 184915
2013-06-26 05:03:40 +00:00
Rafael Espindola 399ab33a37 Remove PathV1.h from CompilerInstance.cpp.
llvm-svn: 184913
2013-06-26 04:32:59 +00:00
Rafael Espindola f5e5bc4703 Don't use PathV1.h in ASTUnit.cpp.
llvm-svn: 184912
2013-06-26 04:26:38 +00:00
Rafael Espindola 93079d589c Remove forward declarations of sys::Path.
llvm-svn: 184911
2013-06-26 04:23:08 +00:00
Rafael Espindola a96bd562c2 Remove the last use of PathWithStatus.
llvm-svn: 184909
2013-06-26 04:12:57 +00:00
Rafael Espindola bc4aa5547e Use llvm::sys::fs::unique_file.
llvm-svn: 184908
2013-06-26 04:02:37 +00:00
Rafael Espindola bc7d949b32 Remove some uses of llvm::sys::Path.
llvm-svn: 184907
2013-06-26 03:52:38 +00:00
Rafael Espindola 76565f08f7 Remove PathV1.h use from WindowsToolChain.cpp.
llvm-svn: 184906
2013-06-26 03:39:10 +00:00
Nico Weber f579ab302a Fix a comment.
llvm-svn: 184905
2013-06-26 02:42:46 +00:00
Richard Smith 68ad0e7154 Lazily deserialize the "first' friend declaration when deserializing a class
declaration. This PCH a little lazier, and breaks a deserialization cycle that
causes crashes with modules enabled.

llvm-svn: 184904
2013-06-26 02:41:25 +00:00
Faisal Vali 18d3598ed0 Fix PCH bug with member templates of local classes in nontemplate functions.
As noted by Richard in the post:
http://lists.cs.uiuc.edu/pipermail/cfe-commits/Week-of-Mon-20130624/082605.html, the following code should not add an entry
into PendingLocalImplicitInstantiations, since local instantiations
should only occur within the context of other instantiations:

int foo(double y) {
   struct Lambda {
      template<class T> T operator()(T t) const { return t; };
   } lambda;
   return lambda(y);
}

Hence the attached code does the following:
  1) In MarkFunctionReferenced, check if ActiveInstantiations.size() 
      is non-zero before adding to PendingLocalImplicitInstantiations.
  2) In InstantiateFunctionDefinition, we swap out/in
      PendingLocalImplicitInstantiations so that only those 
      pending local instantiations that are added during the instantiation
      of the current function are instantiated recursively.

llvm-svn: 184903
2013-06-26 02:34:24 +00:00
Rafael Espindola 358256c77a Remove PathV1.h usage from ToolChains.cpp.
llvm-svn: 184902
2013-06-26 02:13:00 +00:00
Nico Weber 9096fc0dab Run clang-format on lib/Format code after r184894. No other changes.
llvm-svn: 184896
2013-06-26 00:30:14 +00:00
Nico Weber 8084cffd0b Formatter: Don't put a space after parameter-naming block comments.
Before: f(a, b, /*doFoo=*/ false);
Now: f(a, b, /*doFoo=*/false);

This style is a lot more common:
$ ack -H '=\*\/\w' lib | wc -l 
    1281
$ ack -H '=\*\/ \w' lib | wc -l 
      70

llvm-svn: 184894
2013-06-26 00:15:19 +00:00
Nick Lewycky 7a2a4799d6 Don't check for triviality on fields of templated records. We can't know the
answer until after instantiation. Fixes PR16061!

llvm-svn: 184890
2013-06-25 23:22:23 +00:00
David Majnemer 502b0ed264 Implement DR136
Friend declarations that specify a default argument must be a definition
and the only declaration in the translation unit.

llvm-svn: 184889
2013-06-25 23:09:30 +00:00
Richard Smith 71bdbb0101 Make this test properly test both things it's trying to test.
llvm-svn: 184887
2013-06-25 22:37:05 +00:00
Richard Smith ffe9da0136 Missing test update from r184884.
llvm-svn: 184885
2013-06-25 22:22:42 +00:00
Richard Smith b80d54049b PR8302: Check for shadowing a template parameter when declaring a template
template parameter.

llvm-svn: 184884
2013-06-25 22:21:36 +00:00
Matt Beaumont-Gay 35779955b3 Don't try to get the layout of an invalid decl in getDeclAlign.
When the decl that we're getting alignment for is a FieldDecl, and the field's
parent record is invalid, skip the actual field alignment calculation (and
return 1-byte alignment in the general case).

Also, assert in in getASTRecordLayout that the decl is valid. This was
inspired by PR16292; see also r184581 and r184751.

llvm-svn: 184883
2013-06-25 22:19:15 +00:00
David Majnemer ba8f17ac10 Implement DR21
A default template-argument shall not be specified in a friend template
declaration.

Interestingly, we properly handled default template arguments on friend
class members but not on just friend classes.

llvm-svn: 184882
2013-06-25 22:08:55 +00:00
Richard Smith ef87be3a62 Fix null pointer dereference if we redeclare an unprototyped function. Patch by
WenHan Gu!

llvm-svn: 184875
2013-06-25 20:34:17 +00:00
Nico Weber 0f987a6fb3 Fix a comment.
llvm-svn: 184873
2013-06-25 19:25:12 +00:00
Richard Smith e83b1d3e7a More of N3652: don't add an implicit 'const' to 'constexpr' member functions when checking for overloads in C++1y.
llvm-svn: 184865
2013-06-25 18:46:26 +00:00
Fariborz Jahanian f030d16c92 Objective-C: Warn when IBOutletCollection property
is declared to have 'assign' attribute.
// rdar://14212998

llvm-svn: 184863
2013-06-25 17:34:50 +00:00
Eli Bendersky 099888eccd Remove misplaced comment
llvm-svn: 184862
2013-06-25 17:07:56 +00:00
Nick Lewycky 39dc9f8be4 In tooling, reenable freeing of datastructures in codegen, just as we do for
the frontend. We don't want to respect the -disable-free flag here.

llvm-svn: 184861
2013-06-25 17:01:21 +00:00
Rafael Espindola 355670dbc6 Use simpler version of llvm::sys::fs::exists.
llvm-svn: 184857
2013-06-25 15:14:22 +00:00
Rafael Espindola 00eaafd953 Don't use PathV1.h in Tools.cpp.
llvm-svn: 184856
2013-06-25 15:03:59 +00:00
Rafael Espindola 54bbaad459 Use the simpler version of llvm::sys::fs::exists.
llvm-svn: 184855
2013-06-25 14:48:00 +00:00
Rafael Espindola 04b3fc4981 Use the new llvm::sys::EnvPathSeparator.
llvm-svn: 184851
2013-06-25 14:29:51 +00:00
Chandler Carruth 6aa92ad762 Fix a couple of PPC predefined macros that I spotted while driving by
this code. These aren't technically standard predefines for the platform
but apparantly lots of folks use them as they show up within LLVM's own
codebase. ;] This may even fix some self host issues w/ the JIT!!!

llvm-svn: 184830
2013-06-25 11:13:47 +00:00
Rafael Espindola 37d229de2f Add r184803 back now that the bug in unique_file has been fixed.
Original message:

Use the new PathV2 instead of implementing the logic in clang.

llvm-svn: 184825
2013-06-25 04:26:55 +00:00
Rafael Espindola e7f89915b4 Revert "Use the new PathV2 instead of implementing the logic in clang."
This reverts commit 184803 while I debug the failures on the bots.

llvm-svn: 184818
2013-06-25 02:35:32 +00:00
Chandler Carruth 3bab90a400 Revert r184787: "Added arm_neon intrinsic tests."
This test doesn't actually pass when run with llvm-lit for me or in
a bot that actually always tries to run it.

llvm-svn: 184817
2013-06-25 02:18:39 +00:00
Jordan Rose b8e286548c [analyzer] Handle zeroing CXXConstructExprs.
Re-apply r184511, reverted in r184561, with the trivial default constructor
fast path removed -- it turned out not to be necessary here.

Certain expressions can cause a constructor invocation to zero-initialize
its object even if the constructor itself does no initialization. The
analyzer now handles that before evaluating the call to the constructor,
using the same "default binding" mechanism that calloc() uses, rather
than simply ignoring the zero-initialization flag.

<rdar://problem/14212563>

llvm-svn: 184815
2013-06-25 01:56:08 +00:00
Jordan Rose b3b976f061 [analyzer] Don't initialize virtual base classes more than once.
In order to make sure virtual base classes are always initialized once,
the AST contains initializers for the base class in /all/ of its
descendents, not just the immediate descendents. However, at runtime,
the most-derived object is responsible for initializing all the virtual
base classes; all the other initializers will be ignored.

The analyzer now checks to see if it's being called from another base
constructor, and if so does not perform virtual base initialization.

<rdar://problem/14236851>

llvm-svn: 184814
2013-06-25 01:55:59 +00:00
Eli Friedman 5a8738ffe0 Fix regression from r184810.
Specifically, CallExpr::getCalleeDecl() can return null, so make sure to
handle that correctly.

llvm-svn: 184813
2013-06-25 01:55:41 +00:00
Nick Lewycky d3f3e4f04c Make -vectorize-... proper cc1 flags instead of abusing -backend-option. Fixes
usage of clang as a library.

llvm-svn: 184812
2013-06-25 01:49:44 +00:00
Richard Smith 5de91b58d0 Fix deserializing of class template partial specializations. Assign sequence
numbers as we deserialize class template partial specializations. We can't
assume that the old sequence numbers will work.

The sequence numbers are still deterministic, but are now a lot less
predictable for class template partial specializations in modules/PCH.

llvm-svn: 184811
2013-06-25 01:25:15 +00:00
Eli Friedman 0423b76be1 Fix noexcept for delete expressions.
Using "delete" on a pointer to an incomplete type can't throw.
While I'm here, clean up the signature of the canCalleeThrow() helper.

llvm-svn: 184810
2013-06-25 01:24:22 +00:00
Rafael Espindola e3d0c4a9bd Remove PathV1.h from Driver.cpp.
llvm-svn: 184807
2013-06-25 01:11:59 +00:00
Nico Weber ec9e41076b Formatter/ObjC: Correctly format casts in objc message send expressions.
llvm-svn: 184804
2013-06-25 00:55:57 +00:00
Rafael Espindola 503b726b43 Use the new PathV2 instead of implementing the logic in clang.
llvm-svn: 184803
2013-06-25 00:55:28 +00:00
Eli Friedman 96dbf6f082 Delete a couple dead checks.
Use castAs<> where appropriate. Don't check conditionals which are
always true. Delete a bit of dead code. Reindent a bunch of code which
is no longer guarded by an if statement.

llvm-svn: 184801
2013-06-25 00:46:32 +00:00
Nico Weber e8d78249ad Formatter/Objc: Add a test that checks that @import is formatted correctly.
llvm-svn: 184796
2013-06-25 00:25:40 +00:00
Eli Friedman f6e1fd7567 Delete dead code.
llvm-svn: 184795
2013-06-25 00:25:19 +00:00
Eric Christopher 89d2b74245 Reorder builds based by ordering.
llvm-svn: 184794
2013-06-25 00:21:29 +00:00
Richard Smith bf78e646e1 Check for matching template-parameter-lists when merging template declarations.
llvm-svn: 184791
2013-06-24 22:51:00 +00:00
Rafael Espindola 49ddb8675b Accept both / and \\ to fix the windows bots.
llvm-svn: 184790
2013-06-24 22:07:15 +00:00
Ted Kremenek 009d61dd16 Tweak -Wdeprecated-objc-pointer-introspection to have a subgroup for results of using -performSelectorXXX.
-performSelector: and friends return a value that is boxed as an Objective-C
pointer.  Sometimes it is an Objective-C pointer, sometimes it isn't.
Some clients may wish to silence this warning based on calling
this method.

Fixes <rdar://problem/14147304>

llvm-svn: 184789
2013-06-24 21:35:39 +00:00
Michael Gottesman a35103a8cf Added arm_neon intrinsic tests.
This is a large test and thus it will only run if you pass in --param
run_long_tests=trueto LIT. This is intended so that this test can run on
buildbots and not when one runs make check.

llvm-svn: 184787
2013-06-24 21:25:42 +00:00
Michael Gottesman 1169a52c83 [NeonIntrinsicTestEmitter] vld1/vst1 do not require the :64 hint.
llvm-svn: 184786
2013-06-24 21:25:39 +00:00
Michael Gottesman c6b5e56c19 [NeonIntrinsicTestEmitter] Fix incorrect FileCheck pattern where we were expecting a ',' prefix to alignment hints.
llvm-svn: 184785
2013-06-24 21:25:37 +00:00
Michael Gottesman d95c49a91c [NeonIntrinsicTestEmitter] Add requirement to arm neon intrinsic tests for the feature long_tests.
This will prevent the tests from running on normal make check. You will need to
actually pass in --param run_long_tests=true to LIT in order to run these.

llvm-svn: 184784
2013-06-24 21:25:34 +00:00
Argyrios Kyrtzidis 48d88de2af [libclang/codecompletion] Make sure the top-level decl hash takes into account ImportDecls.
The top-level hash is used to determine if we need to update the global code-completion results.
ImportDecls did not affect the hash so a newly introduced ImportDecl would not trigger an update of the global results.

rdar://14202797

llvm-svn: 184782
2013-06-24 21:19:12 +00:00
Eli Friedman d0ee1294c1 Change mangling of objects inside block literals.
This changes the mangling of local static variables/etc. inside blocks
to do something simple and sane.  This avoids depending on the way we mangle
blocks, which isn't really appropriate here.

John, please take a look at this to make sure the mangling I chose is sane.

Fixes <rdar://problem/14074423>.

llvm-svn: 184780
2013-06-24 20:24:19 +00:00
Reid Kleckner 91960de0fe Fix "funciton" typo from r184763
llvm-svn: 184779
2013-06-24 20:08:40 +00:00