| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
the front-end (as far as the preprocessor goes), follow the usual logic of
inserting the (original include path) name into the predefines buffer. This
pushes the responsibility for handling this to PCH instead of the front-end. In
PCH this requires being a little more clever when we diff the predefines
buffers.
Neither of these solutions are particularly great, I think what we eventually
should do is something like gcc where we insert a special marker to indicate the
PCH file, but then run the preprocessor as usual. This would be clearer and
would allow us to drop the overly clever predefines handling.
llvm-svn: 86806
|
|
|
|
| |
llvm-svn: 86805
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
tons of std::string trashing. I plan to move this and other fun string munging
utilities to a StringRefExtras.h at some point if no one beats me to it.
On a synthetic benchmark on x86_64, llvm-gcc actually generates code thats 10%
faster using the StringRef version. gcc miscompiles the synthetic benchmark,
which I'm crossing my fingers and hoping won't happen here. clang compiles the
sythetic benchmark correctly (wootness), but the StringRef version is
slower. Silly clang.
llvm-svn: 86799
|
|
|
|
|
|
|
|
|
|
| |
the old builder API. This percolated a bunch of changes up to the
Checker class (where CheckLocation has been renamed VisitLocation) and
GRExprEngine. ProgramPoint now has the notion of a "LocationCheck"
point (with PreLoad and PreStore respectively), and a bunch of the old
ProgramPoints that are no longer used have been removed.
llvm-svn: 86798
|
|
|
|
|
|
| |
anonymous members. Partial fix for PR 5390.
llvm-svn: 86796
|
|
|
|
|
|
| |
interface. WIP.
llvm-svn: 86793
|
|
|
|
| |
llvm-svn: 86792
|
|
|
|
|
|
|
| |
if (self = [super init])
Recognize it and only warn if -Wparentheses is explicitly enabled.
llvm-svn: 86790
|
|
|
|
|
|
| |
objects.
llvm-svn: 86778
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
parameters. Rather than storing them as either declarations (for the
non-dependent case) or expressions (for the dependent case), we now
(always) store them as TemplateNames.
The primary change here is to add a new kind of TemplateArgument,
which stores a TemplateName. However, making that change ripples to
every switch on a TemplateArgument's kind, also affecting
TemplateArgumentLocInfo/TemplateArgumentLoc, default template
arguments for template template parameters, type-checking of template
template arguments, etc.
This change is light on testing. It should fix several pre-existing
problems with template template parameters, such as:
- the inability to use dependent template names as template template
arguments
- template template parameter default arguments cannot be
instantiation
However, there are enough pieces missing that more implementation is
required before we can adequately test template template parameters.
llvm-svn: 86777
|
|
|
|
| |
llvm-svn: 86775
|
|
|
|
| |
llvm-svn: 86774
|
|
|
|
| |
llvm-svn: 86772
|
|
|
|
| |
llvm-svn: 86764
|
|
|
|
| |
llvm-svn: 86760
|
|
|
|
| |
llvm-svn: 86757
|
|
|
|
| |
llvm-svn: 86755
|
|
|
|
| |
llvm-svn: 86750
|
|
|
|
| |
llvm-svn: 86746
|
|
|
|
| |
llvm-svn: 86745
|
|
|
|
|
|
| |
necessary.
llvm-svn: 86741
|
|
|
|
|
|
| |
generated PHI node for the null check of a new operator.
llvm-svn: 86738
|
|
|
|
|
|
| |
<rdar://problem/7381735>.
llvm-svn: 86731
|
|
|
|
| |
llvm-svn: 86719
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
handling template template parameters properly. This refactoring:
- Parses template template arguments as id-expressions, representing
the result of the parse as a template name (Action::TemplateTy)
rather than as an expression (lame!).
- Represents all parsed template arguments via a new parser-specific
type, ParsedTemplateArgument, which stores the kind of template
argument (type, non-type, template) along with all of the source
information about the template argument. This replaces an ad hoc
set of 3 vectors (one for a void*, which was either a type or an
expression; one for a bit telling whether the first was a type or
an expression; and one for a single source location pointing at
the template argument).
- Moves TemplateIdAnnotation into the new Parse/Template.h. It never
belonged in the Basic library anyway.
llvm-svn: 86708
|
|
|
|
|
|
| |
(Ted's feedback).
llvm-svn: 86702
|
|
|
|
|
|
| |
global array of objects.
llvm-svn: 86701
|
|
|
|
| |
llvm-svn: 86699
|
|
|
|
|
|
|
|
|
|
|
| |
- This is conceptually better since the only thing we want this option to do is
preserve the internal module as constructed by IRgen, before running any
passes.
- This also fixes bugs in -disable-llvm-optzns handling with regards to debug
info.
llvm-svn: 86691
|
|
|
|
|
|
|
| |
although in this case we probably just run a risk of duplicating work;
I can't think of how this could cause a bug.
llvm-svn: 86680
|
|
|
|
|
|
|
|
|
| |
using directives, and fix a bug thereby exposed: since we're playing
tricks with pointers, we need to make certain we're always using the same
pointers for things.
Also tweak an existing error message.
llvm-svn: 86679
|
|
|
|
| |
llvm-svn: 86677
|
|
|
|
|
|
|
|
| |
This is reasonable because people know what they are doing when they
intentionally dereference the pointer.
So now we only emit warning when a pointer variable is use literally.
llvm-svn: 86673
|
|
|
|
|
|
|
|
| |
being generated.
Add the most derived vtable pointer to the VTT.
llvm-svn: 86671
|
|
|
|
|
|
| |
This is a pretty minimal test case; I'll make a better one later.
llvm-svn: 86669
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
or a pointer to an NSString, emit a code insertion hint that turns it into an Objective-C string. For example:
@class NSString;
@interface Test
+ (void)test:(NSString *)string;
@end
void g(NSString *a);
void f() {
NSString *a = "Foo";
g("Foo");
[Test test:"Foo"];
}
will produce
t.m:10:17: warning: incompatible pointer types initializing 'char [4]', expected 'NSString *'
NSString *a = "Foo";
^~~~~
@
t.m:11:5: warning: incompatible pointer types passing 'char [4]', expected 'NSString *'
g("Foo");
^~~~~
@
t.m:12:14: warning: incompatible pointer types sending 'char [4]', expected 'NSString *'
[Test test:"Foo"];
^~~~~
@
3 diagnostics generated.
llvm-svn: 86665
|
|
|
|
| |
llvm-svn: 86663
|
|
|
|
|
|
| |
warnings.
llvm-svn: 86662
|
|
|
|
| |
llvm-svn: 86661
|
|
|
|
|
|
| |
the argument is not an expression.
llvm-svn: 86660
|
|
|
|
|
|
| |
has a defualt argument then add a fixit hint that removes the default argument. Fixes PR5444.
llvm-svn: 86659
|
|
|
|
|
|
| |
region, so that arithmetic within a memory chunk is allowed.
llvm-svn: 86652
|
|
|
|
|
|
| |
Start implementing VTTs. WIP.
llvm-svn: 86650
|
|
|
|
|
|
| |
getBaseRegion will be used in another method.
llvm-svn: 86649
|
|
|
|
| |
llvm-svn: 86647
|
|
|
|
| |
llvm-svn: 86643
|
|
|
|
|
|
| |
Patch by Victor Zverovich!
llvm-svn: 86638
|
|
|
|
| |
llvm-svn: 86632
|
|
|
|
| |
llvm-svn: 86629
|
|
|
|
|
|
| |
ApplyHeaderSearchOptions now.
llvm-svn: 86617
|