Commit Graph

51890 Commits

Author SHA1 Message Date
Aaron Ballman 9e3d7bd20b Partial revert of r206229, to get the build bots green again.
llvm-svn: 206237
2014-04-15 01:19:35 +00:00
Richard Trieu e729d9b598 Fix typo from r206232
llvm-svn: 206234
2014-04-15 01:06:38 +00:00
Richard Trieu e9fa266cba Fix a bad interaction between -Wtautological-overlap-compare and delayed
diagnostics which caused delayed diagnostics on dead paths to be emitted.

llvm-svn: 206232
2014-04-15 00:57:50 +00:00
Justin Bogner 81ab90f7ed CodeGen: Handle CapturedStmt in instrumentation based profiling
CapturedStmt was being ignored by instrumentation based profiling, and
its counters attributed to the containing function. Instead, we need
to treat this as a top level entity, like we do with blocks.

llvm-svn: 206231
2014-04-15 00:50:54 +00:00
Aaron Ballman ef5d94caf0 Fixing a typo, updating the diagnostic wording and logic based on post-commit review feedback. Amends r206186.
llvm-svn: 206229
2014-04-15 00:36:39 +00:00
Quentin Colombet d9f262098f [Driver][ARM64] Make sure the default CPU is passed to the assembler.
<rdar://problem/16573920>

llvm-svn: 206227
2014-04-15 00:27:35 +00:00
Reid Kleckner f80abc060c Fix warning in ms-x86-vtordisp test case
llvm-svn: 206224
2014-04-14 23:49:17 +00:00
Richard Smith a1a808c541 Ensure we evaluate VLA bounds if a variably-modified type is used as the
argument to __builtin_va_arg. Patch by Rahul Jain, some test massaging and
IR emission order changes by me.

llvm-svn: 206223
2014-04-14 23:47:48 +00:00
Nick Lewycky 646621e6a8 Make sure these two files are distinct, or else the modules system may, on certain file systems, treat them as if they were the same file.
llvm-svn: 206221
2014-04-14 22:30:21 +00:00
Ben Langmuir 4f5212a60e Add module name and module map file to -module-file-info
llvm-svn: 206217
2014-04-14 22:12:44 +00:00
Richard Smith 82dce550c8 PR19415: Converting 'constexpr' to 'const' in a non-static data member can fail
if the member is already 'const'. Don't assert in that case.

llvm-svn: 206205
2014-04-14 21:00:40 +00:00
Richard Smith ac9c9a006f PR19411: Walk lexical parents, not semantic parents, when determining whether a
DeclContext is (lexically) within a C language linkage specification.

llvm-svn: 206204
2014-04-14 20:23:58 +00:00
Ben Langmuir 6e63f50b2a Fix find command in test/Modules/prune.m broken by r206201
llvm-svn: 206203
2014-04-14 18:50:28 +00:00
Ben Langmuir ebcc8c43bd Add clang:: qualifier back to Module
Apparently this was required by some compilers.

llvm-svn: 206202
2014-04-14 18:21:04 +00:00
Ben Langmuir beee15e721 Allow multiple modules with the same name to coexist in the module cache
To differentiate between two modules with the same name, we will
consider the path the module map file that they are defined by* part of
the ‘key’ for looking up the precompiled module (pcm file).
Specifically, this patch renames the precompiled module (pcm) files from
  cache-path/<module hash>/Foo.pcm
to
  cache-path/<module hash>/Foo-<hash of module map path>.pcm

In addition, I’ve taught the ASTReader to re-resolve the names of
imported modules during module loading so that if the header search
context changes between when a module was originally built and when it
is loaded we can rebuild it if necessary.  For example, if module A
imports module B

first time:
clang -I /path/to/A -I /path/to/B ...

second time:
clang -I /path/to/A -I /different/path/to/B ...

will now rebuild A as expected.

* in the case of inferred modules, we use the module map file that
allowed the inference, not the __inferred_module.map file, since the
inferred file path is the same for every inferred module.

llvm-svn: 206201
2014-04-14 18:00:01 +00:00
Aaron Ballman 95d570335c Properly diagnose Microsoft __declspec attributes which have optional argument lists when the arguments are elided. eg)
__declspec(deprecated()) // error
__declspec(deprecated) // OK
__declspec(deprecated("")) // OK

llvm-svn: 206191
2014-04-14 16:44:26 +00:00
Justin Bogner da4e650e5c OnDiskHashTable: Make the iterable version separate.
Currently the on disk hash table's key_iterator and data_iterator make
the assumption that the table data starts exactly four bytes after the
base of the table. This happens to be true for all of the tables we
currently iterate over, but not for all of the OnDiskHashTables we
currently use. For example, key_ and data_iterator would iterate over
meaningless data if they were used on the hash tables in PTHLexer.

We make the API safer by breaking this into two types. One doesn't
have the iterators, and the other must be told where the payload
starts.

llvm-svn: 206189
2014-04-14 16:34:29 +00:00
Justin Bogner 8c1f0818c0 OnDiskHashTable: clang-format and consistent naming
No functional change. Style cleanups in OnDiskChainedHashTable in
preparation for some other changes here.

llvm-svn: 206188
2014-04-14 16:34:19 +00:00
Aaron Ballman 35f9421c55 Properly diagnose standard C++ attributes which have optional argument lists when the arguments are elided. eg)
[[deprecated()]] // error
[[deprecated]] // OK
[[deprecated("")]] // OK
[[gnu::deprecated()]] // OK

llvm-svn: 206186
2014-04-14 16:03:22 +00:00
Samuel Benzaquen f434c4fa3f Add support for named values in the parser.
Summary: Add support for named values in the parser.

Reviewers: pcc

CC: cfe-commits, klimek

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

llvm-svn: 206176
2014-04-14 13:51:21 +00:00
Daniel Jasper 866468ae4d clang-format: Fix regression caused by r206165.
llvm-svn: 206173
2014-04-14 13:15:29 +00:00
Daniel Jasper 72ab43b28b clang-format: Fix incorrect &&-detection in macros.
Before:
  #define A(a, b) (a &&b)

After:
  #define A(a, b) (a && b)

This fixes llvm.org/PR19343.

llvm-svn: 206165
2014-04-14 12:50:02 +00:00
Daniel Jasper db8804b32b clang-format: Improve array literal formatting fix in r206161.
Instead of choosing based on the number of elements, simply respect the
user's choice of where to wrap array literals.

llvm-svn: 206162
2014-04-14 12:11:07 +00:00
Daniel Jasper af4fee2636 clang-format: With ColumnLimit=0, keep short array literals on a line.
Before:
    NSArray* a = [[NSArray alloc] initWithArray:@[
                                                   @"a"
                                                ]
                                      copyItems:YES];

After:
    NSArray* a = [[NSArray alloc] initWithArray:@[ @"a" ]
                                      copyItems:YES];

This fixed llvm.org/PR19080.

llvm-svn: 206161
2014-04-14 12:05:05 +00:00
Daniel Jasper c0d606a584 clang-format: Don't allow hanging indentation for operators on new lines
Before:
  if (aaaaaaaa && bbbbbbbbbbbbbbb // need to wrap
                  == cccccccccccccc) ...

After:
  if (aaaaaaaa
      && bbbbbbbbbbbbbbb // need to wrap
         == cccccccccccccc) ...

The same rule has already be implemented for BreakBeforeBinaryOperators
set to false in r205527.

llvm-svn: 206159
2014-04-14 11:08:45 +00:00
Manuel Klimek 68b03049e0 Format code around VCS conflict markers.
Now correctly formats:
  {
    int a;
    void f() {
      callme(some(parameter1,
  <<<<<<< text by the vcs
                  parameter2),
  ||||||| text by the vcs
                  parameter2),
             parameter3,
  ======= text by the vcs
                  parameter2, parameter3),
  >>>>>>> text by the vcs
             otherparameter);
    }
  }

llvm-svn: 206157
2014-04-14 09:14:11 +00:00
Daniel Jasper 35ec2b244a clang-format: Improve formatting of annotated variables.
Before:
  bool aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa GUARDED_BY(
      aaaaaaaaaaaa) = aaaaaaaa::aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa;

After:
  bool aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa GUARDED_BY(aaaaaaaaaaaa) =
      aaaaaaaa::aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa;

llvm-svn: 206155
2014-04-14 08:15:20 +00:00
Serge Pavlov 6a7ffbed8a Improve error recovery around colon.
Parse of nested name spacifier is modified so that it properly recovers
if colon is mistyped as double colon in case statement.
This patch fixes PR15133.

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

llvm-svn: 206135
2014-04-13 16:52:03 +00:00
Logan Chien af24ad940d Fix diagnostics for C-style cast to function type.
If the C-style type cast is applied to the overloaded
function and the destination type is function type,
then Clang will crash with assertion failure.  For example,

    void foo(int);
    void foo(int, int);
    void bar() {
        typedef void (ft)(int);
        ft p = (ft)foo;
    }

In this case, the overloaded function foo will be cast to
a function type, which should be considered as an error.
But, unfortunately, since the function resolution is using
canonical type, the matched function will be returned, and
result in SEGV.

This patch fixes this issue by removing the assertion and
add some error diagnostics as the one in static_cast.

llvm-svn: 206133
2014-04-13 16:08:24 +00:00
David Majnemer adc45bb77b MS ABI: Bitfields FielDecls only align if they allocate
Don't consider a __declspec(align) on a bitfield's declaration if it didn't
allocate any underlying storage.

This fixes PR19414.

llvm-svn: 206132
2014-04-13 08:15:50 +00:00
Richard Smith 9e2f0a4f62 PR19339: Disambiguate lambdas with init-captures from designated initializers
properly.

llvm-svn: 206128
2014-04-13 04:31:48 +00:00
David Majnemer 81c55b6255 [-fms-extensions] Add tests for __FUNCDNAME__
__FUNCDNAME__ was introduced way back in r194181 but I forgot to add
these tests.

