]> granicus.if.org Git - clang/log
clang
17 years agoInitial checkin of rewriter interface. It is just stubbed out for now.
Chris Lattner [Sat, 15 Sep 2007 22:21:22 +0000 (22:21 +0000)]
Initial checkin of rewriter interface.  It is just stubbed out for now.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41990 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agopretty print some nodes more nicely.
Chris Lattner [Sat, 15 Sep 2007 21:49:37 +0000 (21:49 +0000)]
pretty print some nodes more nicely.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41989 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agofix comment
Chris Lattner [Sat, 15 Sep 2007 21:48:50 +0000 (21:48 +0000)]
fix comment

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41988 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agoStart converting Action methods from Parse-prefix to ActOn-prefix.
Steve Naroff [Sat, 15 Sep 2007 18:49:24 +0000 (18:49 +0000)]
Start converting Action methods from Parse-prefix to ActOn-prefix.

The previous naming scheme was confusing, since it resulted in both the Parser and Action modules having methods with the same name. In addition, the Action module never does any parsing...

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41986 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agoCouple of new classes for objective-c's @protocol typings.
Fariborz Jahanian [Sat, 15 Sep 2007 18:27:26 +0000 (18:27 +0000)]
Couple of new classes for objective-c's @protocol typings.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41985 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agoAdded several files to XCode project file...
Ted Kremenek [Fri, 14 Sep 2007 23:13:28 +0000 (23:13 +0000)]
Added several files to XCode project file...

    Analysis/DataflowSolver.h
    Analysis/UnintializedValues.cpp
    include/clang/Analysis/CFGVarDeclVisitor.h
    include/clang/Analysis/DataflowValues.h
    include/clang/Analysis/UninitializedValues.h

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41974 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agoRename Action::ParseRecordBody() to ProcessFieldDecls(), and add a visibility argument.
Steve Naroff [Fri, 14 Sep 2007 23:09:53 +0000 (23:09 +0000)]
Rename Action::ParseRecordBody() to ProcessFieldDecls(), and add a visibility argument.

Remove Action::ObjcAddVisibilityToIvars(). No need for an extra API when it is trivial to add this info to the previous hook.

