Skip to content
  1. Feb 02, 2008
  2. Jan 31, 2008
  3. Jan 30, 2008
  4. Jan 29, 2008
  5. Jan 22, 2008
  6. Jan 17, 2008
    • Nate Begeman's avatar
      Implement basic overload support via a new builtin, __builtin_overload. · 1e36a85f
      Nate Begeman authored
      __builtin_overload takes 2 or more arguments:
      0) a non-zero constant-expr for the number of arguments the overloaded 
         functions will take
      1) the arguments to pass to the matching overloaded function
      2) a list of functions to match.
      
      The return type of __builtin_overload is inferred from the function whose args
      match the types of the arguments passed to the builtin.  For example:
      
      float a;
      float sinf(float);
      int   sini(int);
      
      float b = __builtin_overload(1, a, sini, sinf);
      
      Says that we are overloading functions that take one argument, and trying to 
      pass an argument of the same type as 'a'.  sini() does not match since it takes
      and argument of type int.  sinf does match, so at codegen time this will turn
      into float b = sinf(a);
      
      llvm-svn: 46132
      1e36a85f
  7. Jan 07, 2008
  8. Jan 03, 2008
  9. Dec 30, 2007
  10. Dec 29, 2007
  11. Dec 26, 2007
  12. Dec 18, 2007
  13. Dec 15, 2007
  14. Dec 12, 2007
  15. Dec 11, 2007
    • Ted Kremenek's avatar
      Mega-patch: ripped SourceManager out of Diagnostic/DiagnosticClient. Now · d4e5fbac
      Ted Kremenek authored
      SourceManager is passed by reference, allowing the SourceManager to be
      associated with a specific translation unit, and not the entire execution
      of the driver.
      
      Modified all users of Diagnostics to comply with this new interface.
      
      Integrated SourceManager as a member variable of TargetInfo. TargetInfo will
      eventually be associated with a single translation unit (just like
      SourceManager).
      
      Made the SourceManager reference in ASTContext private. Provided accessor
      getSourceManager() for clients to use instead. Modified clients to comply with
      new interface.
      
      llvm-svn: 44878
      d4e5fbac
    • Ted Kremenek's avatar
      Added missing inclusion of stdarg.h. Now CGExprScalar.cpp · f182e81d
      Ted Kremenek authored
      compiles again on Linux.
      
      llvm-svn: 44821
      f182e81d
  16. Dec 10, 2007
  17. Dec 05, 2007
  18. Dec 03, 2007
  19. Dec 02, 2007
  20. Nov 30, 2007
  21. Nov 26, 2007
  22. Nov 15, 2007
  23. Nov 01, 2007
  24. Oct 30, 2007
  25. Oct 29, 2007
  26. Oct 26, 2007
  27. Oct 25, 2007
  28. Oct 24, 2007
  29. Oct 17, 2007
    • Hartmut Kaiser's avatar
      Updated VC++ build system. · 7078da8e
      Hartmut Kaiser authored
      Silenced some VC++ warnings.
      Had to rephrase a partial specialization of the IntrospectionTrait struct in SerializationTest.cpp, please review.
      Added a compiler specific workaround in IdentifierTable.h. Is that the way to fix this kind of issues?
      
      llvm-svn: 43074
      7078da8e
  30. Oct 15, 2007
    • Steve Naroff's avatar
      · 32e44c00
      Steve Naroff authored
      Move type compatibility predicates from Type to ASTContext. In addition, the predicates are now instance methods (they were previously static class methods on Type).
      
      This allowed me to fix the following hack from this weekend...
      
      // FIXME: Devise a way to do this without using strcmp.
      // Would like to say..."return getAsStructureType() == IdStructType;", but
      // we don't have a pointer to ASTContext.
      bool Type::isObjcIdType() const {
        if (const RecordType *RT = getAsStructureType())
          return !strcmp(RT->getDecl()->getName(), "objc_object");
        return false;
      }
      
      ...which is now...
      
      bool isObjcIdType(QualType T) const {
        return T->getAsStructureType() == IdStructType;
      }
      
      Side notes:
      
      - I had to remove a convenience function from the TypesCompatibleExpr class.
      
      int typesAreCompatible() const {return Type::typesAreCompatible(Type1,Type2);}
      
      Which required a couple clients get a little more verbose...
      
      -    Result = TCE->typesAreCompatible();
      +    Result = Ctx.typesAreCompatible(TCE->getArgType1(), TCE->getArgType2());
      
      Overall, I think this change also makes sense for a couple reasons...
      
      1) Since ASTContext vends types, it makes sense for the type compatibility API to be there.
      2) This allows the type compatibility predeciates to refer to data not strictly present in the AST (which I have found problematic on several occasions).
      
      llvm-svn: 43009
      32e44c00
Loading