Skip to content
  1. Jan 15, 2009
  2. Jan 14, 2009
    • Douglas Gregor's avatar
      Refactor name lookup. · 34074326
      Douglas Gregor authored
      This change refactors and cleans up our handling of name lookup with
      LookupDecl. There are several aspects to this refactoring:
      
        - The criteria for name lookup is now encapsulated into the class
        LookupCriteria, which replaces the hideous set of boolean values
        that LookupDecl currently has.
      
        - The results of name lookup are returned in a new class
        LookupResult, which can lazily build OverloadedFunctionDecls for
        overloaded function sets (and, eventually, eliminate the need to
        allocate member for OverloadedFunctionDecls) and contains a
        placeholder for handling ambiguous name lookup (for C++).
      
        - The primary entry points for name lookup are now LookupName (for
          unqualified name lookup) and LookupQualifiedName (for qualified
          name lookup). There is also a convenience function
          LookupParsedName that handles qualified/unqualified name lookup
          when given a scope specifier. Together, these routines are meant
          to gradually replace the kludgy LookupDecl, but this won't happen
          until after we have base class lookup (which forces us to cope
          with ambiguities).
      
        - Documented the heck out of name lookup. Experimenting a little
          with using Doxygen's member groups to make some sense of the Sema
          class. Feedback welcome!
      
        - Fixes some lingering issues with name lookup for
        nested-name-specifiers, which now goes through
        LookupName/LookupQualifiedName. 
      
      llvm-svn: 62245
      34074326
    • Chris Lattner's avatar
      8fb9480e
    • Devang Patel's avatar
      xfail for now. · 08e5e62f
      Devang Patel authored
      llvm-svn: 62243
      08e5e62f
    • Daniel Dunbar's avatar
      CmpDriver: Allow over-ride of drivers to compare through env variables · 35926e10
      Daniel Dunbar authored
      (DRIVER_[AB]).
      
      llvm-svn: 62242
      35926e10
    • Daniel Dunbar's avatar
      ccc: Finish main clang compiler argument translation. · fec2f295
      Daniel Dunbar authored
       - Still missing some odds and ends like -M.
      
       - Also, we still need to do some translation and forwarding of
         codegen options.
      
      llvm-svn: 62241
      fec2f295
    • Fariborz Jahanian's avatar
      Patch to keep clang honest that it does not yet support · f2a3120b
      Fariborz Jahanian authored
      explicit return type on block literals.
      
      llvm-svn: 62240
      f2a3120b
    • Daniel Dunbar's avatar
      Fix typo and spelling of -Wunused-macros. · 1dad2d8e
      Daniel Dunbar authored
      llvm-svn: 62239
      1dad2d8e
    • Richard Osborne's avatar
      Add pseudo instructions to the XCore for (load|store|load address) of a · 4359325b
      Richard Osborne authored
      frame index. eliminateFrameIndex will replace these instructions with
      (LDWSP|STWSP|LDAWSP) or (LDW|STW|LDAWF) if a frame pointer is in use.
      
      This fixes PR 3324. Previously we used LDWSP, STWSP, LDAWSP before frame
      pointer elimination. However since they were marked as implicitly using
      SP they could not be rematerialised.
      
      llvm-svn: 62238
      4359325b
    • Douglas Gregor's avatar
      Test explicit constructor · cba844da
      Douglas Gregor authored
      llvm-svn: 62237
      cba844da
    • Nuno Lopes's avatar
      fix crash in the case when some arg is null · 0971e775
      Nuno Lopes authored
      llvm-svn: 62236
      0971e775
    • Gabor Greif's avatar
      minor simplification · 191812fe
      Gabor Greif authored
      llvm-svn: 62232
      191812fe
    • Douglas Gregor's avatar
      Introduce support for C++0x explicit conversion operators (N2437) · 5fb53972
      Douglas Gregor authored
      Small cleanup in the handling of user-defined conversions. 
      
      Also, implement an optimization when constructing a call. We avoid
      recomputing implicit conversion sequences and instead use those
      conversion sequences that we computed as part of overload resolution.
      
      llvm-svn: 62231
      5fb53972
    • Steve Naroff's avatar
      Add a FIXME. · 6108d255
      Steve Naroff authored
      llvm-svn: 62214
      6108d255
    • Daniel Dunbar's avatar
      ccc: Darwin/Compiler: Improve gcc compat in use of -auxbase-strip. · 3b8678fd
      Daniel Dunbar authored
      llvm-svn: 62213
      3b8678fd
    • Dale Johannesen's avatar
      Fix the time regression I introduced in 464.h264ref with · 1f0e0e7c
      Dale Johannesen authored
      my earlier patch to this file.
      
      The issue there was that all uses of an IV inside a loop
      are actually references to Base[IV*2], and there was one
      use outside that was the same but LSR didn't see the base
      or the scaling because it didn't recurse into uses outside
      the loop; thus, it used base+IV*scale mode inside the loop
      instead of pulling base out of the loop.  This was extra bad
      because register pressure later forced both base and IV into
      memory.  Doing that recursion, at least enough
      to figure out addressing modes, is a good idea in general;
      the change in AddUsersIfInteresting does this.  However,
      there were side effects....
      
      It is also possible for recursing outside the loop to
      introduce another IV where there was only 1 before (if
      the refs inside are not scaled and the ref outside is).
      I don't think this is a common case, but it's in the testsuite.
      It is right to be very aggressive about getting rid of
      such introduced IVs (CheckForIVReuse and the handling of
      nonzero RewriteFactor in StrengthReduceStridedIVUsers).
      In the testcase in question the new IV produced this way
      has both a nonconstant stride and a nonzero base, neither
      of which was handled before.  And when inserting 
      new code that feeds into a PHI, it's right to put such 
      code at the original location rather than in the PHI's 
      immediate predecessor(s) when the original location is outside 
      the loop (a case that couldn't happen before)
      (RewriteInstructionToUseNewBase); better to avoid making
      multiple copies of it in this case.
      
      Also, the mechanism for keeping SCEV's corresponding to GEP's
      no longer works, as the GEP might change after its SCEV
      is remembered, invalidating the SCEV, and we might get a bad
      SCEV value when looking up the GEP again for a later loop.  
      This also couldn't happen before, as we weren't recursing
      into GEP's outside the loop.
      
      Also, when we build an expression that involves a (possibly
      non-affine) IV from a different loop as well as an IV from
      the one we're interested in (containsAddRecFromDifferentLoop),
      don't recurse into that.  We can't do much with it and will
      get in trouble if we try to create new non-affine IVs or something.
      
      More testcases are coming.
      
      llvm-svn: 62212
      1f0e0e7c
    • Mikhail Glushenkov's avatar
      Make -o a prefix option. · 66068b3b
      Mikhail Glushenkov authored
      Both 'llvmc -o file' and 'llvmc -ofile' should work.
      
      llvm-svn: 62211
      66068b3b
Loading