Skip to content
  1. Apr 06, 2007
    • Steve Naroff's avatar
      Bug #: · e5aa9be0
      Steve Naroff authored
      Submitted by:
      Reviewed by:
      -Changed the name of TypeRef to QualType. Many diffs.
      -Changed the QualType constructor to require Quals be passed. This makes the code a bit
      more verbose, however will make the code easier to work on. Given the complexity
      of types, this should help spot bogosities.
      -Changed the Expr constructor to require a QualType. Same motivation.
      
      llvm-svn: 39395
      e5aa9be0
  2. Apr 05, 2007
    • Steve Naroff's avatar
      Bug #: · d50c88e4
      Steve Naroff authored
      Submitted by:
      Reviewed by:
      Fix "FIXME: does this lose qualifiers from the typedef??" in ASTContext::getTypedefType().
      
      This change was fairly pervasive...nevertheless, here are the highlights:
      - Change the type of Type::CanonicalType to TypeRef (was "Type *").
      - Change the implementation of TypeRef::getCanonicalType() to work for typedefs.
      - Make the implementation of Type::getCanonicalType private (only TypeRef should access). This
      will force clients to use TypeRef::getCanonicalType (the correct version of the function). Since
      TypeRef overloads "->", it was very easy to fall into this bug...
      - Changed many references of "Type *" to "TypeRef"...when the raw type pointer is required, use t.getTypePtr().
      - Changed all the *Type classes to take a TypeRef.
      - Made the Type constructor protected (cleanup).
      - Removed function Expr::getType().
      - Convert functions in SemaExpr to use the above support. This fixed the "const" bug I was originally investigating.
      
      I will follow this check-in up with a rename of TypeRef->QualType. I will also make sure the constructor does not default to 0 (which can lead to broken code...).
      
      llvm-svn: 39394
      d50c88e4
    • Chris Lattner's avatar
      Add support for character constants in PP expressions, like: · f8a0b0fa
      Chris Lattner authored
      #if 'a'
      
      llvm-svn: 39393
      f8a0b0fa
    • Chris Lattner's avatar
      Implement support for semantic analysis of character constants. · 38004880
      Chris Lattner authored
      llvm-svn: 39392
      38004880
    • Chris Lattner's avatar
      wchar_t width is now expressed in terms of bits for uniformity. · d5a828b6
      Chris Lattner authored
      llvm-svn: 39391
      d5a828b6
    • Chris Lattner's avatar
      2f5add62
    • Chris Lattner's avatar
      add some more dummy target hooks · d2f5ec4e
      Chris Lattner authored
      llvm-svn: 39389
      d2f5ec4e
    • Chris Lattner's avatar
      Correctly represent and propagate signedness information in preprocessor · a9eac7ff
      Chris Lattner authored
      constant expressions.  This allows us to emit this diagnostic:
      
      t.c:5:5: warning: integer constant is so large that it is unsigned
      #if 12345678901234567890
          ^
      
      And makes constant evaluation fully correct, but we do not yet detect and
      warn about integer overflow.
      
      This patch requires cvs up'ing the main llvm tree to get the APSInt class,
      but no libraries need to be rebuilt there.
      
      llvm-svn: 39388
      a9eac7ff
  3. Apr 04, 2007
  4. Apr 03, 2007
    • Steve Naroff's avatar
      Bug #: · 0f6256d0
      Steve Naroff authored
      Submitted by:
      Reviewed by:
      declare getSizeType() const and fix typo in comment...
      
      llvm-svn: 39376
      0f6256d0
    • Steve Naroff's avatar
      Bug #: · 7840336c
      Steve Naroff authored
      Submitted by:
      Reviewed by:
      Avoid including "clang/AST/Expr.h" in Sema.h just to access
      UnaryOperator::Opcode. While the inclusion wasn't objectionable in terms
      of layering, it is nice to keep the inclusions as modest as possible.
      
      llvm-svn: 39375
      7840336c
    • Steve Naroff's avatar
      Bug #: · 92e30f8c
      Steve Naroff authored
      Submitted by:
      Reviewed by:
      Incorporate code review feedback from Chris...
      - minor restructure of ParseMemberReferenceExpr logic. The last statement
      is now the instantiation of the AST node (which I like a lot and will conform
      to throughout Sema).
      - declare StmtClassNameTable const.
      - reword an error diagnostic.
      - install the correct type for ParseSizeOfAlignOfTypeExpr. Added hook in
      ASTContext. For now, simply return Context.UnsignedLongTy. Added a FIXME
      to revisit (i.e. compute using TargetInfo).
      
      llvm-svn: 39374
      92e30f8c
  5. Apr 02, 2007
    • Steve Naroff's avatar
      Bug #: · ef2ab6a5
      Steve Naroff authored
      Submitted by:
      Reviewed by:
      Add three new classes to Decl.h: BlockVarDecl, FileVarDecl, and ParmVarDecl.
      
      Made the constructor to VarDecl protected, to indicate it is "abstract".
      
      Reorganized the Decl::Kind enum to allow us to add ObjectDecls/TypeDecls with
      minimal breakage.  In the process, realized the isa support for ObjectDecl was already broken (so
      the reorg paid for itself already:-) The range check should also be more efficient...
      
      llvm-svn: 39373
      ef2ab6a5
  6. Apr 01, 2007
    • Steve Naroff's avatar
      Bug #: · fc49d67a
      Steve Naroff authored
      Submitted by:
      Reviewed by:
      - Finished up incomplete type analysis for varibles (in Sema::ParseDeclarator()).
      - Added many spec refs, since this area is confusing (for top level decls
      in particular).
      - Added a FIXME to MergeVarDecl()...it needs to be taught about tentative
      definitions. As a result, we currently issue some bogus diagnostics.
      
      llvm-svn: 39372
      fc49d67a
    • Steve Naroff's avatar
      Bug #: · ca8f7128
      Steve Naroff authored
      Submitted by:
      Reviewed by:
      - ParseMemberReferenceExpr wasn't operating on the canonical type. From
      now on, I will make sure the prologue to each Parse/Check function has
      both the qualified type and the canonical type.
      - More refinements to ParseDeclarator. It was allowing variable declarations
      to incomplete types (e.g. void, struct foo, where foo wasn't defined).
      
      llvm-svn: 39371
      ca8f7128
  7. Mar 31, 2007
    • Steve Naroff's avatar
      Bug #: · 95af013c
      Steve Naroff authored
      Submitted by:
      Reviewed by:
      Incorporate feedback from Chris (on the last check-in).
      - added a shared hook for pre/post ++/-- CheckIncrementDecrementOperand().
      - handle invalid arithmetic on incomplete types (void *, struct foo *, where the
      body isn't in scope). Added a diagnostic for this case.
      - added some comments and C99 annotations.
      - Sema.h now includes Expr.h. I'd prefer not to, however it doesn't break
      any layering.
      
      llvm-svn: 39370
      95af013c
  8. Mar 30, 2007
    • Steve Naroff's avatar
      Bug #: · bc2f0993
      Steve Naroff authored
      Submitted by:
      Reviewed by:
      Implement ++/-- typechecking for pre/post unary expressions. This includes:
      
      - added isLvalue, isModifiableLvalue (on TypeRef, Type, and RecordType).
      - added isRealType, isRealFloatingType, isComplexType.
      - hacked Diag to take a TypeRef (I was sick of writing the 2 line "setup":-)
      In addition, this will likely lead to less bugs...I already had written code
      that was doing a getAsString on "Type" (which is wrong...since it doesn't include
      any qualifiers).
      - Changed UnaryOperator to take a TypeRef...pass it the right stuff.
      - Removed redundant ternary expressions in several predicates.
      - A couple diagnostics.
      
      llvm-svn: 39369
      bc2f0993
  9. Mar 28, 2007
    • Steve Naroff's avatar
      Bug #: · c1aadb17
      Steve Naroff authored
      Submitted by:
      Reviewed by:
      Finish up Sema::ParseArraySubscriptExpr. This involved:
      - adding a couple predicates to Type.h (isObjectType, isDerivedType).
      - added a diagnostic for subscripting non-object types (e.g. void (*)()).
      - pass the correct result type...a minor detail:-)
      - added some spec references to Type.h
      
      llvm-svn: 39368
      c1aadb17
  10. Mar 27, 2007
    • Steve Naroff's avatar
      Bug #: · d9e7bd46
      Steve Naroff authored
      Submitted by:
      Reviewed by:
      Make an error diagnosic a bit more expression (in Sema::GetTypeForDeclarator)
      
      llvm-svn: 39367
      d9e7bd46
    • Steve Naroff's avatar
      Bug #: · bc57d0fe
      Steve Naroff authored
      Submitted by:
      Reviewed by:
      Finish up fixes to Sema::GetTypeForDeclarator(). The typechecking should
      now conform to the standard.
      
      llvm-svn: 39366
      bc57d0fe
    • Steve Naroff's avatar
      Bug #: · 06deba91
      Steve Naroff authored
      Submitted by:
      Reviewed by:
      Fix a couple bugs in Sema::GetTypeForDeclarator(). Need to disallow:
      - void arrayOfFunctions[3]()
      - void arrayOfVoids[3]
      Need to talk to Chris about the return value...
      
      llvm-svn: 39365
      06deba91
    • Steve Naroff's avatar
      Bug #: · cc321429
      Steve Naroff authored
      Submitted by:
      Reviewed by:
      Finish up Sema::ParseMemberReferenceExpr. This involved:
      - added a getMember() function to RecordDecl.
      - added stronger typing for "Members" (from Decl->FieldDecl).
      - added a dignostic for members not found.
      - changed MemberExpr to install the correct TypeRef.
      - In general, simplified and cleaned up the routing.
      
      llvm-svn: 39364
      cc321429
  11. Mar 26, 2007
  12. Mar 23, 2007
    • Steve Naroff's avatar
      Bug #: · f1e53698
      Steve Naroff authored
      Submitted by:
      Reviewed by:
      
      Type Checking...round 2. This checkin "breaks" parsing carbon.h. I imagine
      that this will be true for the next week or so. Nevertheless, this round of
      changes includes the following:
      
      - Hacked various Expr classes to pass the appropriate TypeRef. Still have
      a few more classes to touch.
      - Implement type checking for ParseArraySubscriptExpr and ParseMemberReferenceExpr.
      - Added a debug hook to derive the class name for Stmt/Expr nodes. Currently a
      linear search...could easily optimize if important.
      - Changed the name of TaggedType->TagType. Now we have TagType and TagDecl (which
      are easier to remember).
      - Fixed a bug in StringLiteral conversion I did a couple weeks ago. hadError was
      not initialized (oops).
      - changed Sema::Diag to return true. This streamlines the type checking code
      considerably.
      - Added many diagnositics.
      
      This should be it!
      
      llvm-svn: 39361
      f1e53698
  13. Mar 21, 2007
    • Steve Naroff's avatar
      Bug #: · 26c8ea5f
      Steve Naroff authored
      Submitted by:
      Reviewed by:
      Implement type checking. First round of changes are:
      - Added predicates to Type.
      - Added predicates to BinExpr.
      - Added Check hooks that model the categories for Binary ops.
      - Added TypeRef to Expr. Will lazily eval subclasses...
      - Misc bug fixes/cleanups.
      
      llvm-svn: 39360
      26c8ea5f
  14. Mar 19, 2007
  15. Mar 16, 2007
    • Steve Naroff's avatar
      Bug #: · 97035855
      Steve Naroff authored
      Submitted by:
      Reviewed by:
      Down to 0 warning/errors for Carbon.h. Also made a couple trivial name
      changes...
      
      llvm-svn: 39358
      97035855
    • Steve Naroff's avatar
      Bug #: · 6fbf0dcb
      Steve Naroff authored
      Submitted by:
      Reviewed by:
      carbon.h looking good! Only 1 warning left...no parse errors!
      
      This fixes 3 bugs...
      - A couple tricky bugs with type canonicalization. Nested typedef's  weren't being
      handled properly. For example, the following didn't work:
      
      typdef int __darwin_pid_t;
      typedef __darwin_pid_t pid_t;
      
      int getpgid(pid_t);
      int getpgid(int);
      
      - The storage class wasn't being preserved. As a result, Sema was complaining
      about the  following:
      
      extern char *foo;
      char *foo;
      
      - various built-ins weren't registered...resulting in spurious warnings.
      
      llvm-svn: 39357
      6fbf0dcb
  16. Mar 14, 2007
    • Steve Naroff's avatar
      Bug #: · 3273c228
      Steve Naroff authored
      Submitted by:
      Reviewed by:
      This is a "small" checkin.  #include_next wasn't working properly on
      Leopard. This is because the driver has some hard coded paths that
      don't work on Leopard. The real fix is to derive them, however I don't
      think we need to solve this now. At this point, anyone working on clang
      should be able to use Leopard. This fix removed 11 errors processing
      "carbon.h". The bug that bubbles up to the top is in MergeFunctionDecl().
      As part of digging into this part of Sema, I rearranged some methods
      (and changed the visibility).
      
      llvm-svn: 39356
      3273c228
Loading