Skip to content
  1. May 23, 2009
  2. May 22, 2009
    • Dan Gohman's avatar
      Add a note mentioning that uses of the return value of an invoke · 9069d890
      Dan Gohman authored
      must be dominated by the normal label.
      
      llvm-svn: 72285
      9069d890
    • Fariborz Jahanian's avatar
      Cannot type cast @selector expressions. · 88fead8c
      Fariborz Jahanian authored
      llvm-svn: 72284
      88fead8c
    • Daniel Dunbar's avatar
      In assembler-with-cpp mode, don't error on '#' (stringize) operator applied to · 0721c2c1
      Daniel Dunbar authored
      non-argument names, pass the tokens through.
      
      llvm-svn: 72283
      0721c2c1
    • Douglas Gregor's avatar
      Add a few tests to ensure that member functions of class templates can · efe7c393
      Douglas Gregor authored
      call other member functions of class templates, including after
      template instantiation. No functionality change.
      
      llvm-svn: 72282
      efe7c393
    • Douglas Gregor's avatar
      Representation of and template instantiation for member · a8db954f
      Douglas Gregor authored
      expressions. This change introduces another AST node,
      CXXUnresolvedMemberExpr, that captures member references (x->m, x.m)
      when the base of the expression (the "x") is type-dependent, and we
      therefore cannot resolve the member reference yet.
      
      Note that our parsing of member references for C++ is still quite
      poor, e.g., we don't handle x->Base::m or x->operator int.
      
      llvm-svn: 72281
      a8db954f
    • Argyrios Kyrtzidis's avatar
      Add -fblocks for the test. · c9965215
      Argyrios Kyrtzidis authored
      llvm-svn: 72280
      c9965215
    • Argyrios Kyrtzidis's avatar
      The disambiguation process for ambiguous paren expressions is not "side effects free", e.g: · f73f2d28
      Argyrios Kyrtzidis authored
        (T(*)(int[x+y]));
      
      is an (invalid) paren expression, but "x+y" will be parsed as part of the (rejected) type-id,
      so unnecessary Action calls are made for an unused (and possibly leaked) "x+y".
      
      Use a different scheme, similar to parsing inline methods. The parenthesized tokens are cached,
      the context that follows is determined (possibly by parsing a cast-expression),
      and then we re-introduce the cached tokens into the token stream and parse them appropriately.
      
      llvm-svn: 72279
      f73f2d28
    • Argyrios Kyrtzidis's avatar
      The TokenLexer may encounter annotations if the parser enters them using... · 48ce3b55
      Argyrios Kyrtzidis authored
      The TokenLexer may encounter annotations if the parser enters them using Preprocessor::EnterTokenStream.
      So check for annotation before using the Token's IdentifierInfo.
      
      llvm-svn: 72278
      48ce3b55
    • Oscar Fuentes's avatar
      CMake: Use libpthread in tblgen when needed. Updated list of source · 770c8e79
      Oscar Fuentes authored
      files for PIC16 target.
      
      llvm-svn: 72277
      770c8e79
    • Duncan Sands's avatar
      Add a new codegen pass that normalizes dwarf exception handling · d6fb6501
      Duncan Sands authored
      code in preparation for code generation.  The main thing it does
      is handle the case when eh.exception calls (and, in a future
      patch, eh.selector calls) are far away from landing pads.  Right
      now in practice you only find eh.exception calls close to landing
      pads: either in a landing pad (the common case) or in a landing
      pad successor, due to loop passes shifting them about.  However
      future exception handling improvements will result in calls far
      from landing pads:
      (1) Inlining of rewinds.  Consider the following case:
      In function @f:
      ...
        invoke @g to label %normal unwind label %unwinds
      ...
      unwinds:
        %ex = call i8* @llvm.eh.exception()
      ...
      
      In function @g:
      ...
        invoke @something to label %continue unwind label %handler
      ...
      handler:
        %ex = call i8* @llvm.eh.exception()
      ... perform cleanups ...
        "rethrow exception"
      
      Now inline @g into @f.  Currently this is turned into:
      In function @f:
      ...
        invoke @something to label %continue unwind label %handler
      ...
      handler:
        %ex = call i8* @llvm.eh.exception()
      ... perform cleanups ...
        invoke "rethrow exception" to label %normal unwind label %unwinds
      unwinds:
        %ex = call i8* @llvm.eh.exception()
      ...
      
      However we would like to simplify invoke of "rethrow exception" into
      a branch to the %unwinds label.  Then %unwinds is no longer a landing
      pad, and the eh.exception call there is then far away from any landing
      pads.
      
      (2) Using the unwind instruction for cleanups.
      It would be nice to have codegen handle the following case:
        invoke @something to label %continue unwind label %run_cleanups
      ...
      handler:
      ... perform cleanups ...
        unwind
      
      This requires turning "unwind" into a library call, which
      necessarily takes a pointer to the exception as an argument
      (this patch also does this unwind lowering).  But that means
      you are using eh.exception again far from a landing pad.
      
      (3) Bugpoint simplifications.  When bugpoint is simplifying
      exception handling code it often generates eh.exception calls
      far from a landing pad, which then causes codegen to assert.
      Bugpoint then latches on to this assertion and loses sight
      of the original problem.
      
      Note that it is currently rare for this pass to actually do
      anything.  And in fact it normally shouldn't do anything at
      all given the code coming out of llvm-gcc!  But it does fire
      a few times in the testsuite.  As far as I can see this is
      almost always due to the LoopStrengthReduce codegen pass
      introducing pointless loop preheader blocks which are landing
      pads and only contain a branch to another block.  This other
      block contains an eh.exception call.  So probably by tweaking
      LoopStrengthReduce a bit this can be avoided.
      
      llvm-svn: 72276
      d6fb6501
    • Fariborz Jahanian's avatar
      This patch adds support for sender-aware dispatch in Objective-C for the GNU runtime, when · a4404f21
      Fariborz Jahanian authored
      compiled with -fobjc-sender-dependent-dispatch.  This is used in AOP, COP, implementing object 
      planes, and a few other things.
      Patch by David Chisnall.
      
      llvm-svn: 72275
      a4404f21
    • Fariborz Jahanian's avatar
      Added -fblocks to the test's options. · 162af638
      Fariborz Jahanian authored
      llvm-svn: 72274
      162af638
    • Mike Stump's avatar
      Fixup codegen for __block int i; i += rhs();. Should also slightly · c63428b1
      Mike Stump authored
      improve codegen in some cases.
      
      llvm-svn: 72273
      c63428b1
    • Daniel Dunbar's avatar
      Don't warn about -funit-at-a-time, and reject -fno-unit-at-a-time. · adeeb052
      Daniel Dunbar authored
       - We could just warn about -fno-unit-at-a-time, but in practice people using it
         probably aren't going to get what they want out of clang.
      
      Also, use "clang" specified error for unsupported things instead of driver
      unsupported error.
      
      llvm-svn: 72272
      adeeb052
Loading