[llvm-testresults] buildbot failure in smooshlab on clang-x86_64-darwin10-selfhost-rel

daniel_dunbar at apple.com daniel_dunbar at apple.com
Thu Apr 22 18:03:34 PDT 2010


The Buildbot has detected a new failure of clang-x86_64-darwin10-selfhost-rel on smooshlab.
Full details are available at:
 http://smooshlab.apple.com:8010/builders/clang-x86_64-darwin10-selfhost-rel/builds/1547

Buildbot URL: http://smooshlab.apple.com:8010/

Buildslave for this Build: smoosh-02

Build Reason: 
Build Source Stamp: 102148
Blamelist: dgregor,void

BUILD FAILED: failed compile.llvm.stage2

sincerely,
 -The Buildbot


================================================================================

CHANGES:
Files:
 lib/Sema/TreeTransform.h
 test/SemaObjCXX/instantiate-stmt.mm
At: Thu 22 Apr 2010 17:05:00
Changed By: dgregor
Comments: Template instantiation for @try and @finally (but not @catch, yet).
Properties: 




File: gcc/llvm-convert.cpp
At: Thu 22 Apr 2010 17:05:00
Changed By: void
Comments: A fix for a nasty bug (<rdar://problem/7885482>). Here's what's happening:

Consider this pseudo-ObjC code:

      // locking using some "lock" variable
      @try {
        // ...
      } @catch (...) {
        // ...
        @throw;
      } @finally {
        // unlocking using the "lock" variable
      }

The "lock" variable has live intervals from the top of the function through the
@try block and in the @finally block. On 32-bit x86, it doesn't have a live
interval in the @catch block. This is because in 32-bit mode Objective-C uses
setjmp/longjmp for exception handling and not the invoke/DWARF method.  The
@throw is implemented as an "objc_exception_throw" call marked with
NORETURN. The upshot is that if the "lock" variable is placed into a stack slot,
there won't be an indication that the "lock" can be used after the
"objc_exception_throw" executes. With the invoke/DWARF method, the unwind edge
of the invoke points to the @finally block, so the "lock" variable will have a
live interval leading to there.

The solution is to have the "objc_exception_throw" behave in a similar manner to
the invoke/DWARF method. That is remove the "NORETURN" attribute, allowing it to
have an edge from the call to the @finally block.
Properties: 




LOGS:
Last 10 lines of 'stdio':
	llvm[4]: Building Release Archive Library libLLVMARMAsmPrinter.a
	llvm[4]: Compiling ARMAsmLexer.cpp for Release build
	llvm[4]: Compiling ARMAsmParser.cpp for Release build
	llvm[4]: Building Release Archive Library libLLVMARMAsmParser.a
	llvm[4]: Compiling ARMDisassembler.cpp for Release build
	llvm[4]: Compiling ARMDisassemblerCore.cpp for Release build
	llvm[4]: Building Release Archive Library libLLVMARMDisassembler.a
	llvm[4]: Compiling ARMTargetInfo.cpp for Release build
	llvm[4]: Building Release Archive Library libLLVMARMInfo.a
	make: *** [all] Error 1




More information about the llvm-testresults mailing list