summaryrefslogtreecommitdiffstats
path: root/clang/lib
Commit message (Collapse)AuthorAgeFilesLines
...
* [preprocessor] Use MacroDirective in the preprocessor callbacks to make ↵Argyrios Kyrtzidis2013-02-249-47/+56
| | | | | | | | available the full information about the macro (e.g if it was imported and where). llvm-svn: 175978
* In Sema::InstantiateStaticDataMemberDefinition, pass the var decl to the ↵Argyrios Kyrtzidis2013-02-242-3/+15
| | | | | | | | | | | | consumer just using ASTConsumer::HandleCXXStaticMemberVarInstantiation(), don't pass it with ASTConsumer::HandleTopLevelDecl. ASTConsumer::HandleTopLevelDecl is intended for user-written top-level decls; a consumer can treat an instantiated static data member however it wants of course. llvm-svn: 175976
* Better formatting of conditional expressions.Daniel Jasper2013-02-232-50/+53
| | | | | | | | | | | | | | | | | | | | | | | In conditional expressions, if the condition is split over multiple lines, also break before both operands. This prevents formattings like: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa == aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ? b : c; Which are bad, because they suggestion incorrect operator precedence: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa == (aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ? b : c); This lead to the discovery that the expression parser incorrectly handled conditional operators and that it could also handle semicolons (which in turn reduced the amount of special casing for for-loops). As a side-effect, we can now apply the bin-packing configuration to the sections of for-loops. llvm-svn: 175973
* Prefer 'and' over '&' in comments.David Blaikie2013-02-231-3/+4
| | | | | | Post commit code review feedback from Matt Beaumont-Gay on r174248. llvm-svn: 175969
* Add streamed versions of getQualifiedNameAsString.Benjamin Kramer2013-02-235-13/+36
| | | | | | Move the cold virtual method getNameForDiagnostic out of line. llvm-svn: 175966
* Don't recognize unnamed pointer parameters as casts.Daniel Jasper2013-02-231-1/+2
| | | | | | | | This fixes llvm.org/PR15061. Before: virtual void f(int *)const; After: virtual void f(int *) const; llvm-svn: 175960
* Allow splitting between string literals and identifiers.Daniel Jasper2013-02-231-0/+6
| | | | | | | | | | | | | | | Also don't break in long include directives as that is not desired. We can now format: #include "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaa" #define LL_FORMAT "ll" printf("aaaaa: %d, bbbbbbbbb: %" LL_FORMAT "d, cccccccc: %" LL_FORMAT "d, ddddddddd: %" LL_FORMAT "d\n"); Before, this led to weird results. llvm-svn: 175959
* Implement __builtin_eh_return_data_regno() for ARM and MIPS.Logan Chien2013-02-231-0/+12
| | | | llvm-svn: 175954
* ubsan: Emit bounds checks for array indexing, vector indexing, and (in ↵Richard Smith2013-02-234-6/+113
| | | | | | really simple cases) pointer arithmetic. This augments the existing bounds checking with language-level array bounds information. llvm-svn: 175949
* Remove the CFGElement "Invalid" state.David Blaikie2013-02-2317-70/+68
| | | | | | | | | | | | | Use Optional<CFG*> where invalid states were needed previously. In the one case where that's not possible (beginAutomaticObjDtorsInsert) just use a dummy CFGAutomaticObjDtor. Thanks for the help from Jordan Rose & discussion/feedback from Ted Kremenek and Doug Gregor. Post commit code review feedback on r175796 by Ted Kremenek. llvm-svn: 175938
* Remove the hack that avoided mangling static functions in extern C contexts.Rafael Espindola2013-02-232-17/+0
| | | | | | | | | | | | | | | | | Weather we should give C language linkage to functions and variables with internal linkage probably depends on how much code assumes it. The standard says they should have no language linkage, but gcc and msvc assign them C language linkage. This commit removes the hack that was preventing the mangling on static functions declare in extern C contexts. It is an experiment to see if we can implement the rules in the standard. If it turns out that many users depend on these functions and variables having C language linkage, we should change isExternC instead and try to convince the CWG to change the standard. llvm-svn: 175937
* Revert r175912, "Add support for coldcc to clang" at John's request.Peter Collingbourne2013-02-237-25/+5
| | | | llvm-svn: 175936
* Propagate the split dwarf file information through into the backendEric Christopher2013-02-223-4/+13
| | | | | | | | | and through to the debug info in the module. In order to make the testcase a bit more efficient allow the filename to go through compilation for compile and not assemble jobs and turn off the extract for cases where we don't create an object. llvm-svn: 175935
* [libclang] Fix assertion hit when code-completing inside a function macro ↵Argyrios Kyrtzidis2013-02-221-2/+4
| | | | | | | | with more arguments than it should accept. llvm-svn: 175925
* objective-C arg: provide fixit support whenFariborz Jahanian2013-02-226-28/+63
| | | | | | | c++'s named cast need be replaced for bridge casting. // rdar://12788838 llvm-svn: 175923
* Driver: Pass down the -march setting down to -cc1as on x86 too.Benjamin Kramer2013-02-222-0/+15
| | | | | | | The assembler historically didn't make use of any target features, but this has changed when support for old CPUs that don't support long nops was added. llvm-svn: 175919
* Make sure we apply attributes to correct places.Bill Wendling2013-02-221-13/+17
| | | | | | | Some attributes make sense only on the function or on the call site, but not both. Make this distinction here. llvm-svn: 175918
* Split out the command handling for split debug info, we're goingEric Christopher2013-02-222-32/+39
| | | | | | | | | to want to propagate some information through the module into the back end and so need to pass it through to codegen. Also make the methods file static so we can use them in other places. llvm-svn: 175916
* [analyzer] Don't canonicalize the RecordDecl used in CXXBaseObjectRegion.Jordan Rose2013-02-221-2/+2
| | | | | | | | | | | This Decl shouldn't be the canonical Decl; it should be the Decl used by the CXXBaseSpecifier in the subclass. Unfortunately, that means continuing to throw getCanonicalDecl() on all comparisons. This fixes MemRegion::getAsOffset's use of ASTRecordLayout when redeclarations are involved. llvm-svn: 175913
* Add support for coldcc to clangPeter Collingbourne2013-02-227-5/+25
| | | | llvm-svn: 175912
* [preprocessing record] Have the MacroDefinitions map point to the ↵Argyrios Kyrtzidis2013-02-222-11/+13
| | | | | | | | | | MacroDefinition object instead its index in the preprocessed entities vector. This is because the order of the entities in the vector can change in some (uncommon) cases. llvm-svn: 175907
* Replace some typically large vectors with SmallVector.Benjamin Kramer2013-02-221-1/+1
| | | | | | | | This may seem counter-intuitive but the POD-like optimization helps when the vectors grow into multimegabyte buffers. SmallVector calls realloc which knows how to twiddle virtual memory bits and avoids large copies. llvm-svn: 175906
* Make sure pragmas don't attach visibility attributes to auto variables withRafael Espindola2013-02-221-6/+7
| | | | | | internal linkage. llvm-svn: 175903
* [Sema] Semantic analysis for empty-declaration and attribute-declaration.Michael Han2013-02-2210-25/+50
| | | | | | | | Introduce a new AST Decl node "EmptyDecl" to model empty-declaration. Have attributes from attribute-declaration appertain to the EmptyDecl node by creating the AST representations of these attributes and attach them to the EmptyDecl node so these attributes can be sema checked just as attributes attached to "normal" declarations. llvm-svn: 175900
* Use raw_ostream::indent, update comment.Benjamin Kramer2013-02-221-4/+3
| | | | llvm-svn: 175897
* Push the raw_ostream through the template diffing code.Benjamin Kramer2013-02-221-17/+11
| | | | llvm-svn: 175896
* Streamify FormatASTNodeDiagnosticArgument.Benjamin Kramer2013-02-221-35/+33
| | | | llvm-svn: 175895
* Streamify getNameForDiagnostic and remove the string versions of ↵Benjamin Kramer2013-02-2210-214/+67
| | | | | | PrintTemplateArgumentList. llvm-svn: 175894
* Comment parsing: add CommentOptions to allow specifying custom comment block ↵Dmitri Gribenko2013-02-227-6/+70
| | | | | | | | | | | | | | | | commands Add an ability to specify custom documentation block comment commands via a new class CommentOptions. The intention is that this class will hold future customizations for comment parsing, including defining documentation comments with specific numbers of parameters, etc. CommentOptions instance is a member of LangOptions. CommentOptions is controlled by a new command-line parameter -fcomment-block-commands=Foo,Bar,Baz. llvm-svn: 175892
* StmtPrinter: Directly print types to the stream instead of taking a detour ↵Benjamin Kramer2013-02-222-56/+69
| | | | | | through getAsString. llvm-svn: 175891
* Fix MergeFunctionDecl implicit CC for static methods.Timur Iskhodzhanov2013-02-221-2/+3
| | | | | | Patch by Alexander Zinenko! llvm-svn: 175890
* Don't crash if we try to apply 'alignas' to a variable declared with anRichard Smith2013-02-221-1/+1
| | | | | | incomplete type. llvm-svn: 175880
* Don't accidentally and silently accept C++11 attributes in decl-specifier-seqsRichard Smith2013-02-222-1/+3
| | | | | | in C++98. llvm-svn: 175879
* Per the grammar in [dcl.dcl]p1, a simple-declaration can only have attributesRichard Smith2013-02-222-8/+10
| | | | | | if it has declarators. We were missing the check for this in a couple of places. llvm-svn: 175876
* Handle alignas(foo...) pack expansions.Richard Smith2013-02-223-52/+92
| | | | llvm-svn: 175875
* In LookupResult::resolveKind(), when handling multiple found declarations, ↵Argyrios Kyrtzidis2013-02-221-0/+6
| | | | | | | | | ignore invalid declarations. This reduces the "ambiguous reference" errors (which are rather strange in C/ObjC) and fixes an assertion hit with an invalid code test case. llvm-svn: 175869
* When a parameter list in a C function has an error, recover by forming a K&R ↵Argyrios Kyrtzidis2013-02-221-0/+2
| | | | | | | | function, instead of a non-function type. llvm-svn: 175868
* Don't crash when applying an alloc_size attribute on a K&R function.Argyrios Kyrtzidis2013-02-221-1/+5
| | | | llvm-svn: 175867
* Don't skip '_Alignas' when disambiguating 'final'. '_Alignas' can't appear here,Richard Smith2013-02-221-10/+3
| | | | | | and we used to assert if it did. llvm-svn: 175866
* Teach -ast-print how to print trailing-return-types.Richard Smith2013-02-221-2/+6
| | | | llvm-svn: 175864
* [analyzer] Implement "Loop executed 0 times" diagnostic correctly.Ted Kremenek2013-02-221-20/+62
| | | | | | Fixes <rdar://problem/13236549> llvm-svn: 175863
* Implement C++11 [dcl.align]p6-p8, and C11 6.7.5/7. This had to be split out ofRichard Smith2013-02-223-29/+179
| | | | | | | | the normal attribute-merging path, because we can't merge alignment attributes without knowing the complete set of alignment attributes which apply to a particular declaration. llvm-svn: 175861
* [libclang] Fix a crash with invalid code, while skip function bodies is enabled.Argyrios Kyrtzidis2013-02-222-3/+3
| | | | llvm-svn: 175860
* Decl.cpp/mergeTemplateLV(): Tweak a description. [-Wdocumentation]NAKAMURA Takumi2013-02-221-1/+1
| | | | llvm-svn: 175859
* Only suppress instance context if a member is actuallyJohn McCall2013-02-221-2/+6
| | | | | | | | | | | | | | | | | | | | | | | | accessible in its declaring class; otherwise we might fail to apply [class.protected] when considering accessibility in derived classes. Noticed by inspection; <rdar://13270329>. I had an existing test wrong. Here's why it's wrong: Follow the rules (and notation) of [class.access]p5. The naming class (N) is B and the context (R) is D::getX. - 'x' as a member of B is protected, but R does not occur in a member or friend of a class derived from B. - There does exist a base class of B, A, which is accessible from R, and 'x' is accessible at R when named in A because 'x' as a member of A is protected and R occurs in a member of a class, D, that is derived from A; however, by [class.protected], the class of the object expression must be equal to or derived from that class, and A does not derive from D. llvm-svn: 175858
* [analyzer] Place all inlining policy checks into one palceAnna Zaks2013-02-221-175/+179
| | | | | | | | | | | | | Previously, we had the decisions about inlining spread out over multiple functions. In addition to the refactor, this commit ensures that we will always inline BodyFarm functions as long as the Decl is available. This fixes false positives due to those functions not being inlined when no or minimal inlining is enabled such (as shallow mode). llvm-svn: 175857
* Add -fbracket-depth=N, analogous to -ftemplate-depth= and -fconstexpr-depth=,Richard Smith2013-02-224-2/+10
| | | | | | | | | | | to control the check for the C 5.2.4.1 / C++ [implimits] restriction on nesting levels for parentheses, brackets and braces. Some code with heavy macro use exceeds the default limit of 256, but we don't want to increase it generally to avoid stack overflow on stack-constrained systems. llvm-svn: 175855
* [analyzer] Make sure a materialized temporary matches its bindings.Jordan Rose2013-02-222-45/+38
| | | | | | | | | | | | | | | | | This is a follow-up to r175830, which made sure a temporary object region created for, say, a struct rvalue matched up with the initial bindings being stored into it. This does the same for the case in which the AST actually tells us that we need to create a temporary via a MaterializeObjectExpr. I've unified the two code paths and moved a static helper function onto ExprEngine. This also caused a bit of test churn, causing us to go back to describing temporary regions without a 'const' qualifier. This seems acceptable; it's our behavior from a few months ago. <rdar://problem/13265460> (part 2) llvm-svn: 175854
* Fix regression in modeling assignments of an address of a variable to ↵Ted Kremenek2013-02-221-3/+1
| | | | | | itself. Fixes <rdar://problem/13226577>. llvm-svn: 175852
* Make sure we only use the output file as a base for debug splittingEric Christopher2013-02-221-1/+1
| | | | | | if we're compiling. llvm-svn: 175851
OpenPOWER on IntegriCloud