Commit Graph

35687 Commits

Author SHA1 Message Date
Hao Liu 9f9492b657 [ARM64]Fix the bug right shift uint64_t by 64 generates incorrect result.
llvm-svn: 208761
2014-05-14 08:59:30 +00:00
NAKAMURA Takumi 5182b5ae0c Sema::FindAllocationFunctions(): Fix \param. [-Wdocumentation]
llvm-svn: 208758
2014-05-14 08:07:56 +00:00
John McCall 2976f8b011 Create a redeclaration when an elaborated type specifier
resolves to an existing declaration if there are attributes
present.

This gives us something to apply the attributes to.

llvm-svn: 208756
2014-05-14 07:54:17 +00:00
David Blaikie aabde05da1 DebugInfo: Avoid creating DILexicalScopeFiles when the filename in the current scope has not changed.
This looks like the right way for this check to work, but there is
another semi-obvious bug, I would think: why is CurLoc not zero'd out
between functions? The possibility for it to bleed between them seems
problematic. (& indeed I caused tests to fail when I fixed this a
different way, by setting CurLoc to SourceLocation() and the end of
EmitFunctionEnd... )

The changes to debug-info-blocks.m are due to a mismatch between the
source manager's file naming and CGDebugInfo's default handling when no
-main-file-name is specified. This actually reveals somewhat of a bug in
the debug info when using source files from standard in, too. See the
comment in CGDebugInfo::CreateCompileUnit for more details.

llvm-svn: 208742
2014-05-14 00:29:00 +00:00
Reid Kleckner 40ca913727 Push record return type classification into CGCXXABI
In the Microsoft C++ ABI, instance methods always return records
indirectly via the second hidden parameter.  This was implemented in
X86_32ABIInfo, but not WinX86_64ABIInfo.

Rather than exposing a handful of boolean methods in the CGCXXABI
interface, we can expose a single method that applies C++ ABI return
value classification rules.

llvm-svn: 208733
2014-05-13 22:05:45 +00:00
Richard Smith d6f9e73527 PR19729: Delete a bunch of bogus code in Sema::FindAllocationOverload. This
caused us to perform copy-initialization for the parameters of an allocation
function called by a new-expression multiple times, resulting in us rejecting
allocations that passed non-copyable parameters (and much worse things in
MSVC compat mode, where we potentially called this function multiple times).

llvm-svn: 208724
2014-05-13 19:56:21 +00:00
Joerg Sonnenberger cc1edb5a45 Add __ARM_DWARF_EH__ to signify the use of Itanium ABI for unwind
instructions.

llvm-svn: 208719
2014-05-13 18:58:36 +00:00
Rafael Espindola ee076a27ce Update for llvm API change.
llvm-svn: 208717
2014-05-13 18:45:53 +00:00
Aaron Ballman 8063c3b80c Fix the AST printer for attributed statements so that it does not print duplicate attribute introducers. Eg) [[clang::fallthrough]] instead of [[[[clang::fallthrough]]]]
llvm-svn: 208706
2014-05-13 16:12:14 +00:00
Aaron Ballman f3d9b09dea No longer triggering a checked iterator assert on Windows when using std::copy while deserializing attributed statements with more than one attribute.
llvm-svn: 208702
2014-05-13 14:55:01 +00:00
Timur Iskhodzhanov a27b044166 Define the InterlockedCompareExchange64 intrinsic on 32-bits too
llvm-svn: 208699
2014-05-13 13:59:05 +00:00
Joerg Sonnenberger daa13aa4c8 Drop AST's version of ARMCXXABI, it doesn't differ from the Itanium base
class.

llvm-svn: 208687
2014-05-13 11:20:16 +00:00
Nico Weber ad8e36c41a Support -masm= flag for x86 targets.
`clang -S -o - file.c -masm=att` will write assembly to stdout in at&t syntax
(the default), `-masm=intel` will instead output intel style asm.

