| Commit message (Collapse) | Author | Age | Files | Lines | 
| ... |  | 
| | 
| 
| 
|  | 
llvm-svn: 155900
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
and only consider using __cxa_atexit in the Itanium logic.  The
default logic is to use atexit().
Emit "guarded" initializers in Microsoft mode unconditionally.
This is definitely not correct, but it's closer to correct than
just not emitting the initializer.
Based on a patch by Timur Iskhodzhanov!
llvm-svn: 155894
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
I broke this in r155838 by not actually instantiating non-dependent default arg
expressions. The motivation for that change was to avoid producing duplicate
conversion warnings for such default args (we produce them once when we parse
the template - there's no need to produce them at each instantiation) but
without actually instantiating the default arg, things break in weird ways.
Technically, I think we could still get the right diagnostic experience without
the bugs if we instantiated the non-dependent args (for non-dependent params
only) immediately, rather than lazily. But I'm not sure if such a refactoring/
change would be desirable so here's the conservative fix for now.
llvm-svn: 155893
 | 
| | 
| 
| 
| 
| 
|  | 
retained objects.  I know there is an SDK enhancement request for this to have the cf_returns_retained annotation, so this is just a stop gap.
llvm-svn: 155887
 | 
| | 
| 
| 
| 
| 
| 
| 
|  | 
what I'm going to treat as basically universal properties of
array-cookie code.  Implement MS array cookies on top of that.
Based on a patch by Timur Iskhodzhanov!
llvm-svn: 155886
 | 
| | 
| 
| 
| 
| 
|  | 
Review by Doug Gregor.
llvm-svn: 155880
 | 
| | 
| 
| 
| 
| 
| 
|  | 
type-source information for its parameters.  Don't crash when
mangling them in the MS C++ ABI.  Patch by Timur Iskhodzhanov!
llvm-svn: 155879
 | 
| | 
| 
| 
| 
| 
|  | 
diagnostic, from Eitan Adler!
llvm-svn: 155876
 | 
| | 
| 
| 
|  | 
llvm-svn: 155875
 | 
| | 
| 
| 
|  | 
llvm-svn: 155871
 | 
| | 
| 
| 
|  | 
llvm-svn: 155870
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
Similar to r155808 - this mistake has been made in a few iterators.
Based on Chandler Carruth's feedback to r155808 I added an implicit conversion
to Decl* to ease adoption/usage. Useful for the pointer comparison, but not the
dyn_cast (due to template argument deduction causing the conversion not to be
used) - there for future convenience, though. This idiom (op T* for iterators)
seems to be fairly idiomatic within the LLVM codebase & I'll likely add it as I
fix up the other iterators here.
llvm-svn: 155869
 | 
| | 
| 
| 
| 
| 
| 
|  | 
test for an invalid declaration at every single place in the
constant evaluator that's about to request a struct layout.
llvm-svn: 155868
 | 
| | 
| 
| 
| 
| 
| 
| 
|  | 
a sizeof() type is compatible with a pointed type.
Fixes <rdar://problem/11292586>.
llvm-svn: 155864
 | 
| | 
| 
| 
|  | 
llvm-svn: 155860
 | 
| | 
| 
| 
| 
| 
|  | 
declarations at the global scope, from Evan P. Fixes PR9083.
llvm-svn: 155858
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
being used in an exception specification in a way which isn't otherwise
ill-formed in C++98: this warning also incorrectly triggered on uses of 'this'
inside thread-safety attributes, and the mechanism required to tell these cases
apart is more complex than can be justified by the (minimal) value of this part
of -Wc++98-compat.
llvm-svn: 155857
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
of a local variable, make sure we don't infinitely recurse when the
reference binds to itself.
e.g:
int* func() {
    int& i = i;    // assign non-exist variable to a reference which has same name.
    return &i;    // return pointer
}
rdar://11345441
llvm-svn: 155856
 | 
| | 
| 
| 
| 
| 
| 
| 
|  | 
defined inside the objc class belong to class's
decl. scope. This is to conform to objective-c
rules. // rdar://11351299
llvm-svn: 155855
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
calculating it recursively.
boost::assign::tuple_list_of uses the trick of chaining call operator expressions in order to declare a "list of tuples", e.g:
    std::vector<tuple> v = boost::assign::tuple_list_of(1, "foo")(2, "bar")(3, "qqq");
Due to CXXOperatorCallExpr calculating its source range recursively we would get
significant slowdowns with a large number of chained call operator expressions and the
potential for stack overflow.
rdar://11350116
llvm-svn: 155848
 | 
| | 
| 
| 
|  | 
llvm-svn: 155843
 | 
| | 
| 
| 
| 
| 
|  | 
Reviewed by Doug Gregor.
llvm-svn: 155839
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
Apparently we weren't checking default arguments when they were instantiated.
This adds the check, fixes the lack of instantiation caching (which seems like
it was mostly implemented but just missed the last step), and avoids
implementing non-dependent default args (for non-dependent parameter types) as
uninstantiated default arguments (so that we don't warn once for every
instantiation when it's not instantiation dependent).
Reviewed by Richard Smith.
llvm-svn: 155838
 | 
| | 
| 
| 
| 
| 
| 
|  | 
when we're in an Objective-C container context. Fixes
<rdar://problem/11286701>.
llvm-svn: 155836
 | 
| | 
| 
| 
| 
| 
|  | 
in the loop conditional do not change.
llvm-svn: 155835
 | 
| | 
| 
| 
| 
| 
|  | 
local rewriting functions.
llvm-svn: 155826
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
filter_decl_iterator had a weird mismatch where both op* and op-> returned T*
making it difficult to generalize this filtering behavior into a reusable
library of any kind.
This change errs on the side of value, making op-> return T* and op* return
T&.
(reviewed by Richard Smith)
llvm-svn: 155808
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
g++4.7, which reuses stack space allocated for temporaries. CFGElement::getAs
returns a suitably-cast version of 'this'. Patch by Markus Trippelsdorf!
No test: this code has the same observable behavior as the old code when built
with most compilers, and the tests were already failing when built with a
compiler for which this produced a broken binary.
llvm-svn: 155803
 | 
| | 
| 
| 
| 
| 
|  | 
type. But a glvalue can be reinterpret_cast to either flavor of reference.
llvm-svn: 155789
 | 
| | 
| 
| 
| 
| 
| 
|  | 
victim. Don't crash if we have a delay-parsed exception specification for a
class member which is invalid in a way which precludes building a FunctionDecl.
llvm-svn: 155788
 | 
| | 
| 
| 
| 
| 
| 
|  | 
diagnostic, add a test for this paragraph, and tighten up the diagnostic wording
a little.
llvm-svn: 155784
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
i32 __builtin_annotation(i32, string);
Applying it to i64 (e.g., long long) generates the following IR.
        trunc i64 {{.*}} to i32
        call i32 @llvm.annotation.i32
        zext i32 {{.*}} to i64
The redundant truncation and extension make the result difficult to use.
This patch makes __builtin_annotation() generic.
        type __builtin_annotation(type, string);
For the i64 example, it simplifies the generated IR to:
        call i64 @llvm.annotation.i64
Patch by Xi Wang!
llvm-svn: 155764
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
Before:
t.c:3:9: error: expected expression
  if (x)) {
        ^
.. which isn't even true - a statement or expression is fine.  After:
t.c:3:9: error: extraneous ')' after condition, expected a statement
  if (x)) {
        ^
This is the second part of PR12595
llvm-svn: 155762
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
This allows
us to improve this diagnostic (telling us to insert another ")":
t.c:2:19: error: expected ';' at end of declaration
  int x = 4+(5-12));
                  ^
                  ;
to:
t.c:2:19: error: extraneous ')' before ';'
  int x = 4+(5-12));
                  ^
...telling us to remove the ")".  This is PR12595.  There are more uses of ExpectAndConsumeSemi
that could be switched over, but I don't hit them on a daily basis :)
llvm-svn: 155759
 | 
| | 
| 
| 
|  | 
llvm-svn: 155758
 | 
| | 
| 
| 
| 
| 
|  | 
standard layout type.
llvm-svn: 155757
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
isPODType decide which one to use based on LangOptions.
- -Wc++98-compat depends on the c++98 definition
- Now __is_pod returns the right thing in c++11 and c++98 mode
- All changes to the type traits test are validated against g++ 4.7
llvm-svn: 155756
 | 
| | 
| 
| 
| 
| 
|  | 
This is just papering over a major bug in isPODType, real fix coming up soon.
llvm-svn: 155755
 | 
| | 
| 
| 
| 
| 
|  | 
Keep the old definition for C++98 so we don't break tr1::is_pod.
llvm-svn: 155754
 | 
| | 
| 
| 
| 
| 
|  | 
cross-TU inlining never panned out.
llvm-svn: 155751
 | 
| | 
| 
| 
| 
| 
| 
|  | 
nonfragile ivar access code when ivar type is a 
locally defined struct/union type. // rdar://11323187
llvm-svn: 155740
 | 
| | 
| 
| 
| 
| 
| 
|  | 
up with gaps when the class inherits from the same empty base class
more than once. Fixes <rdar://problem/11324167>.
llvm-svn: 155738
 | 
| | 
| 
| 
| 
| 
|  | 
symbols should be static. // rdar://11337074
llvm-svn: 155736
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
|  | 
architecture; this was happening for tools such as lipo and dsymutil.
Also, if no -arch option has been specified, set the architecture based
on the TC default.
rdar://11329656
llvm-svn: 155730
 | 
| | 
| 
| 
| 
| 
| 
|  | 
We do not support IRGen for these, and get some parts of the semantic analysis
wrong.
llvm-svn: 155728
 | 
| | 
| 
| 
|  | 
llvm-svn: 155723
 | 
| | 
| 
| 
| 
| 
|  | 
intended.
llvm-svn: 155719
 | 
| | 
| 
| 
| 
| 
|  | 
intended.
llvm-svn: 155718
 | 
| | 
| 
| 
|  | 
llvm-svn: 155708
 | 
| | 
| 
| 
|  | 
llvm-svn: 155697
 |