]> granicus.if.org Git - clang/commit
IRgen: Support user defined attributes on block runtime functions.
authorDaniel Dunbar <daniel@zuster.org>
Fri, 16 Jul 2010 00:00:19 +0000 (00:00 +0000)
committerDaniel Dunbar <daniel@zuster.org>
Fri, 16 Jul 2010 00:00:19 +0000 (00:00 +0000)
commit754b9fbaa13749c61393cc613eec7c79efe60ddf
tree976a999d6480d8ae25cbc7548ed248a81c6a8824
parent673431a2986f750b4d8fadb57abf3f00db27bbbd
IRgen: Support user defined attributes on block runtime functions.
 - This issue here is that /usr/include/Blocks.h wants to define some of the
   block runtime globals as weak, depending on the target. This doesn't work in
   Clang because we aren't using the AST decl for these globals.

 - The fix is a pretty gross hack which just watches all the decls for the
   specific blocks globals we need to know about; if we see one we use it,
   otherwise we use the hand coded type.

   In time, I would like to clean this up by changing IRgen to ask Sema/AST for
   the decl, which would then be lazily loaded from the builtin table if
   necessary. This could be used in a whole host of places in IRgen and would
   get rid of a lot of grotty hand coding of LLVM IR; however, we need some
   extra Sema support for this as well as support for builtin global variables.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108482 91177308-0d34-0410-b5e6-96231b3b80d8
include/clang/Basic/Builtins.def
lib/CodeGen/CodeGenModule.cpp
lib/CodeGen/CodeGenModule.h
test/CodeGen/block-decl-merging.c [new file with mode: 0644]