In general, I want to start migrating away from having Actions prefixed with "Parse" (which is confusing, since the Action API doesn't do any parsing, per se).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41973 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agoPrototype implementation of new template-based dataflow solver.
Ted Kremenek [Fri, 14 Sep 2007 22:49:21 +0000 (22:49 +0000)]
Prototype implementation of new template-based dataflow solver.

Preliminary implementation of UninitializedValues, which is based on
new solver (doesn't work yet, but compiles).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41970 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agoSeveral improvement to Sema::ParseRecordBody()...
Steve Naroff [Fri, 14 Sep 2007 22:20:54 +0000 (22:20 +0000)]
Several improvement to Sema::ParseRecordBody()...

- Adding a safer prologue. The previous prologue would accept a null and therefore assume we had an interface (which was incorrect).
- Fixed FieldDecl's classof method. This allowed me to simplify some unnecessary casting.
- When diagnosing errors, make sure the FieldDecl/EnclosingDecl are marked as invalid. In addition, don't delete the field...rather, add all fields to the enclosing decl. Memory management can/should be done elsewhere. This code was never "upgraded" to the recently added invalid decl strategy.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41964 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agoPatch to store ivars into interface class object.
Fariborz Jahanian [Fri, 14 Sep 2007 21:08:27 +0000 (21:08 +0000)]
Patch to store ivars into interface class object.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41961 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agoSemantic analysis for objective-c ivars.
Fariborz Jahanian [Fri, 14 Sep 2007 16:27:55 +0000 (16:27 +0000)]
Semantic analysis for objective-c ivars.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41954 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agoNow that the dust has settled on the Decl refactoring, I noticed FieldDecl didn't...
Steve Naroff [Fri, 14 Sep 2007 02:20:46 +0000 (02:20 +0000)]
Now that the dust has settled on the Decl refactoring, I noticed FieldDecl didn't need NextDeclarator.  As a result, I'm removing it.

Removing both slots (NextDeclarator/Next) end up reducing the size of fields/ivars by 40%.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41948 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agoMove Decl::NextDeclarator (w/ setters/getters) down to ScopedDecl/FieldDecl.
Steve Naroff [Thu, 13 Sep 2007 23:52:58 +0000 (23:52 +0000)]
Move Decl::NextDeclarator (w/ setters/getters) down to ScopedDecl/FieldDecl.

Decl is now svelte:-)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41935 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agoPhase 2 of making the Decl class more lightweight...
Steve Naroff [Thu, 13 Sep 2007 21:41:19 +0000 (21:41 +0000)]
Phase 2 of making the Decl class more lightweight...

Move Identifier/Loc instance variables (and associated getters/setters) down from Decl to ScopedDecl/FieldDecl.

Objc AST's can now inherit from Decl without getting instance variables and types that are C specific. For now, I am keeping NextDeclarator, since I believe it may be useful to ObjC. If not, it can be moved later.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41934 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agoPatch for collecting ivars before running action on them.
Fariborz Jahanian [Thu, 13 Sep 2007 20:56:13 +0000 (20:56 +0000)]
Patch for collecting ivars before running action on them.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41932 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agoAdd "ScopedDecl" AST, used by ValueDecl and TypeDecl.
Steve Naroff [Thu, 13 Sep 2007 18:10:37 +0000 (18:10 +0000)]
Add "ScopedDecl" AST, used by ValueDecl and TypeDecl.

This allows us to sink the "Next" field, which isn't used by FieldDecl and ObjcIvarDecl.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41931 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agoupdate to match llvm mainline api
Chris Lattner [Thu, 13 Sep 2007 06:19:18 +0000 (06:19 +0000)]
update to match llvm mainline api

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41926 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agoadjust to a change in the LLVM APIs, this is still very hackish until
Chris Lattner [Thu, 13 Sep 2007 01:26:11 +0000 (01:26 +0000)]
adjust to a change in the LLVM APIs, this is still very hackish until
the front-end adopts APFloat though.  This fixes test/CodeGen/mandel.c

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41908 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agoWhen dumping out errors about unsupported stuff, emit loc info.
Chris Lattner [Thu, 13 Sep 2007 01:17:29 +0000 (01:17 +0000)]
When dumping out errors about unsupported stuff, emit loc info.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41907 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agomake the sourcemgr available through ASTContext.
Chris Lattner [Thu, 13 Sep 2007 01:14:03 +0000 (01:14 +0000)]
make the sourcemgr available through ASTContext.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41906 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agoAdd ASTContext::StringMap<char> to unique selector names.
Steve Naroff [Wed, 12 Sep 2007 23:08:22 +0000 (23:08 +0000)]
Add ASTContext::StringMap<char> to unique selector names.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41894 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agoMinor space tightening.
Ted Kremenek [Wed, 12 Sep 2007 20:28:48 +0000 (20:28 +0000)]
Minor space tightening.
Removed extraneous call to Observer->ObserveStmt when handling DeclRefExprs.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41890 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agoRemove a FIXME. Replace a couple asserts with an appropriate error
Steve Naroff [Wed, 12 Sep 2007 20:13:48 +0000 (20:13 +0000)]
Remove a FIXME. Replace a couple asserts with an appropriate error
diagnostic for illegal initializers.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41889 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agoFixed recursion bug: should call Visit on child instead of VisitStmt.
Ted Kremenek [Wed, 12 Sep 2007 20:11:39 +0000 (20:11 +0000)]
Fixed recursion bug: should call Visit on child instead of VisitStmt.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41888 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agoFixed logic bug in recursion to visiting child statements.
Ted Kremenek [Wed, 12 Sep 2007 20:08:31 +0000 (20:08 +0000)]
Fixed logic bug in recursion to visiting child statements.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41887 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agoAdded files CFGStmtVisitor and DataflowStmtVisitor to XCode project.
Ted Kremenek [Wed, 12 Sep 2007 19:12:02 +0000 (19:12 +0000)]
Added files CFGStmtVisitor and DataflowStmtVisitor to XCode project.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41886 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agoMigrated LiveVariables to use the new DataflowStmtVisitor interface. The code
Ted Kremenek [Wed, 12 Sep 2007 19:10:52 +0000 (19:10 +0000)]
Migrated LiveVariables to use the new DataflowStmtVisitor interface.  The code
is much simpler now.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41885 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agoAdded extensions (subclasses) to the StmtVisitor class that
Ted Kremenek [Wed, 12 Sep 2007 19:09:12 +0000 (19:09 +0000)]
Added extensions (subclasses) to the StmtVisitor class that
are useful for dataflow analysis: CFGStmtVisitor and DataflowStmtVisitor.

CFGStmtVisitor is the same as StmtVisitor is that it has separate visitors
for "root" statements in a CFGBlock (statements that have a designated
slot int the list of statements in a CFGBlock).  It also recognizes statements
that have implicit control-flow, and calls special visitor methods for those.

DataflowStmtVisitor extends CFGStmtVisitor to serve as a template for
implementing transfer functions.  It does a pre-/post-order traversal of
substatements depending on whether we are doing a forward/backward analysis.
It also has special handling for implicit-control-flow statements so that
they are visited only once.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41884 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agoPatch for building method declaration nodes. Also fixed a segfault in cocoa.m due
Fariborz Jahanian [Wed, 12 Sep 2007 18:23:47 +0000 (18:23 +0000)]
Patch for building method declaration nodes. Also fixed a segfault in cocoa.m due
to use of @property.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41880 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agoRemoved clang solution file for VC++, which didn't work properly because of hard...
Hartmut Kaiser [Wed, 12 Sep 2007 15:39:04 +0000 (15:39 +0000)]
Removed clang solution file for VC++, which didn't work properly because of hard coded paths in the llvm project files.
Changed windows detection to use LLVM pp constant.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41878 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agoFix the following bug submitted by Ted Kremenek:
Steve Naroff [Wed, 12 Sep 2007 14:07:44 +0000 (14:07 +0000)]
Fix the following bug submitted by Ted Kremenek:

void func() {
int xx = xx; // incorrectly diagnosed 'xx' as an undeclared identifier.
}

This smallish bug resulted in a largish fix. Here are some highlights:

- Needed to make sure ParseDeclarator is called *before* parsing any
initializer. Removed the "Init" argument to ParseDeclarator.
- Added AddInitializerToDecl() to the Action & Sema classes.
In Sema, this hook is responsible for validating the initializer and
installing it into the respective decl.
- Moved several semantic checks from ParseDeclarator() to
FinalizeDeclaratorGroup(). Previously, this hook was only responsible for
reversing a list. Now it plays a much larger semantic role.

All of the above changes ended up simplifying ParseDeclarator(), which
is goodness...

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41877 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agoAdded static method "CFG::hasImplicitControlFlow".
Ted Kremenek [Tue, 11 Sep 2007 22:08:24 +0000 (22:08 +0000)]
Added static method "CFG::hasImplicitControlFlow".

This method is used to determine if an expression contains implicit
control-flow, and thus appears in a distinct statement slot in the CFG.

For example:

  (1) x = ... ? ... ? ...

  logically becomes:

  (1) ... ? ... : ...  (a unique statement slot for the ternary ?)
  (2) x = [E1]         (where E1 is actually the ConditionalOperator*)

A client of the CFG, when walking the statement at (2), will encounter
E1.  In this case, hasImplicitControlFlow(E1) == true, and the client
will know that the expression E1 is explicitly placed into its own statement
slot to capture the implicit control-flow it has.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41868 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agoFixed bug where ternary expressions and GCC-style conditional expressions
Ted Kremenek [Tue, 11 Sep 2007 21:29:43 +0000 (21:29 +0000)]
Fixed bug where ternary expressions and GCC-style conditional expressions
where not reversing the order of their subexpression blocks.

Added feature where CallExprs are placed in their own statement slot in
a CFGBlock.  Thus we have a designated "return site" within a CFGBlock when
reasoning about function calls.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41866 91177308-0d34-0410-b5e6-96231b3b80d8

17 years ago- Add an ObjcIvarDecl AST node (a subclass of FieldDecl).
Steve Naroff [Tue, 11 Sep 2007 21:17:26 +0000 (21:17 +0000)]
- Add an ObjcIvarDecl AST node (a subclass of FieldDecl).
- Instantiate the node in Sema::ParseField(), based on the type of the TagDecl.
- Add Sema::ObjcAddInstanceVariable(), responsible for adorning/adding the ObjcIvarDecl.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41864 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agoChange ObjcMethodDecl class derivation.
Fariborz Jahanian [Tue, 11 Sep 2007 18:45:55 +0000 (18:45 +0000)]
Change ObjcMethodDecl class derivation.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41860 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agoFor looking at "dead stores" in declarations, we now check to see
Ted Kremenek [Tue, 11 Sep 2007 17:24:14 +0000 (17:24 +0000)]
For looking at "dead stores" in declarations, we now check to see
if the assigned value is a constant expression, e.g.:

int x = 0;

We then check to see if "x" is ever reassigned later.  If so, we don't
emit a warning.  This is because programmers frequently use defensive
programming to make sure a variable has a defined value.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41853 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agoFixed potential NULL dereference when iterating over a chain of Decls.
Ted Kremenek [Tue, 11 Sep 2007 17:00:40 +0000 (17:00 +0000)]
Fixed potential NULL dereference when iterating over a chain of Decls.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41848 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agoget rid of ugly "warning: no newline at end of file"
Gabor Greif [Tue, 11 Sep 2007 15:32:40 +0000 (15:32 +0000)]
get rid of ugly "warning: no newline at end of file"
warnings that some compilers diagnose

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41847 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agoFixed isFunctionPointerType to correctly handle typedefs.
Ted Kremenek [Mon, 10 Sep 2007 22:54:34 +0000 (22:54 +0000)]
Fixed isFunctionPointerType to correctly handle typedefs.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41814 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agoFix the following bug submitted by Justin Handville.
Steve Naroff [Mon, 10 Sep 2007 22:17:00 +0000 (22:17 +0000)]
Fix the following bug submitted by Justin Handville.

int main(int argc, char* argv[])
{
  return 0;
}

After speaking briefly with Chris, we decided this should be a front-end fix.

The fix...have Sema::GetTypeForDeclarator() do the default function/array conversion, as
I outlined in the 9/9 email on this topic.

Since this conversion is done before Sema::ParseParamDeclarator(), I thought I could
remove the conversion from Sema::ParseParamDeclarator(). Unfortunately, this didn't work.
The conversion apparently needs to be done in both places (which doesn't make sense to me).

Will investigate.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41811 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agoSome small tweaks to the recent Objc support...
Steve Naroff [Mon, 10 Sep 2007 20:51:04 +0000 (20:51 +0000)]
Some small tweaks to the recent Objc support...

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41803 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agoEarly patch to collect objective-c methods inserts them in
Fariborz Jahanian [Mon, 10 Sep 2007 20:33:04 +0000 (20:33 +0000)]
Early patch to collect objective-c methods inserts them in
class object.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41801 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agoFixed LiveVariables to no longer track the liveness of function pointers
Ted Kremenek [Mon, 10 Sep 2007 17:36:42 +0000 (17:36 +0000)]
Fixed LiveVariables to no longer track the liveness of function pointers
that refer to direct function calls.

Modified interface of LiveVariables to only track liveness of VarDecls.
This cleans up a bunch of edge cases, and removed the bug just mentioned.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41797 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agoModified dumping of Decl information to including the Decl type.
Ted Kremenek [Mon, 10 Sep 2007 17:32:55 +0000 (17:32 +0000)]
Modified dumping of Decl information to including the Decl type.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41796 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agoAdded "isFunctionPointerType()" so that we can readily see if a DeclRefExpr
Ted Kremenek [Mon, 10 Sep 2007 17:20:54 +0000 (17:20 +0000)]
Added "isFunctionPointerType()" so that we can readily see if a DeclRefExpr
refers to a function.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41795 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agoRenaming of the LiveVariablesAuditor interface. Changed "Auditor" and
Ted Kremenek [Mon, 10 Sep 2007 15:56:38 +0000 (15:56 +0000)]
Renaming of the LiveVariablesAuditor interface.  Changed "Auditor" and
"Audit" to "Observer" and "Observe"

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41794 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agoDon't rely on ADL to find this member, patch by Justin Handville
Chris Lattner [Sat, 8 Sep 2007 01:29:20 +0000 (01:29 +0000)]
Don't rely on ADL to find this member, patch by Justin Handville

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41783 91177308-0d34-0410-b5e6-96231b3b80d8

17 years ago-check-dead-stores now no longer prints out the function declarations
Ted Kremenek [Fri, 7 Sep 2007 23:54:15 +0000 (23:54 +0000)]
-check-dead-stores now no longer prints out the function declarations
for each function.  This was the behavior prior to the following patch:

http://llvm.org/viewvc/llvm-project?view=rev&revision=41779

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41780 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agoRefactored driver options that perform analyses/work over CFGs to use
Ted Kremenek [Fri, 7 Sep 2007 23:47:56 +0000 (23:47 +0000)]
Refactored driver options that perform analyses/work over CFGs to use
"CFGVisitor", which now handles all the boilerplate for iterating over
the function definitions in a translation unit and building the CFGs.
This logic was previously replicated for each driver option that used
CFGs.

The options -dump-cfg, -view-cfg, -check-dead-stores, and
-dump-live-variables now use this refactored code.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41779 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agoFixed compilation on Windows.
Hartmut Kaiser [Fri, 7 Sep 2007 14:34:20 +0000 (14:34 +0000)]
Fixed compilation on Windows.
Silenced a couple of warnings.
Added *.vcproj file for new clangAnalysis library.
Renamed Basic to clangBasic projects.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41767 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agoAdded more checking in "dead stores" for values that are initialized
Ted Kremenek [Thu, 6 Sep 2007 23:39:53 +0000 (23:39 +0000)]
Added more checking in "dead stores" for values that are initialized
but never used.

Fix a bug in LiveVariables where uses on the LHS of self-assign
operators (e.g +=, *=, etc) would not be properly recorded in the
liveness state of the variable.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41757 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agoMinor bug fixes to corner cases where LiveVariables would crash on some CFGs
Ted Kremenek [Thu, 6 Sep 2007 23:25:10 +0000 (23:25 +0000)]
Minor bug fixes to corner cases where LiveVariables would crash on some CFGs
that contained no declarations, or when a variable is declared but never used.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41756 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agoForgot to check in the actual "dead stores" checker in the last commit!
Ted Kremenek [Thu, 6 Sep 2007 23:01:46 +0000 (23:01 +0000)]
Forgot to check in the actual "dead stores" checker in the last commit!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41755 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agoAdded "Dead Stores", a flow-sensitive checker that checks for stores
Ted Kremenek [Thu, 6 Sep 2007 23:00:42 +0000 (23:00 +0000)]
Added "Dead Stores", a flow-sensitive checker that checks for stores
to variables that are no longer live.  This analysis is built on top
of CFGs and the LiveVariables analysis.

changes to driver:
 added driver option "-check-dead-stores" to run the analysis

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41754 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agoLiveVariables:
Ted Kremenek [Thu, 6 Sep 2007 21:26:58 +0000 (21:26 +0000)]
LiveVariables:
 - Finished 99% of analysis logic.  Probably a few bugs.
 - Added querying functions to query liveness.
 - Added better pretty printing of liveness.
 - Added better bookkeeping of per-variable liveness information.
 - Added LiveVariablesAuditor interface, which allows "lazy" querying
   of intra-basic block liveness information.

Driver:
 - Minor cleanups involved in dumping liveness information.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41753 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agoThe goal of this commit is to get just enough Sema support to recognize Objective...
Steve Naroff [Thu, 6 Sep 2007 21:24:23 +0000 (21:24 +0000)]
The goal of this commit is to get just enough Sema support to recognize Objective-C classes
as types. That said, the AST nodes ObjcInterfaceDecl, ObjcInterfaceType, and ObjcClassDecl are *very*
preliminary.

The good news is we no longer need -parse-noop (aka MinimalActions) to parse cocoa.m.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41752 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agoAdded LabelLoc to GotoStmt to record the source location of the label token
Ted Kremenek [Thu, 6 Sep 2007 17:11:52 +0000 (17:11 +0000)]
Added LabelLoc to GotoStmt to record the source location of the label token
in the actual GotoStmt.

Fixed bug where GotoStmt::getSourceRange incorrectly used the target LabelStmt
to compute its extent.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41745 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agoAdded libClangAnalysis
Ted Kremenek [Thu, 6 Sep 2007 15:58:13 +0000 (15:58 +0000)]
Added libClangAnalysis

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41742 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agoAdded an early implementation of Live-Variables analysis built on
Ted Kremenek [Thu, 6 Sep 2007 00:17:54 +0000 (00:17 +0000)]
Added an early implementation of Live-Variables analysis built on
source-level CFGs.  This code may change significantly in the near
future as we explore different means to implement dataflow analyses.

Added a driver option, -dump-live-variables, to view the output of
live variable analysis.  This output is very ALPHA; it will be improved shortly.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41737 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agoremove the FATAL classifier.
Chris Lattner [Thu, 6 Sep 2007 00:16:35 +0000 (00:16 +0000)]
remove the FATAL classifier.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41736 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agoremove sorry.
Chris Lattner [Thu, 6 Sep 2007 00:14:09 +0000 (00:14 +0000)]
remove sorry.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41734 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agoStart implementing Actions interface for ObjC classes, instance variables, and methods.
Steve Naroff [Wed, 5 Sep 2007 23:30:30 +0000 (23:30 +0000)]
Start implementing Actions interface for ObjC classes, instance variables, and methods.

Lot's of small changes to the parser.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41732 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agoPatch for parsing objective-c style method calls.
Fariborz Jahanian [Wed, 5 Sep 2007 23:08:20 +0000 (23:08 +0000)]
Patch for parsing objective-c style method calls.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41731 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agoMoved tracking of CFG block IDs into the CFG class.
Ted Kremenek [Wed, 5 Sep 2007 20:02:05 +0000 (20:02 +0000)]
Moved tracking of CFG block IDs into the CFG class.
Added CFG::getNumBlockIDs() to query the number of distinct block ids created.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41724 91177308-0d34-0410-b5e6-96231b3b80d8

17 years ago1. Fix parsing of method prototype involving c-style argument declarations.
Fariborz Jahanian [Wed, 5 Sep 2007 19:52:07 +0000 (19:52 +0000)]
1. Fix parsing of method prototype involving c-style argument declarations.
2. Fixes all allowable key-words used as selectors.
3. Template to do the messaging parse.
4. A test case for all allowable selector names.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41723 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agoFixed a typo pointed out by Anders Calrsson.
Fariborz Jahanian [Tue, 4 Sep 2007 21:42:12 +0000 (21:42 +0000)]
Fixed a typo pointed out by Anders Calrsson.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41716 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agoSimplified initializer semantic analysis by adding the following 2 methods:
Steve Naroff [Tue, 4 Sep 2007 21:13:33 +0000 (21:13 +0000)]
Simplified initializer semantic analysis by adding the following 2 methods:

- ArrayType::getBaseType(), and
- ConstantArrayType::getMaximumElements().

Wanted to do this cleanup before adding structure support, which will add more complexity.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41715 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agoPatch to parse objective-c's @compatibility_alias directive.
Fariborz Jahanian [Tue, 4 Sep 2007 19:26:51 +0000 (19:26 +0000)]
Patch to parse objective-c's @compatibility_alias directive.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41709 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agoSet eol and mime type properties for VC8 build files
Hartmut Kaiser [Tue, 4 Sep 2007 19:15:17 +0000 (19:15 +0000)]
Set eol and mime type properties for VC8 build files

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41708 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agoUpdated VC8 project files.
Hartmut Kaiser [Tue, 4 Sep 2007 19:06:30 +0000 (19:06 +0000)]
Updated VC8 project files.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41707 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agoUpdated calls to CreateGEP to new interface in LLVM mainline.
Ted Kremenek [Tue, 4 Sep 2007 17:20:08 +0000 (17:20 +0000)]
Updated calls to CreateGEP to new interface in LLVM mainline.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41704 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agodisable this for now.
Chris Lattner [Tue, 4 Sep 2007 16:49:09 +0000 (16:49 +0000)]
disable this for now.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41701 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agoMake sure initializer type promotions get propagated.
Steve Naroff [Tue, 4 Sep 2007 14:36:54 +0000 (14:36 +0000)]
Make sure initializer type promotions get propagated.

This fixes a recent regression with Codegen/mandel.c.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41696 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agoupdates (?) to the vc++ files, patch by Hartmut Kaiser
Chris Lattner [Tue, 4 Sep 2007 02:46:31 +0000 (02:46 +0000)]
updates (?) to the vc++ files, patch by Hartmut Kaiser

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41695 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agosilence VC++ warnings, patch by Hartmut Kaiser
Chris Lattner [Tue, 4 Sep 2007 02:46:00 +0000 (02:46 +0000)]
silence VC++ warnings, patch by Hartmut Kaiser

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41694 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agoSilence VC++ warnings, patch by Hartmut Kaiser
Chris Lattner [Tue, 4 Sep 2007 02:45:27 +0000 (02:45 +0000)]
Silence VC++ warnings, patch by Hartmut Kaiser

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41693 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agoeliminate some VC++ warnings, patch contributed by Hartmut Kaiser
Chris Lattner [Tue, 4 Sep 2007 02:34:27 +0000 (02:34 +0000)]
eliminate some VC++ warnings, patch contributed by Hartmut Kaiser

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41692 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agoadd a VC++ solution file, contributed by Hartmut Kaiser
Chris Lattner [Tue, 4 Sep 2007 02:31:11 +0000 (02:31 +0000)]
add a VC++ solution file, contributed by Hartmut Kaiser

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41691 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agoMore fun with initializers!
Steve Naroff [Tue, 4 Sep 2007 02:20:04 +0000 (02:20 +0000)]
More fun with initializers!

- Fixed many bugs, enhanced test case considerably, added a diagnostic, etc.
- Refactored CheckInitList() into CheckVariableInitList()/CheckConstantInitList().
- Added CheckInitExpr().
- Support for multi-dimensional arrays looking good.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41690 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agoVC++ doesn't define S_ISDIR
Chris Lattner [Mon, 3 Sep 2007 18:37:14 +0000 (18:37 +0000)]
VC++ doesn't define S_ISDIR

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41688 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agoAdd a method required by the VC++ STL, patch by Hartmut Kaiser!
Chris Lattner [Mon, 3 Sep 2007 18:31:57 +0000 (18:31 +0000)]
Add a method required by the VC++ STL, patch by Hartmut Kaiser!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41687 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agoAdd #include required on win32.
Chris Lattner [Mon, 3 Sep 2007 18:30:32 +0000 (18:30 +0000)]
Add #include required on win32.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41686 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agoEliminate some VC++ warnings, patch by Hartmut Kaiser!
Chris Lattner [Mon, 3 Sep 2007 18:28:41 +0000 (18:28 +0000)]
Eliminate some VC++ warnings, patch by Hartmut Kaiser!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41685 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agoAdd #ifdefs to make the source portable to windows. Patch contributed
Chris Lattner [Mon, 3 Sep 2007 18:24:56 +0000 (18:24 +0000)]
Add #ifdefs to make the source portable to windows.  Patch contributed
by Hartmut Kaiser!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41684 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agoinitial checkin of vc++ project files, contributed by
Chris Lattner [Mon, 3 Sep 2007 18:21:31 +0000 (18:21 +0000)]
initial checkin of vc++ project files, contributed by
Hartmut Kaiser!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41683 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agoFinish getting "array-init.c" to work properly.
Steve Naroff [Mon, 3 Sep 2007 01:24:23 +0000 (01:24 +0000)]
Finish getting "array-init.c" to work properly.

Array scalar initialization is now is reasonable shape.

Next step, structure and array of structure initializers.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41681 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agoMore progress on array initializers.
Steve Naroff [Sun, 2 Sep 2007 20:30:18 +0000 (20:30 +0000)]
More progress on array initializers.

- Added Expr::isConstantExpr().
- Added type checking for InitListExpr elements.
- Added diagnostic for trying to initialize a variable sized object.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41674 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agoMore semantic analysis of initializers.
Steve Naroff [Sun, 2 Sep 2007 15:34:30 +0000 (15:34 +0000)]
More semantic analysis of initializers.

Added 2 errors and one warning, updated test case.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41672 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agoStart implementing semantic analysis for C initializers.
Steve Naroff [Sun, 2 Sep 2007 02:04:30 +0000 (02:04 +0000)]
Start implementing semantic analysis for C initializers.

Step 1: Start instantiating InitListExpr's.
Step 2: Call newly added function Sema::CheckInitializer() from Sema::ParseDeclarator().
Step 3: Give InitListExpr's a preliminary type.
Step 4: Start emitting diagnostics for simple assignments.

Note:

As a result of step 1, the CodeGen/mandel.c test asserts "Unimplemented agg expr!", which is expected.

As a result of step 4, the test below now fails. This isn't expected and needs to be investigated (it appears type checking for C++ references is flawed in some way).

******************** TEST 'Sema/cxx-references.cpp' FAILED! ********************
Command:
 clang -fsyntax-only Sema/cxx-references.cpp
Output:
Sema/cxx-references.cpp:8:12: warning: incompatible pointer types assigning 'int &*' to 'int *'
  int *p = &r;
           ^~
Sema/cxx-references.cpp:10:20: error: incompatible types assigning 'int (int)' to 'int (&)(int)'
  int (&rg)(int) = g;
                   ^
Sema/cxx-references.cpp:13:18: error: incompatible types assigning 'int [3]' to 'int (&)[3]'
  int (&ra)[3] = a;
                 ^
Sema/cxx-references.cpp:16:14: error: incompatible types assigning 'int *' to 'int *&'
  int *& P = Q;
             ^
4 diagnostics generated.
******************** TEST 'Sema/cxx-references.cpp' FAILED! ********************

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41671 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agoFinish converting SwitchStmt AST to source ranges.
Steve Naroff [Sat, 1 Sep 2007 21:08:38 +0000 (21:08 +0000)]
Finish converting SwitchStmt AST to source ranges.
Move DumpSourceRange() to DumpStmt().

Now -parse-ast-dump will display source range info for all stmts/exprs.

One day we should implement the source range protocol for Decls.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41670 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agoPatch to parse @implementation prologue, method definitions,
Fariborz Jahanian [Sat, 1 Sep 2007 00:26:16 +0000 (00:26 +0000)]
Patch to parse @implementation prologue, method definitions,
objc2's @synthesize and @dynamic.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41667 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agoConvert more statments over to SourceRanges...
Steve Naroff [Fri, 31 Aug 2007 23:49:30 +0000 (23:49 +0000)]
Convert more statments over to SourceRanges...

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41666 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agoMove SourceRange protocol from Expr->Stmt.
Steve Naroff [Fri, 31 Aug 2007 23:28:33 +0000 (23:28 +0000)]
Move SourceRange protocol from Expr->Stmt.

Converted many of the statements over. Still a hanful left...

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41663 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agoadd stmtexpr support for aggregates
Chris Lattner [Fri, 31 Aug 2007 22:54:14 +0000 (22:54 +0000)]
add stmtexpr support for aggregates

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41662 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agoadd support for complex stmtexpr's
Chris Lattner [Fri, 31 Aug 2007 22:51:38 +0000 (22:51 +0000)]
add support for complex stmtexpr's

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41661 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agoGeneralize RValue to handle complex better, generalize EmitCompoundStmt to
Chris Lattner [Fri, 31 Aug 2007 22:49:20 +0000 (22:49 +0000)]
Generalize RValue to handle complex better, generalize EmitCompoundStmt to
support any sort of expr, add a new EmitAnyExpr routine.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41660 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agoFixed missing '(' and ')' characters in (CFG) pretty-printing of
Ted Kremenek [Fri, 31 Aug 2007 22:47:06 +0000 (22:47 +0000)]
Fixed missing '(' and ')' characters in (CFG) pretty-printing of
statement expressions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41659 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agoAdded better pretty printing in CFGs for __builtin_choose_expr
Ted Kremenek [Fri, 31 Aug 2007 22:29:13 +0000 (22:29 +0000)]
Added better pretty printing in CFGs for __builtin_choose_expr

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41658 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agoFurther cleanups in CFG printing for comma expressions, statement expressions, and...
Ted Kremenek [Fri, 31 Aug 2007 22:26:13 +0000 (22:26 +0000)]
Further cleanups in CFG printing for comma expressions, statement expressions, and indirect gotos.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41657 91177308-0d34-0410-b5e6-96231b3b80d8

17 years agoimplement code generation for scalar stmt expressions.
Chris Lattner [Fri, 31 Aug 2007 22:09:40 +0000 (22:09 +0000)]
implement code generation for scalar stmt expressions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41656 91177308-0d34-0410-b5e6-96231b3b80d8