]> granicus.if.org Git - clang/log
clang
16 years agofix rdar://6288301: custom warnings don't respect -Werror.
Chris Lattner [Fri, 17 Oct 2008 21:24:47 +0000 (21:24 +0000)]
fix rdar://6288301: custom warnings don't respect -Werror.

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

16 years agoEnhance "Assumption" logic in BasicConstraintManager when reasoning about regions...
Ted Kremenek [Fri, 17 Oct 2008 21:22:20 +0000 (21:22 +0000)]
Enhance "Assumption" logic in BasicConstraintManager when reasoning about regions and symbolic regions.  When assuming whether or not a location is non-null, walk up the region hierarchy until we hit a symbolic region (and test it for null).  This may not be the end all solution, as the notion of what a "symbolic region" is really belongs in the specific subclass of StoreManager.

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

16 years agoAdd pretty-printing support for FieldRegions.
Ted Kremenek [Fri, 17 Oct 2008 21:05:44 +0000 (21:05 +0000)]
Add pretty-printing support for FieldRegions.

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

16 years agoEmit error unsupported when asm string conversion fails instead of
Daniel Dunbar [Fri, 17 Oct 2008 20:58:01 +0000 (20:58 +0000)]
Emit error unsupported when asm string conversion fails instead of
assert.

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

16 years agoFixed an elusive caching bug in ExplodedGraph construction when a PostStmtKind was...
Ted Kremenek [Fri, 17 Oct 2008 20:49:23 +0000 (20:49 +0000)]
Fixed an elusive caching bug in ExplodedGraph construction when a PostStmtKind was used instead of a PostStoreKind.

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

16 years agoTest now passes.
Ted Kremenek [Fri, 17 Oct 2008 20:29:05 +0000 (20:29 +0000)]
Test now passes.

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

