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: _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits