[llvm-testresults] buildbot failure in smooshlab on llvm-gcc-i386-darwin9

daniel_dunbar at apple.com daniel_dunbar at apple.com
Thu Apr 22 17:36:50 PDT 2010


The Buildbot has detected a new failure of llvm-gcc-i386-darwin9 on smooshlab.
Full details are available at:
 http://smooshlab.apple.com:8010/builders/llvm-gcc-i386-darwin9/builds/5737

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

Buildslave for this Build: smoosh-03.apple.com

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[2]: Compiling TargetLoweringObjectFileImpl.cpp for Release build
	llvm[2]: Compiling TwoAddressInstructionPass.cpp for Release build
	llvm[2]: Compiling UnreachableBlockElim.cpp for Release build
	llvm[4]: Building Release Archive Library libLLVMARMDisassembler.a
	llvm[2]: Compiling VirtRegMap.cpp for Release build
	llvm[2]: Compiling VirtRegRewriter.cpp for Release build
	llvm[4]: Compiling ARMTargetInfo.cpp for Release build
	llvm[4]: Building Release Archive Library libLLVMARMInfo.a
	llvm[2]: Building Release Archive Library libLLVMCodeGen.a
	make: *** [all] Error 1

Last 10 lines of 'warnings':
	ld warning: duplicate dylib /Users/buildslave/zorg/buildbot/smooshlab/slave/build.llvm-gcc-i386-darwin9/llvm-gcc.install/lib/libgcc_s.1.dylib




More information about the llvm-testresults mailing list