16 years ago- constify some uses of MemRegion* (MemRegion should be immutable).
Ted Kremenek [Fri, 17 Oct 2008 20:28:54 +0000 (20:28 +0000)]
- constify some uses of MemRegion* (MemRegion should be immutable).
- Added new region "SymbolicRegion", which maps symbol values to the region domain.
- Enhanced BasicStore::getFieldLValue() to return a FieldRegion (using SymbolicRegion)
- Added some utility methods to GRState for fetch svals from the store.
- Fixed regression in CheckNSError (we weren't getting the value bound to the parameter)

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

16 years agoRemove unneeded EncodingRecordTypes argument to getObjCEncodingForType.
Daniel Dunbar [Fri, 17 Oct 2008 20:21:44 +0000 (20:21 +0000)]
Remove unneeded EncodingRecordTypes argument to getObjCEncodingForType.

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

16 years agoFixed vec_set_v2di signature
Mon P Wang [Fri, 17 Oct 2008 17:39:34 +0000 (17:39 +0000)]
Fixed vec_set_v2di signature

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

16 years ago"Implement" GRExprEngine::VisitLValue for ObjCPropertyRefExpr. This is only a bandid...
Ted Kremenek [Fri, 17 Oct 2008 17:24:14 +0000 (17:24 +0000)]
"Implement" GRExprEngine::VisitLValue for ObjCPropertyRefExpr.  This is only a bandid; we need to properly handle properties by using locv/nonloc objects and specially handling property assignments in the transfer function for BinaryOperator.

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

16 years agoMore Obj-C type encoding improvements.
Daniel Dunbar [Fri, 17 Oct 2008 16:17:37 +0000 (16:17 +0000)]
More Obj-C type encoding improvements.
 - Encode unions and bit-fields correctly.
 - Accept option to name record fields (used for NeXT runtime).

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

16 years agoChange CGDebugInfo::setLocation to just ignore invalid locations. This
Daniel Dunbar [Fri, 17 Oct 2008 16:15:48 +0000 (16:15 +0000)]
Change CGDebugInfo::setLocation to just ignore invalid locations. This
simplifies clients.

Also, add assert that RegionStack is empty when the CGDebugInfo is
destroyed.

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

16 years agoExercise #pragma pack(pop, <width>) in test case.
Daniel Dunbar [Fri, 17 Oct 2008 16:05:47 +0000 (16:05 +0000)]
Exercise #pragma pack(pop, <width>) in test case.

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

16 years agoFix bug in Obj-C type encoding for structures.
Daniel Dunbar [Fri, 17 Oct 2008 07:30:50 +0000 (07:30 +0000)]
Fix bug in Obj-C type encoding for structures.
 - Mechanism for detecting if a structure should be expanded wasn't
   reliable. Simplified by just keeping track of what we should be
   expanding.

 - This fixes a bug in using NSInvocation to invoke a method which
   returned a structure, which in used by Key Value Observing, which
   in the end, caused a miscompile in poor little Sketch.

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

16 years agoAnonymous structures print as '?=' in Obj-C type encoding.
Daniel Dunbar [Fri, 17 Oct 2008 06:22:57 +0000 (06:22 +0000)]
Anonymous structures print as '?=' in Obj-C type encoding.

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

16 years agoThis patch did the following renaming. There should be no functional changes.
Zhongxing Xu [Fri, 17 Oct 2008 05:57:07 +0000 (05:57 +0000)]
This patch did the following renaming. There should be no functional changes.
RVal => SVal
LVal => Loc
NonLVal => NonLoc
lval => loc
nonlval => nonloc

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

16 years agoAdd test case for array and struct variable lvalue evaluation.
Zhongxing Xu [Fri, 17 Oct 2008 05:19:52 +0000 (05:19 +0000)]
Add test case for array and struct variable lvalue evaluation.

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

16 years agoNeXT: Use objc_msgSend_fpret for calling functions which return
Daniel Dunbar [Fri, 17 Oct 2008 03:24:53 +0000 (03:24 +0000)]
NeXT: Use objc_msgSend_fpret for calling functions which return
floating point. This is only correct for x86-32 at the moment.

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

16 years agoGet array's lvalue through standard interface.
Zhongxing Xu [Fri, 17 Oct 2008 02:20:14 +0000 (02:20 +0000)]
Get array's lvalue through standard interface.

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

16 years agoReturn the corresponding MemRegionVal for both rvalue and lvalue of array of
Zhongxing Xu [Fri, 17 Oct 2008 02:14:42 +0000 (02:14 +0000)]
Return the corresponding MemRegionVal for both rvalue and lvalue of array of
type T.

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

16 years agoArray and struct variables do have lvalue. For example,
Zhongxing Xu [Fri, 17 Oct 2008 01:51:27 +0000 (01:51 +0000)]
Array and struct variables do have lvalue. For example,
struct s {};
void f() {
  int a[10];
  int (*p)[10];
  p = &a;
  (*p)[3] =1;

  struct s d;
  struct s *q;
  q = &d;
}

We return the corresponding MemRegionVal for them.

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

16 years agoQuick patch for PR2784, assert genereting debug info for opaque
Daniel Dunbar [Fri, 17 Oct 2008 01:07:56 +0000 (01:07 +0000)]
Quick patch for PR2784, assert genereting debug info for opaque
structure.
 - I'm not sure yet about the behavior, but this at least prevents the
   crash.

Add some asserts on RegionStack usage.

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

16 years agoRemove an untrue assertion: lval::FuncVals can be returned in both rvalue and lvalue...
Ted Kremenek [Fri, 17 Oct 2008 00:55:33 +0000 (00:55 +0000)]
Remove an untrue assertion: lval::FuncVals can be returned in both rvalue and lvalue contexts.

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

16 years agoMark these tests XFAIL. We need to add back assumption logic when doing array and...
Ted Kremenek [Fri, 17 Oct 2008 00:51:39 +0000 (00:51 +0000)]
Mark these tests XFAIL.  We need to add back assumption logic when doing array and field accesses.

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

16 years agoRemove lval::FieldOffset, lval::ArrayOffset. These will be replaced with regions.
Ted Kremenek [Fri, 17 Oct 2008 00:51:01 +0000 (00:51 +0000)]
Remove lval::FieldOffset, lval::ArrayOffset. These will be replaced with regions.
Remove GRExprEngine::getLVal and RValues::MakeVal.
Enhance StoreManager "GetLValue" methods to dispatch for specific kinds of lvalue queries, as opposed to interogating the expression tree (GRExprEngine already does this).

Added FIXMEs.  In particular, we no longer "assume" that a base pointer in a field/array access is null (this logic was removed).  Perhaps we should do this when fetching the lvalue for fields and array elements?

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

16 years agoAdd transfer function support for ObjCIvarRefExpr.
Ted Kremenek [Fri, 17 Oct 2008 00:03:18 +0000 (00:03 +0000)]
Add transfer function support for ObjCIvarRefExpr.

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

16 years agoIn C++, an empty parameter list indicates a function that takes no parameters.
Argyrios Kyrtzidis [Thu, 16 Oct 2008 17:31:08 +0000 (17:31 +0000)]
In C++, an empty parameter list indicates a function that takes no parameters.

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

16 years agoAdd basic FreeBSD target support, patch by Roman Divacky!
Chris Lattner [Thu, 16 Oct 2008 17:04:31 +0000 (17:04 +0000)]
Add basic FreeBSD target support, patch by Roman Divacky!

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

16 years agoAdd --disable-free flag to clang.
Daniel Dunbar [Thu, 16 Oct 2008 16:54:18 +0000 (16:54 +0000)]
Add --disable-free flag to clang.
 - Disables the freeing of the ASTContext and the TranslationUnit
   after parsing & sema.
 - Primarily for timing the impact on -fsyntax-only timings.

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

16 years agoUsing dyn_cast_or_null here is redundant, use dyn_cast instead.
Argyrios Kyrtzidis [Thu, 16 Oct 2008 16:50:47 +0000 (16:50 +0000)]
Using dyn_cast_or_null here is redundant, use dyn_cast instead.

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

16 years agoFix <rdar://problem/6239726> Parser rejects: type of property 'list' does not match...
Steve Naroff [Thu, 16 Oct 2008 14:59:30 +0000 (14:59 +0000)]
Fix <rdar://problem/6239726> Parser rejects: type of property 'list' does not match type of ivar
and
http://llvm.org/bugs/show_bug.cgi?id=2893

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

16 years agoSpeed up NumericLiteralParser::GetIntegerValue.
Daniel Dunbar [Thu, 16 Oct 2008 07:32:01 +0000 (07:32 +0000)]
Speed up NumericLiteralParser::GetIntegerValue.
 - Implement fast path when value easily fits in a uint64.
 - ~6x faster, translates to 1-2% on Cocoa.h

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

16 years agoSimplify overflow-on-add check in NumericLiteralParser::GetIntegerValue.
Daniel Dunbar [Thu, 16 Oct 2008 06:39:30 +0000 (06:39 +0000)]
Simplify overflow-on-add check in NumericLiteralParser::GetIntegerValue.

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

16 years agoThis is the first step to build a better evaluation model for GRExprEngine. A
Zhongxing Xu [Thu, 16 Oct 2008 06:09:51 +0000 (06:09 +0000)]
This is the first step to build a better evaluation model for GRExprEngine.  A
new VisitLValue method is added to replace the old VisitLVal. The semantics
model becomes more explicit to separate rvalue evaluation from lvalue
evaluation.

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

16 years agoTeach tryEvaluate that fabs, copysign, and unary +/- are constants for
Daniel Dunbar [Thu, 16 Oct 2008 03:51:50 +0000 (03:51 +0000)]
Teach tryEvaluate that fabs, copysign, and unary +/- are constants for
floats.
 - With testcase, which also has some other things GCC folds but we
   don't commented out in it.

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

16 years agoImplement #pragma pack use in structure packing. The general approach
Daniel Dunbar [Thu, 16 Oct 2008 02:34:03 +0000 (02:34 +0000)]
Implement #pragma pack use in structure packing. The general approach
is to encode the state of the #pragma pack stack as an attribute when
the structure is declared.

 - Extend PackedAttr to take an alignment (in bits), and reuse for
   both __attribute__((packed)) (which takes no argument, instead
   packing tightly (to "minimize the memory required") and for #pragma
   pack (which allows specification of the maximum alignment in
   bytes). __attribute__((packed)) is just encoded as Alignment=1.

   This conflates two related but different mechanisms, but it didn't
   seem worth another attribute.

 - I have attempted to follow the MSVC semantics as opposed to the gcc
   ones, since if I understand correctly #pragma pack originated with
   MSVC. The semantics are generally equivalent except when the stack
   is altered during the definition of a structure; its not clear if
   anyone does this in practice. See testcase if curious.

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

16 years agoccc: support -Xlinker
Daniel Dunbar [Thu, 16 Oct 2008 00:10:28 +0000 (00:10 +0000)]
ccc: support -Xlinker

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

16 years agoIssue a warning when there's an ambiguous function declarator (that could be a direct...
Argyrios Kyrtzidis [Wed, 15 Oct 2008 23:21:32 +0000 (23:21 +0000)]
Issue a warning when there's an ambiguous function declarator (that could be a direct initializer for a variable defition).
Idea originated from here: http://thread.gmane.org/gmane.comp.gcc.devel/101524

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

16 years agoccc: support -fsyntax-only, add some more darwin options, support
Daniel Dunbar [Wed, 15 Oct 2008 21:52:00 +0000 (21:52 +0000)]
ccc: support -fsyntax-only, add some more darwin options, support
logging of actions.

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

16 years agoFix this bug:
Argyrios Kyrtzidis [Wed, 15 Oct 2008 20:23:22 +0000 (20:23 +0000)]
Fix this bug:

typedef int f();
struct S {
   f *x; // incorrectly assuming this is function decl, leading to failed assertions.
};

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

16 years agoAdd TokenRewriter to VC++ project.
Steve Naroff [Wed, 15 Oct 2008 19:52:33 +0000 (19:52 +0000)]
Add TokenRewriter to VC++ project.

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

16 years agoAdd RewriteTest.cpp to VC++ project.
Steve Naroff [Wed, 15 Oct 2008 19:49:15 +0000 (19:49 +0000)]
Add RewriteTest.cpp to VC++ project.

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

16 years agoTighten up blocks rewriter to handle casts and some other interesting cases.
Steve Naroff [Wed, 15 Oct 2008 18:38:58 +0000 (18:38 +0000)]
Tighten up blocks rewriter to handle casts and some other interesting cases.

This fixes <rdar://problem/6289007> clang block rewriter: ^ in cast is not rewritten.

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

16 years agoUse BatchEmitOwnedPtrs for writing multiple child exprs, per review.
Daniel Dunbar [Wed, 15 Oct 2008 17:52:29 +0000 (17:52 +0000)]
Use BatchEmitOwnedPtrs for writing multiple child exprs, per review.

Also added serialization support to OverloadExpr.

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

16 years agoAdded pinsrd, pinsrq, and some other vector intrinsics
Mon P Wang [Wed, 15 Oct 2008 06:18:34 +0000 (06:18 +0000)]
Added pinsrd, pinsrq, and some other vector intrinsics

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

16 years agoEnhance dead store checker to not flag preincrements to dead variables where the...
Ted Kremenek [Wed, 15 Oct 2008 05:23:41 +0000 (05:23 +0000)]
Enhance dead store checker to not flag preincrements to dead variables where the preincrement is a subexpression, e.g. foo(++x);  This can cause false negatives, but will remove a whole class of false positives.

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

16 years agoSimplify handling of struct/union/class tags.
Argyrios Kyrtzidis [Wed, 15 Oct 2008 00:42:39 +0000 (00:42 +0000)]
Simplify handling of struct/union/class tags.
Instead of using two sets of Decl kinds (Struct/Union/Class and CXXStruct/CXXUnion/CXXClass), use one 'Record' and one 'CXXRecord' Decl kind and make tag kind a property of TagDecl.
Cleans up the code a bit and better reflects that Decl class structure.

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

16 years agoTest commit.
Daniel Dunbar [Wed, 15 Oct 2008 00:26:06 +0000 (00:26 +0000)]
Test commit.

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

16 years agoDowngrade incompatibilities with objc qualified types (e.g. id <P>) to warnings.
Steve Naroff [Tue, 14 Oct 2008 22:18:38 +0000 (22:18 +0000)]
Downgrade incompatibilities with objc qualified types (e.g. id <P>) to warnings.
Note: One day, we should consider moving the actual diags to ObjCQualifiedIdTypesAreCompatible(), since it has more information on the actual problem. GCC currently emits slightly more instructive errors for some cases involving protocols. I added a FIXME to the code.

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

16 years agoFix const qualifiers on ProtocolQualifierListTy.
Daniel Dunbar [Tue, 14 Oct 2008 20:22:44 +0000 (20:22 +0000)]
Fix const qualifiers on ProtocolQualifierListTy.

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

16 years agoRevert my previous change, got stupidly confused with my local changes.
Argyrios Kyrtzidis [Tue, 14 Oct 2008 18:28:48 +0000 (18:28 +0000)]
Revert my previous change, got stupidly confused with my local changes.

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

16 years agoFix a call to Sema::LookupDecl that had incorrect parameters.
Argyrios Kyrtzidis [Tue, 14 Oct 2008 17:28:09 +0000 (17:28 +0000)]
Fix a call to Sema::LookupDecl that had incorrect parameters.

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

16 years agoAdd serialization support in several missing places.
Daniel Dunbar [Tue, 14 Oct 2008 16:57:09 +0000 (16:57 +0000)]
Add serialization support in several missing places.

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

16 years agoMove Type::EmitImpl into header, add FIXME to make abstract.
Daniel Dunbar [Tue, 14 Oct 2008 16:55:17 +0000 (16:55 +0000)]
Move Type::EmitImpl into header, add FIXME to make abstract.

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

16 years agoFix typo in testcase.
Daniel Dunbar [Tue, 14 Oct 2008 16:46:03 +0000 (16:46 +0000)]
Fix typo in testcase.

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

16 years agoadd a testcase.
Chris Lattner [Tue, 14 Oct 2008 06:32:07 +0000 (06:32 +0000)]
add a testcase.

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

16 years agoFix test suite regression, getFloatTypeSemantics shouldn't be called
Daniel Dunbar [Tue, 14 Oct 2008 05:41:12 +0000 (05:41 +0000)]
Fix test suite regression, getFloatTypeSemantics shouldn't be called
on non-float types.

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

16 years agoAdd Sema implementation of #pragma pack stack.
Daniel Dunbar [Tue, 14 Oct 2008 05:35:18 +0000 (05:35 +0000)]
Add Sema implementation of #pragma pack stack.
 - Follows the MSVC (original) implementation, including support of
   pack(show) (useful for testing).
 - Implements support for named pack records which gcc seems to
   ignore (or implements incorrectly).
 - Not currently wired to anything, only functionality change is the
   type checking of the pragma.

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

16 years agoUse 'realpath' to resolve the absolute path to clang and ccc-analyzer.
Ted Kremenek [Mon, 13 Oct 2008 21:46:42 +0000 (21:46 +0000)]
Use 'realpath' to resolve the absolute path to clang and ccc-analyzer.
Add "-analyze-headers" option to scan-build that passes the option -analyzer-opt-analyze-headers to clang.

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

16 years agoLift out ABIInfo abstract base class.
Daniel Dunbar [Mon, 13 Oct 2008 17:02:26 +0000 (17:02 +0000)]
Lift out ABIInfo abstract base class.
 - Currently still lives in CGCall.cpp but is intended to be the
   target specific place for hooking ABI information.
 - Select ABIInfo to use based on Target's prefix and pointer width.

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

16 years agoMore const-ness goodness.
Argyrios Kyrtzidis [Sun, 12 Oct 2008 18:45:56 +0000 (18:45 +0000)]
More const-ness goodness.

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

16 years agoImprove the const-ness of a few methods.
Argyrios Kyrtzidis [Sun, 12 Oct 2008 18:40:01 +0000 (18:40 +0000)]
Improve the const-ness of a few methods.
No functionality change.

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

16 years agoImplement more efficient Decl <-> DeclContext conversions.
Argyrios Kyrtzidis [Sun, 12 Oct 2008 16:14:48 +0000 (16:14 +0000)]
Implement more efficient Decl <-> DeclContext conversions.
When the static type on the Decl side is a subclass of DeclContext the compiler will use a "inlinable" static_cast, instead of always using an out-of-line function call.

Note, though, that the isa<> check still uses an out-of-line function call.

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

16 years agomake the -rewrite-test a bit more interesting: it now
Chris Lattner [Sun, 12 Oct 2008 06:09:52 +0000 (06:09 +0000)]
make the -rewrite-test a bit more interesting: it now
wraps comments in <i> tags.  Extend rewrite tokens to support
this minimal functionality.

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

16 years agostart implementing a token rewriter. At this point, it just reads in a file
Chris Lattner [Sun, 12 Oct 2008 05:44:03 +0000 (05:44 +0000)]
start implementing a token rewriter.  At this point, it just reads in a file
and lets a client iterate over it.

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

16 years agoAdd a new -rewrite-test option, which is basically a
Chris Lattner [Sun, 12 Oct 2008 05:29:20 +0000 (05:29 +0000)]
Add a new -rewrite-test option, which is basically a
playground to experiment with some new rewriter approaches. For now
it is probably the most complex version of 'cat' ever invented.

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

16 years agoAdd a new -dump-raw-tokens option, which allows us to see raw tokens.
Chris Lattner [Sun, 12 Oct 2008 05:03:36 +0000 (05:03 +0000)]
Add a new -dump-raw-tokens option, which allows us to see raw tokens.
Rename -dumptokens to -dump-tokens.

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

16 years agoChange FormTokenWithChars to take the token kind to form, since all clients
Chris Lattner [Sun, 12 Oct 2008 04:51:35 +0000 (04:51 +0000)]
Change FormTokenWithChars to take the token kind to form, since all clients
were setting a kind and then forming it.  This is just a minor API cleanup,
no functionality change.

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

16 years agoWhen in keep whitespace mode, make sure to return block comments that are
Chris Lattner [Sun, 12 Oct 2008 04:19:49 +0000 (04:19 +0000)]
When in keep whitespace mode, make sure to return block comments that are
unterminated.

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

16 years agoChange SkipBlockComment and SkipBCPLComment to return true when in
Chris Lattner [Sun, 12 Oct 2008 04:15:42 +0000 (04:15 +0000)]
Change SkipBlockComment and SkipBCPLComment to return true when in
keep comment mode, instead of returning false.  This matches SkipWhitespace.

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

16 years agoAdd a new mode to the lexer which enables it to return all characters,
Chris Lattner [Sun, 12 Oct 2008 04:05:48 +0000 (04:05 +0000)]
Add a new mode to the lexer which enables it to return all characters,
even whitespace, as tokens from the file.  This is enabled with
L->SetKeepWhitespaceMode(true) on a raw lexer.  In this mode, you too
can use clang as a really complex version of 'cat' with code like this:

  Lexer RawLex(SourceLocation::getFileLoc(SM.getMainFileID(), 0),
               PP.getLangOptions(), File.first, File.second);

  RawLex.SetKeepWhitespaceMode(true);

  Token RawTok;
  RawLex.LexFromRawLexer(RawTok);
  while (RawTok.isNot(tok::eof)) {
    std::cout << PP.getSpelling(RawTok);
    RawLex.LexFromRawLexer(RawTok);
  }

This will emit exactly the input file, with no canonicalization or other
translation.  Realistic clients actually do something with the tokens of
course :)

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

16 years agoStop the preprocessor from poking the lexer's private parts.
Chris Lattner [Sun, 12 Oct 2008 03:31:33 +0000 (03:31 +0000)]
Stop the preprocessor from poking the lexer's private parts.

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

16 years agoFix a couple more places that poke KeepCommentMode unnecesarily.
Chris Lattner [Sun, 12 Oct 2008 03:27:19 +0000 (03:27 +0000)]
Fix a couple more places that poke KeepCommentMode unnecesarily.

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

16 years agoadd a new inKeepCommentMode() accessor to abstract the KeepCommentMode
Chris Lattner [Sun, 12 Oct 2008 03:22:02 +0000 (03:22 +0000)]
add a new inKeepCommentMode() accessor to abstract the KeepCommentMode
ivar.

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

16 years agofix misleading comment.
Chris Lattner [Sun, 12 Oct 2008 01:34:51 +0000 (01:34 +0000)]
fix misleading comment.

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

16 years agoSimplify raw mode lexing by treating an unterminate /**/ comment the
Chris Lattner [Sun, 12 Oct 2008 01:31:51 +0000 (01:31 +0000)]
Simplify raw mode lexing by treating an unterminate /**/ comment the
same we we do an unterminated string or character literal.  This makes
it so we can guarantee that the lexer never calls into the
preprocessor (which would be suicide for a raw lexer).

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

16 years agoadd a comment.
Chris Lattner [Sun, 12 Oct 2008 01:23:27 +0000 (01:23 +0000)]
add a comment.

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

16 years agoChange how raw lexers are handled: instead of creating them and then
Chris Lattner [Sun, 12 Oct 2008 01:15:46 +0000 (01:15 +0000)]
Change how raw lexers are handled: instead of creating them and then
using LexRawToken, create one and use LexFromRawLexer.  This avoids
twiddling the RawLexer flag around and simplifies some code (even
speeding raw lexing up a tiny bit).

This change also improves the token paster to use a Lexer on the stack
instead of new/deleting it.

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

16 years agosilence release-assert warnings.
Chris Lattner [Sun, 12 Oct 2008 00:31:50 +0000 (00:31 +0000)]
silence release-assert warnings.

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

16 years agosilence some release-assert warnings.
Chris Lattner [Sun, 12 Oct 2008 00:28:42 +0000 (00:28 +0000)]
silence some release-assert warnings.

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

16 years agosilence a bunch of warnings in a release-assert build.
Chris Lattner [Sun, 12 Oct 2008 00:26:57 +0000 (00:26 +0000)]
silence a bunch of warnings in a release-assert build.

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

16 years agoimprove a comment.
Chris Lattner [Sun, 12 Oct 2008 00:23:07 +0000 (00:23 +0000)]
improve a comment.

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

16 years agoAdd DeclGroup.cpp.
Steve Naroff [Fri, 10 Oct 2008 16:41:38 +0000 (16:41 +0000)]
Add DeclGroup.cpp.

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

16 years agoFix/simplify RewriteBlocks::RewriteBlockPointerFunctionArgs().
Steve Naroff [Fri, 10 Oct 2008 15:33:34 +0000 (15:33 +0000)]
Fix/simplify RewriteBlocks::RewriteBlockPointerFunctionArgs().

This completes the fix for <rdar://problem/6272905> clang block rewriter: parameter to function not imported into block?.

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

16 years agoTests for return statement checks
Seo Sanghyeon [Fri, 10 Oct 2008 07:20:06 +0000 (07:20 +0000)]
Tests for return statement checks

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

16 years agoFinal phase of converting BlockDecls over to DeclContext. This is unfortunately a...
Steve Naroff [Fri, 10 Oct 2008 01:28:17 +0000 (01:28 +0000)]
Final phase of converting BlockDecls over to DeclContext. This is unfortunately a largish/complex diff, however it was necessry to pass all the current block tests.

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

16 years agoLift EmitTargetBuiltinExpr out of EmitBuiltinExpr.
Daniel Dunbar [Fri, 10 Oct 2008 00:24:54 +0000 (00:24 +0000)]
Lift EmitTargetBuiltinExpr out of EmitBuiltinExpr.

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

16 years agoDisable blocks support in C++ mode.
Daniel Dunbar [Fri, 10 Oct 2008 00:20:52 +0000 (00:20 +0000)]
Disable blocks support in C++ mode.

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

16 years agoAdd missing newline.
Ted Kremenek [Fri, 10 Oct 2008 00:17:08 +0000 (00:17 +0000)]
Add missing newline.

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

16 years agoAdjust calls to APFloat conversion for new interface.
Dale Johannesen [Thu, 9 Oct 2008 23:02:32 +0000 (23:02 +0000)]
Adjust calls to APFloat conversion for new interface.

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

16 years agoCheck some cases for previous patch. Make the code more robust.
Zhongxing Xu [Thu, 9 Oct 2008 03:19:06 +0000 (03:19 +0000)]
Check some cases for previous patch. Make the code more robust.

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

16 years agoFix a bug that crashed clang when parsing this:
Argyrios Kyrtzidis [Wed, 8 Oct 2008 22:20:31 +0000 (22:20 +0000)]
Fix a bug that crashed clang when parsing this:

class C {
  static const int number = 50;
  static int arr[number];
};

Here's how it worked:
-GetTypeForDeclarator was called from both Sema::ActOnCXXMemberDeclarator and Sema::ActOnDeclarator.
-VariableArrayTypes are not uniqued so two VariableArrayTypes were created with the same DeclRefExpr.
-On exit they both tried to destroy that one DeclRefExpr.

The fix is not to use GetTypeForDeclarator from the Sema::ActOnCXXMemberDeclarator.

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

16 years agoInstantiate the BlockDecl in ActOnBlockStart() so we can use it as a DeclContext.
Steve Naroff [Wed, 8 Oct 2008 18:44:00 +0000 (18:44 +0000)]
Instantiate the BlockDecl in ActOnBlockStart() so we can use it as a DeclContext.
This required changes to attach the compound statement later on (like we do for functions).

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

16 years agoUpdate checker build.
Ted Kremenek [Wed, 8 Oct 2008 18:32:06 +0000 (18:32 +0000)]
Update checker build.

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

16 years agoTouchup the rewriter to handle the new BlockExpr->BlockDecl dance.
Steve Naroff [Wed, 8 Oct 2008 17:31:13 +0000 (17:31 +0000)]
Touchup the rewriter to handle the new BlockExpr->BlockDecl dance.

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

16 years ago- Add BlockDecl AST node.
Steve Naroff [Wed, 8 Oct 2008 17:01:13 +0000 (17:01 +0000)]
- Add BlockDecl AST node.
- Modify BlockExpr to reference the BlockDecl.

This is "cleanup" necessary to improve our lookup semantics for blocks (to fix <rdar://problem/6272905> clang block rewriter: parameter to function not imported into block?).

Still some follow-up work to finish this (forthcoming).

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

16 years agoThis is the first step to implement a field-sensitive store model. Other things are...
Zhongxing Xu [Wed, 8 Oct 2008 02:50:44 +0000 (02:50 +0000)]
This is the first step to implement a field-sensitive store model. Other things are simplified: no heap shape assumption, no parameter alias assumption, etc.

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

16 years agoA little more tweaking with StmtIterator and SizeOfAlignofExpr. A recent commit...
Ted Kremenek [Tue, 7 Oct 2008 23:35:42 +0000 (23:35 +0000)]
A little more tweaking with StmtIterator and SizeOfAlignofExpr.  A recent commit actually introduced a regression, not fixed a bug.

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

16 years agoMigrate DeclStmt over to using a DeclGroup instead of a pointer to a ScopedDecl*.
Ted Kremenek [Tue, 7 Oct 2008 23:09:49 +0000 (23:09 +0000)]
Migrate DeclStmt over to using a DeclGroup instead of a pointer to a ScopedDecl*.
This also removes the ugly hack needed in CFG.cpp for subclassing DeclStmt to create a DeclStmt with one Decl*.

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

16 years agoAdd #include (introduced by dependence on DeclGroup)
Ted Kremenek [Tue, 7 Oct 2008 23:08:39 +0000 (23:08 +0000)]
Add #include (introduced by dependence on DeclGroup)

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