[LLVMbugs] [Bug 8736] New: LLVM-GCC-4.2 recursive global blocks are nil at runtime

bugzilla-daemon at llvm.org bugzilla-daemon at llvm.org
Sat Dec 4 11:44:59 PST 2010


           Summary: LLVM-GCC-4.2 recursive global blocks are nil at
           Product: new-bugs
           Version: unspecified
          Platform: Macintosh
        OS/Version: MacOS X
            Status: NEW
          Severity: normal
          Priority: P
         Component: new bugs
        AssignedTo: unassignedbugs at nondot.org
        ReportedBy: keith at 33software.com
                CC: llvmbugs at cs.uiuc.edu

Created an attachment (id=5869)
 --> (http://llvm.org/bugs/attachment.cgi?id=5869)
Demonstrates issue.


When compiling a global block variable that calls itself, using LLVM GCC 4.2,
the block isn't created - but compilation succeeds and the symbol is still

This is also filed as rdar://problem/8639147

Steps to Reproduce:

Compile and run the attached test case using:

llvm-gcc-4.2 RecursiveGlobalBlocks.m -framework Foundation

This will exit with EXIT_FAILURE.

The output of `llvm-gcc-4.2 -v` is:

Using built-in specs.
Target: i686-apple-darwin10
Configured with: /var/tmp/llvmgcc42/llvmgcc42-2333.4~7/src/configure
--disable-checking --enable-werror --prefix=/Developer/usr/llvm-gcc-4.2
--mandir=/share/man --enable-languages=c,objc,c++,obj-c++
--program-prefix=llvm- --program-transform-name=/^[cg][^.-]*$/s/$/-4.2/
--with-slibdir=/usr/lib --build=i686-apple-darwin10
--program-prefix=i686-apple-darwin10- --host=x86_64-apple-darwin10
--target=i686-apple-darwin10 --with-gxx-include-dir=/usr/include/c++/4.2.1
Thread model: posix
gcc version 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2333.4)

Recompile and run the test case using:

clang RecursiveGlobalBlocks.m -framework Foundation

Compiled with clang the program will output 120  (5!) and exit with

The output of `clang -v` is:

Apple clang version 1.6 (tags/Apple/clang-70)
Target: x86_64-apple-darwin10
Thread model: posix

Expected Results:

Fail to compile, or ensure global blocks can call themselves.

Actual Results:

Global block variables which call themselves, compiled with llvm-gcc-4.2, are
nil at runtime. Invoking them results in a crash when de-referencing to
retrieve the function pointer.

Configure bugmail: http://llvm.org/bugs/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.

More information about the llvm-bugs mailing list