| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
| |
llvm-svn: 147575
|
| |
|
|
|
|
|
|
| |
c++ object reference type with trivial copy constructor.
This causes an assert crash and bad code gen. when assert
is off. // rdar://6137845
llvm-svn: 147573
|
| |
|
|
|
|
|
| |
umbrella directory, skip includes for any headers that are part of an
unavailable module.
llvm-svn: 147572
|
| |
|
|
| |
llvm-svn: 147570
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
as a result of a call.
Problem:
Global variables, which come in from system libraries should not be
invalidated by all calls. Also, non-system globals should not be
invalidated by system calls.
Solution:
The following solution to invalidation of globals seems flexible enough
for taint (does not invalidate stdin) and should not lead to too
many false positives. We split globals into 3 classes:
* immutable - values are preserved by calls (unless the specific
global is passed in as a parameter):
A : Most system globals and const scalars
* invalidated by functions defined in system headers:
B: errno
* invalidated by all other functions (note, these functions may in
turn contain system calls):
B: errno
C: all other globals (which are not in A nor B)
llvm-svn: 147569
|
| |
|
|
|
|
| |
'objc_disable_automatic_synthesis'.
llvm-svn: 147567
|
| |
|
|
| |
llvm-svn: 147565
|
| |
|
|
| |
llvm-svn: 147563
|
| |
|
|
|
|
|
|
|
|
| |
address-of-label expressions. Add support to Evaluate and CGExprConstant for generating/handling them. Remove the special-case for such differences in Expr::isConstantInitializer.
With that done, remove a bunch of buggy code from CGExprConstant for handling scalar expressions which is no longer necessary.
Fixes PR11705.
llvm-svn: 147561
|
| |
|
|
| |
llvm-svn: 147558
|
| |
|
|
|
|
| |
information even in subscripting operations.
llvm-svn: 147557
|
| |
|
|
|
|
| |
which is automatic with proper spelling :).
llvm-svn: 147555
|
| |
|
|
|
|
|
|
|
| |
any language variant), and restrict __has_feature(objc_modules) to
mean that we also have the Objective-C @import syntax. I anticipate
__has_feature(cxx_modules) and/or __has_feature(c_modules) for when we
nail down the module syntax for C/C++.
llvm-svn: 147548
|
| |
|
|
| |
llvm-svn: 147545
|
| |
|
|
| |
llvm-svn: 147535
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
different modules. This implementation is a first approximation of
what we want, using only the function type to determine
equivalence. Later, we'll want to deal with some of the more subtle
issues, including:
- C allows a prototyped declaration and a non-prototyped declaration
to be merged, which we should support
- We may want to ignore the return type when merging, then
complain if the return types differ. Or, we may want to leave it
as it us, so that we only complain if overload resolution
eventually fails.
- C++ non-static member functions need to consider cv-qualifiers
and ref-qualifiers.
- Function templates need to consider the template parameters and
return type.
- Function template specializations will have special rules.
- We can now (accidentally!) end up overloading in C, even without
the "overloadable" attribute, and will need to detect this at some
point.
The actual detection of "is this an overload?" is implemented by
Sema::IsOverload(), which will need to be moved into the AST library
for re-use here. That will be a future refactor.
llvm-svn: 147534
|
| |
|
|
|
|
| |
thing.
llvm-svn: 147530
|
| |
|
|
| |
llvm-svn: 147526
|
| |
|
|
|
|
| |
or when modules are disabled.
llvm-svn: 147524
|
| |
|
|
|
|
| |
PR11690.
llvm-svn: 147523
|
| |
|
|
|
|
| |
use it. Unconditionally error on lambda expressions because they don't work in any meaningful way yet.
llvm-svn: 147515
|
| |
|
|
| |
llvm-svn: 147506
|
| |
|
|
|
|
|
|
| |
variety is treated as a 'void *'. No need to issue
warning reserved for objc object properties.
// rdar://10565506
llvm-svn: 147504
|
| |
|
|
|
|
| |
and realloc(). Patch by Cyril Roelandt!
llvm-svn: 147500
|
| |
|
|
|
|
|
|
|
|
|
|
| |
the AST reader doesn't actually perform a merge, because name lookup
knows how to merge identical typedefs together.
As part of this, teach C/Objective-C name lookup to return multiple
results in all cases, rather than first digging through the attributes
to see if the value is overloadable. This way, we'll catch ambiguous
lookups in C/Objective-C.
llvm-svn: 147498
|
| |
|
|
|
|
| |
Anton Lokhmotov.
llvm-svn: 147496
|
| |
|
|
|
|
|
|
| |
called transitively
from C++ constructors or destructors. Checker by Lei Zhang with a few tweaks by Ted Kremenek.
llvm-svn: 147494
|
| |
|
|
|
|
| |
attribute.
llvm-svn: 147490
|
| |
|
|
|
|
|
|
|
|
|
|
| |
that if two modules A and B both contain a declaration of a tag such
as
struct X;
and those two modules are unrelated, the two declarations of X will be
merged into a single redeclaration chain.
llvm-svn: 147488
|
| |
|
|
| |
llvm-svn: 147482
|
| |
|
|
| |
llvm-svn: 147480
|
| |
|
|
| |
llvm-svn: 147479
|
| |
|
|
| |
llvm-svn: 147473
|
| |
|
|
| |
llvm-svn: 147469
|
| |
|
|
|
|
| |
which should not be default synthesized.
llvm-svn: 147468
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
modules. This leaves us without an explicit syntax for importing
modules in C/C++, because such a syntax needs to be discussed
first. In Objective-C/Objective-C++, the @import syntax is used to
import modules.
Note that, under -fmodules, C/C++ programs can import modules via the
#include mechanism when a module map is in place for that header. This
allows us to work with modules in C/C++ without committing to a syntax.
llvm-svn: 147467
|
| |
|
|
|
|
|
| |
to make a macro public (the default for headers) or private,
respectively.
llvm-svn: 147455
|
| |
|
|
|
|
| |
@import identifier [. identifier]* ;
llvm-svn: 147452
|
| |
|
|
|
|
|
| |
declarations in the AST unless modules are enabled. This case doesn't
come up with precompiled headers, and it isn't cheap.
llvm-svn: 147451
|
| |
|
|
|
|
|
|
| |
module imports from -fauto-module-import to -fmodules. The new name
will eventually be used to enable modules, and the #include/#import
mapping is a crucial part of the feature.
llvm-svn: 147447
|
| |
|
|
| |
llvm-svn: 147441
|
| |
|
|
|
|
| |
-ffast-math.
llvm-svn: 147440
|
| |
|
|
|
|
|
| |
Add a test that such characters don't make it through to StringLiteral objects
in error recovery.
llvm-svn: 147438
|
| |
|
|
|
|
|
| |
is known (to Clang), but is not visible because the module has not yet
been imported.
llvm-svn: 147436
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Clang driver. This involves a bunch of silly option parsing code to try
to carefully emulate GCC's options. Currently, this takes a conservative
approach, and unless all of the unsafe optimizations are enabled, none
of them are. The fine grained control doesn't seem particularly useful.
If it ever becomes useful, we can add that to LLVM first, and then
expose it here.
This also fixes a few tiny bugs in the flag management around
-fhonor-infinities and -fhonor-nans; the flags now form proper sets both
for enabling and disabling, with the last flag winning.
I've also implemented a moderately terrifying GCC feature where
a language change is also provided by the '-ffast-math' flag by defining
the __FAST_MATH__ preprocessor macro. This feature is tracked and
serialized in the frontend but it isn't used yet. A subsequent patch
will add the preprocessor macro and tests for it.
I've manually tested that codegen appears to respect this, but I've not
dug in enough to see if there is an easy way to test codegen options w/o
relying on the particulars of LLVM's optimizations.
llvm-svn: 147434
|
| |
|
|
| |
llvm-svn: 147424
|
| |
|
|
|
|
|
| |
multiple, disjoint modules. There is far too much duplicating with the
ObjCInterfaceDecl case here, which I'll eliminate shortly.
llvm-svn: 147417
|
| |
|
|
|
|
|
| |
forward declarations and definitions of an Objective-C protocol are
represented within a single chain of ObjCProtocolDecls.
llvm-svn: 147412
|
| |
|
|
|
|
| |
take precedence over command line options. Fixes PR10113.
llvm-svn: 147405
|
| |
|
|
|
|
|
|
|
| |
features needed for a particular module to be available. This allows
mixed-language modules, where certain headers only work under some
language variants (e.g., in C++, std.tuple might only be available in
C++11 mode).
llvm-svn: 147387
|