[llvm-commits] [llvm-gcc-4.2] r46983 - in /llvm-gcc-4.2/trunk/gcc: builtin-types.def builtins.def llvm-convert.cpp

Tanya Lattner tonic at nondot.org
Mon Feb 11 18:50:24 PST 2008


Author: tbrethou
Date: Mon Feb 11 20:50:24 2008
New Revision: 46983

URL: http://llvm.org/viewvc/llvm-project?rev=46983&view=rev
Log:
Port __builtin_annotation from llvm-gcc4.0. This is similar to llvm.var.annotation but is applied to expressions.

Modified:
    llvm-gcc-4.2/trunk/gcc/builtin-types.def
    llvm-gcc-4.2/trunk/gcc/builtins.def
    llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp

Modified: llvm-gcc-4.2/trunk/gcc/builtin-types.def
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/builtin-types.def?rev=46983&r1=46982&r2=46983&view=diff

==============================================================================
--- llvm-gcc-4.2/trunk/gcc/builtin-types.def (original)
+++ llvm-gcc-4.2/trunk/gcc/builtin-types.def Mon Feb 11 20:50:24 2008
@@ -303,6 +303,10 @@
 DEF_FUNCTION_TYPE_2 (BT_FN_I16_VPTR_I16, BT_I16, BT_VOLATILE_PTR, BT_I16)
 DEF_FUNCTION_TYPE_2 (BT_FN_BOOL_LONGPTR_LONGPTR,
 		     BT_BOOL, BT_PTR_LONG, BT_PTR_LONG)
+/* APPLE LOCAL begin LLVM */
+DEF_FUNCTION_TYPE_2 (BT_FN_UINT_UINT_CONST_STRING,
+                     BT_UINT, BT_UINT, BT_CONST_STRING)
+/* APPLE LOCAL end LLVM */       
 
 DEF_FUNCTION_TYPE_3 (BT_FN_STRING_STRING_CONST_STRING_SIZE,
 		     BT_STRING, BT_STRING, BT_CONST_STRING, BT_SIZE)

Modified: llvm-gcc-4.2/trunk/gcc/builtins.def
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/builtins.def?rev=46983&r1=46982&r2=46983&view=diff

==============================================================================
--- llvm-gcc-4.2/trunk/gcc/builtins.def (original)
+++ llvm-gcc-4.2/trunk/gcc/builtins.def Mon Feb 11 20:50:24 2008
@@ -691,6 +691,10 @@
 DEF_EXT_LIB_BUILTIN    (BUILT_IN__EXIT, "_exit", BT_FN_VOID_INT, ATTR_NORETURN_NOTHROW_LIST)
 DEF_C99_BUILTIN        (BUILT_IN__EXIT2, "_Exit", BT_FN_VOID_INT, ATTR_NORETURN_NOTHROW_LIST)
 
+/* APPLE LOCAL begin LLVM */
+DEF_GCC_BUILTIN        (BUILT_IN_ANNOTATION, "annotation", BT_FN_UINT_UINT_CONST_STRING, ATTR_NULL)
+/* APPLE LOCAL end LLVM */
+
 /* Implementing nested functions.  */
 DEF_BUILTIN_STUB (BUILT_IN_INIT_TRAMPOLINE, "__builtin_init_trampoline")
 /* LLVM local deleted 1 line */

Modified: llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp?rev=46983&r1=46982&r2=46983&view=diff

==============================================================================
--- llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp (original)
+++ llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp Mon Feb 11 20:50:24 2008
@@ -4259,7 +4259,38 @@
     Builder.CreateUnreachable();
     EmitBlock(new BasicBlock(""));
     return true;
-  
+   
+  // Convert annotation built-in to llvm.annotation intrinsic.
+  case BUILT_IN_ANNOTATION: {
+    
+    // Get file and line number
+    location_t locus = EXPR_LOCATION (exp);
+    Constant *lineNo = ConstantInt::get(Type::Int32Ty, locus.line);
+    Constant *file = ConvertMetadataStringToGV(locus.file);
+    const Type *SBP= PointerType::getUnqual(Type::Int8Ty);
+    file = ConstantExpr::getBitCast(file, SBP);
+    
+    // Get arguments.
+    tree arglist = TREE_OPERAND(exp, 1);
+    Value *ExprVal = Emit(TREE_VALUE(arglist), 0);
+    const Type *Ty = ExprVal->getType();
+    Value *StrVal = Emit(TREE_VALUE(TREE_CHAIN(arglist)), 0);
+    
+    SmallVector<Value *, 4> Args;
+    Args.push_back(ExprVal);
+    Args.push_back(StrVal);
+    Args.push_back(file);
+    Args.push_back(lineNo);
+    
+    assert(Ty && "llvm.annotation arg type may not be null");
+    Result = Builder.CreateCall(Intrinsic::getDeclaration(TheModule, 
+                                                          Intrinsic::annotation, 
+                                                          &Ty, 
+                                                          1),
+                                Args.begin(), Args.end());
+    return true;
+  }
+    
 #if 1  // FIXME: Should handle these GCC extensions eventually.
     case BUILT_IN_APPLY_ARGS:
     case BUILT_IN_APPLY:





More information about the llvm-commits mailing list