llvm-svn: 206125
2014-04-13 02:29:55 +00:00
David Majnemer d43388cc04 MS ABI: #pragma vtordisp(0) only disables new vtordisps
Previously, it was believed that #pragma vtordisp(0) would prohibit the
generation of any and all vtordisps.

In actuality, it only disables the generation of additional vtordisps.

This fixes PR19413.

llvm-svn: 206124
2014-04-13 02:27:32 +00:00
Richard Smith c7f9bb1757 Tests for DR501-525.
llvm-svn: 206123
2014-04-13 00:40:32 +00:00
Benjamin Kramer 5c323b833b Replace llvm::array_endof with C++11's std::end.
No functionality change.

llvm-svn: 206111
2014-04-12 15:42:48 +00:00
Hal Finkel 834da75d44 Fix test/Modules/cxx-irgen.cpp for PPC64
Target ABI code might add signext to the return types.

llvm-svn: 206107
2014-04-12 11:50:34 +00:00
Yunzhong Gao a8c45c9f88 Add description about the __is_identifier() macro
llvm-svn: 206099
2014-04-12 02:25:32 +00:00
Justin Bogner b1966291de CodeGen: Test instrumentation based profiling of templates
Make sure that templates are handled correctly by profile
instrumentation.

llvm-svn: 206091
2014-04-12 00:54:06 +00:00
Warren Hunt 4f7efb7a8f [MS-ABI] Fix warning introduced in r206087
No functional change.

llvm-svn: 206090
2014-04-12 00:20:50 +00:00
Adrian Prantl 0ce2b87507 Follow-up to r205999: Emit an artificial location (valid scope, line 0)
for CXXGlobalInit/Dtor helper functions.
This makes _GLOBAL__I_a regain its DW_AT_high/low_pc in the debug info.

Thanks to echristo for catching this!

llvm-svn: 206088
2014-04-11 23:45:01 +00:00
Warren Hunt 0e70d916f2 [MS-ABI] Fixed alias-avoidance padding in the presence of vtordisps
If a vtordisp exists between two bases, then there is no need for 
additional alias avoidance padding.  Test case included.

llvm-svn: 206087
2014-04-11 23:33:35 +00:00
Justin Bogner 191ec63b71 CodeGen: Fix handling of C++11 lambdas in profiling
Until now we were generating duplicate counters for lambdas: one set
in the function where the lambda was declared and another for the
lambda itself. Instead, we should skip over the bodies of lambdas in
their containing contexts.

llvm-svn: 206081
2014-04-11 23:06:35 +00:00
Warren Hunt 73f4398782 [MS-ABI] Update to vtordisp computation
A portion of the vtordisp computation that was previously unguarded by a 
test for the declaration of user defined constructors/destructors was 
erroniously adding vtordisps to things that shouldn't have them.  This 
patch correctly guards that codepath.  In addition, it updates the 
comments to make them more clear.  Test case is included.

llvm-svn: 206077
2014-04-11 22:05:28 +00:00
Yunzhong Gao ef309f4326 Add a test to distinguish between reserved tokens and normal identifiers.
The -fms-extensions option affects a number of subtle front-end C/C++
behaviors, and it would be useful to be able to distinguish MS keywords
from regular identifiers in the ms-extensions mode even if the triple
does not define a Windows target. It should make life easier if anyone
needs to port their Windows codes to elsewhere.

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

llvm-svn: 206069
2014-04-11 20:55:19 +00:00
Bob Wilson d893142595 [PGO] Change MapRegionCounters to be a RecursiveASTVisitor.
This avoids the overhead of specifying all the traversal code when using
ConstStmtVisitor and makes it a lot easier to maintain this.

llvm-svn: 206039
2014-04-11 17:16:13 +00:00
Reid Kleckner cd612aba55 Simplify RecordLayoutBuilder with getAsCXXRecordDecl()
No functionality change.

llvm-svn: 206038
2014-04-11 16:57:42 +00:00
Manuel Klimek 1fcbe675fa Correctly handle escaped newlines when the next token starts without a space.
We will need this to correctly handle conflict markers inside macro
definitions.

llvm-svn: 206029
2014-04-11 12:27:47 +00:00
Daniel Jasper 962b38e4f3 Add -fmodules-strict-decluse to check that all headers are in modules
Review: http://reviews.llvm.org/D3335
llvm-svn: 206027
2014-04-11 11:47:45 +00:00
Justin Bogner 53c55d993f CodeGen: Handle binary conditional operators in PGO instrumentation
This treats binary conditional operators in the same way as ternary
conditional operators for instrumentation based profiling.

llvm-svn: 206021
2014-04-11 06:10:10 +00:00
Adrian Prantl 22e66b434a Cleanup: Add default arguments to CodeGenFunction::StartFunction.
Thanks dblaikie for the suggestion!

llvm-svn: 206012
2014-04-11 01:13:04 +00:00