[llvm-commits] [llvm-gcc-4.2] r53131 - /llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp
Devang Patel
dpatel at apple.com
Thu Jul 3 17:46:39 PDT 2008
Author: dpatel
Date: Thu Jul 3 19:46:39 2008
New Revision: 53131
URL: http://llvm.org/viewvc/llvm-project?rev=53131&view=rev
Log:
Expand BUILT_IN_OBJECT_SIZE.
Modified:
llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp
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=53131&r1=53130&r2=53131&view=diff
==============================================================================
--- llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp (original)
+++ llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp Thu Jul 3 19:46:39 2008
@@ -4334,6 +4334,27 @@
case BUILT_IN_UNWIND_INIT:
return EmitBuiltinUnwindInit(exp, Result);
+ case BUILT_IN_OBJECT_SIZE: {
+ tree ArgList = TREE_OPERAND (exp, 1);
+ if (!validate_arglist(ArgList, POINTER_TYPE, INTEGER_TYPE, VOID_TYPE)) {
+ error("Invalid builtin_object_size argument types");
+ return false;
+ }
+ tree ObjSizeTree = TREE_VALUE (TREE_CHAIN (ArgList));
+ STRIP_NOPS (ObjSizeTree);
+ if (TREE_CODE (ObjSizeTree) != INTEGER_CST
+ || tree_int_cst_sgn (ObjSizeTree) < 0
+ || compare_tree_int (ObjSizeTree, 3) > 0) {
+ error("Invalid second builtin_object_size argument");
+ return false;
+ }
+
+ if (tree_low_cst (ObjSizeTree, 0) < 2)
+ Result = ConstantInt::get(Type::Int32Ty, 0);
+ else
+ Result = ConstantInt::getAllOnesValue(Type::Int32Ty);
+ return true;
+ }
// Unary bit counting intrinsics.
// NOTE: do not merge these case statements. That will cause the memoized
// Function* to be incorrectly shared across the different typed functions.
More information about the llvm-commits
mailing list