llvm-svn: 208683
2014-05-13 11:11:24 +00:00
Daniel Jasper 0a1e5ace26 clang-format: Don't break in the middle of ">>".
Before:
  zzzzzzzzzz = bbbbbbbbbbbbbbbbb >
               > aaaaaaaaaaaaaaaa(aaaaaaaaaaaaaaaaaaaaaaaaaa);

After:
  zzzzzzzzzz
      = bbbbbbbbbbbbbbbbb
        >> aaaaaaaaaaaaaaaa(aaaaaaaaaaaaaaaaaaaaaaaaaa);

This fixes llvm.org/PR19731.

llvm-svn: 208672
2014-05-13 08:01:47 +00:00
David Majnemer aeb55c9ded MS ABI: Tighten RTTI mangling
r208661 contained WIP code, commit the *actual* manglings.

llvm-svn: 208668
2014-05-13 06:57:43 +00:00
Filipe Cabecinhas 5d289b48b1 Patched clang to emit x86 blends as shufflevectors.
Summary:
Most of the clang header patch by Simon Pilgrim @ SCEE.
Also fixed (or added) clang tests for these intrinsics.

LLVM tests to make sure we get the blend instruction out of these
shufflevectors are at http://reviews.llvm.org/D3600

Reviewers: eli.friedman, craig.topper, rafael

Subscribers: cfe-commits

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

llvm-svn: 208664
2014-05-13 02:37:02 +00:00
Richard Smith b321ecbdcf Refactor to avoid explicitly listing all the different flavours of redeclarable
declarations, and duplicating code between them.

llvm-svn: 208662
2014-05-13 01:15:00 +00:00
David Majnemer a96b7ee0bc MS ABI: Preliminary RTTI mangling
Implement what we currently believe is the mangling scheme for RTTI
data.  Tests will be added in a later commit which actually generate
RTTI data.

llvm-svn: 208661
2014-05-13 00:44:44 +00:00
Richard Smith cddb255b5d Refactor and fix a latent bug (found by inspection) where an external AST
source that provides a declaration from a hidden module would not have the
visibility of the produced definition checked. This might matter if an
external source chose to import a new module to provide an extra definition,
but is not observable with our current external sources.

llvm-svn: 208659
2014-05-13 00:34:43 +00:00
Alexey Samsonov 6424e02fb2 [ASan] Fixup for r208610: link in asan_cxx library on Windows
llvm-svn: 208625
2014-05-12 20:20:20 +00:00
Alexey Samsonov b01f936ffe [ASan] Split static ASan runtime in two parts: asan and asan_cxx.
asan_cxx containts replacements for new/delete operators, and should
only be linked in C++ mode. We plan to start building this part
with exception support to make new more standard-compliant.

See https://code.google.com/p/address-sanitizer/issues/detail?id=295
for more details.

llvm-svn: 208610
2014-05-12 18:39:51 +00:00
Daniel Jasper fb4333b093 clang-format: [JS] Basic support for escape sequences in regex literals.
Before:
  var regex = /\\/ g; // This isn't even recognized as regex.

After:
  var regex = /\\/g; // It now is.

llvm-svn: 208539
2014-05-12 11:29:50 +00:00
Simon Atanasyan 60280b4e65 [Driver] Do not lose already detected set of toolchain's multilibs while
iterating over different library path suffixes and different library versions.

To find the most appropriate library for the given command line flags we
iterate over a set of disk paths. Before probe each path the already
detected set of multilibs are cleared. If the set of paths contains
existing paths which do not satisfy command line flags or do not contain
necessary libraries and object files at all we might lose found multilibs.

The patch updates variables which hold detected multilibs if we really find
a new multilib matches command line flags.

The patch reviewed by Jon Roelofs.

llvm-svn: 208523
2014-05-12 07:37:51 +00:00
Craig Topper 36250ad632 [C++11] Use 'nullptr'. AST edition.
llvm-svn: 208517
2014-05-12 05:36:57 +00:00
Alexey Bataev 4ca40eda36 [OPENMP] Removed unnecessary enums from OpenMP constructs
llvm-svn: 208516
2014-05-12 04:23:46 +00:00
Alp Toker c7dc0621a7 Make DiagnosticsEngine non-copyable
Also provide an out-of-line dtor for CompilerInvocation.

