[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