Cleanup work that may help reduce header inclusion for IntrusiveRefCntPtr.

llvm-svn: 208512
2014-05-11 22:10:52 +00:00
Richard Smith a90ee35a8e PR19713: Don't warn on unused static inline functions, even if the 'inline' was
implied by 'constexpr'.

llvm-svn: 208511
2014-05-11 21:25:24 +00:00
Nico Weber a04d5f8d8f Driver: Don't leak the -Xarch argument when its use is incorrect.
(LLVM's lib/Option looks like it might appreciate being hit with the
std::unique_ptr stick.)

llvm-svn: 208505
2014-05-11 17:27:13 +00:00
Alp Toker 1b13dab608 Parameter/argument terminology fixes
llvm-svn: 208499
2014-05-11 16:06:11 +00:00
Alp Toker 4284c6e7a4 Consolidate single void paramter checking
Also correct argument/parameter terminology.

No change in functionality.

llvm-svn: 208498
2014-05-11 16:05:55 +00:00
Benjamin Kramer b7ee689f91 Silence warning in Release builds. This function is only used in an assert.
llvm-svn: 208491
2014-05-11 09:31:47 +00:00
Nico Weber e8e53116f8 Wrap at 80 columns. No code change.
llvm-svn: 208485
2014-05-11 01:04:02 +00:00
Nico Weber 77c76c54fc Wrap to 80 columns. No behavior change.
llvm-svn: 208475
2014-05-10 17:43:15 +00:00
Fariborz Jahanian c70a54366e Objective-C ARC. Add support for toll-free bridge
type ,and bridge attribute, checking with static_cast. 
// rdar://16756639

llvm-svn: 208474
2014-05-10 17:40:11 +00:00
Benjamin Kramer e6f743f9ab Analyzer: Make helper function static.
llvm-svn: 208473
2014-05-10 17:13:34 +00:00
Benjamin Kramer f3ca269839 Decouple ExprCXX.h and DeclCXX.h and clean up includes a bit.
Required pulling LambdaExpr::Capture into its own header.
No functionality change.

llvm-svn: 208470
2014-05-10 16:31:55 +00:00
David Blaikie 9c8821bbef Add FIXME describing the limitation of using column info to disambiguate inlining.
Also tidy up, simplify, and extend the test coverage to demonstrate the
limitations. This test should now fail if the bugs are fixed (&
hopefully whoever ends up in this situation sees the FIXMEs and realizes
that the test needs to be updated to positively test their change that
has fixed some or all of these issues).

I do wonder whether I could demonstrate breakage without a macro here,
but any way I slice it I can't think of a way to get two calls to the
same function on the same line/column in non-macro C++ - implicit
conversions happen at the same location as an explicit function, but
you'd never get an implicit conversion on the result of an explicit call
to the same implicit conversion operator (since the value is already
converted to the desired result)...

llvm-svn: 208468
2014-05-10 02:44:57 +00:00
Richard Smith d7af8a334c Stop all the Decl classes poking at Redeclarable's data member directly, and make getNextRedeclaration follow the pattern of its friends getPreviousDecl and getMostRecentDecl.
llvm-svn: 208467
2014-05-10 01:17:36 +00:00
Reid Kleckner 37abaca3c2 MS ABI: Pass 'sret' as the second parameter of instance methods
Summary:
MSVC always passes 'sret' after 'this', unlike GCC.  This required
changing a number of places in Clang that assumed the sret parameter was
always first in LLVM IR.

This fixes win64 MSVC ABI compatibility for methods returning structs.

Reviewers: rsmith, majnemer

Subscribers: cfe-commits

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

llvm-svn: 208458
2014-05-09 22:46:15 +00:00
David Blaikie 04e2e665cb Don't emit -Wnon-virtual-dtor on final classes, since it's not a problem there.
The base class is the culprit/risk here - a sealed/final derived class
with virtual functions and a non-virtual dtor can't accidentally be
polymorphically destroyed (if the base class's dtor is protected - which
also suppresses this warning).

llvm-svn: 208449
2014-05-09 22:02:28 +00:00
Richard Smith 6d54014144 PR19698, PR19674: enable __has_feature checks for cxx_generic_lambdas and
cxx_decltype_auto, and fix documentation of cxx_generic_lambdas and
cxx_init_captures to specify the right feature-check name.

llvm-svn: 208445
2014-05-09 21:08:59 +00:00
Fariborz Jahanian 65a78b5d9b Objective-C. Reduce false positive warnings with -Wselector by issuing warning
only when named selector is declared in TU and it is not declared in a system
header. rdar://16600230

llvm-svn: 208443
2014-05-09 19:51:39 +00:00
Aaron Ballman 0c6a14ca82 Amending r208439 to remove buildLExpr; this code isn't strictly required yet, and fixes a dead code warning.
llvm-svn: 208440
2014-05-09 18:44:48 +00:00
Aaron Ballman 7c192b452f Add the ability to use logical expressions for capability attributes. This is to allow requirements to be expressed not just in terms of lists, but in terms of logical expressions. Eg)
void foo(void) __attribute__((requires_capability((FlightControl || Worker) && !Logger)));

This is WIP code.

llvm-svn: 208439
2014-05-09 18:26:23 +00:00
Nico Weber 5f5b94141c Don't leak MacroArgs when using code completion, PR19688.
MacroArgs are owned by TokenLexer, and when a TokenLexer is destroyed, it'll
call its MacroArgs's destroy() method.  destroy() only appends the MacroArg to
Preprocessor's MacroArgCache list, and Preprocessor's destructor then calls
deallocate() on all MacroArgs in that list.  This method then ends up freeing
the MacroArgs's memory.

In a code completion context, Parser::cutOffParsing() gets called when a code
completion token is hit, which changes the type of the current token to
tok::eof.  eof tokens aren't always ConsumeToken()ed, so
Preprocessor::HandleEndOfFile() isn't always called, and that function is
responsible for popping the macro stack.

Due to this, Preprocessor::CurTokenLexer can be non-NULL when
~Preprocessor runs.  It's a unique_ptr, so it ended up being destructed after
~Preprocessor completed, and its MacroArgs thus got added to the freelist after
the code freeing things on the freelist had already completed.  The fix is to
explicitly call reset() before the freelist processing happens.  (See the bug
for more notes.)

llvm-svn: 208438
2014-05-09 18:09:42 +00:00
Benjamin Kramer a7bcab75d2 ThreadSafetyAnalysis: Don't crash when trying to analyze objc methods.
The thread safety analysis isn't very useful in ObjC (you can't annotate
ObjC classes or methods) but we can still analyze the actual code and
show violations in usage of C/C++ functions.

Fixes PR19541, which does not use thread safety attributes but crashes
with -Weverything.

llvm-svn: 208436
2014-05-09 17:08:01 +00:00
James Molloy e735b2bae3 Pacify bots again - turns out my checkout was slightly polluted when I was reverting a olista01s change, and this pollution made it upstream during the revert checkin :/ Sorryemacs -nw lib/CodeGen/CodeGenModule.cpp
llvm-svn: 208426
2014-05-09 16:28:56 +00:00
James Molloy 6f244b6f78 Reapply r208417 (olista01 'ARM: HFAs must be passed in consecutive registers'). Bots are now pacified.
llvm-svn: 208425
2014-05-09 16:21:39 +00:00
James Molloy 1aa0d5f3b2 Revert r208417 (olista01 'ARM: HFAs must be passed in consecutive registers'). This is a followon commit from r208413 which broke the LLVM bots.
llvm-svn: 208422
2014-05-09 16:17:09 +00:00
Oliver Stannard 19f3b4f2ce ARM: HFAs must be passed in consecutive registers
This is the clang counterpart to 208413, which ensures that Homogeneous
Floating-point Aggregates are passed in consecutive registers on ARM.

llvm-svn: 208417
2014-05-09 15:14:56 +00:00