[llvm-commits] [llvm-gcc-4.2] r85190 - /llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp

Bob Wilson bob.wilson at apple.com
Tue Oct 27 10:47:38 PDT 2009


It looks like this is causing a bunch of other failures.  I'm going to  
revert this.

On Oct 27, 2009, at 10:06 AM, Bob Wilson wrote:

> Eric, my debug build of llvm is failing and it seems to be related to
> this change:
>
> 	make -C libprofile all
> llvm[2]: Compiling CommonProfiling.ll to CommonProfiling.bc for Debug
> build (bytecode)
> /Users/bwilson/local/llvm/objdir/Debug/bin/opt /Volumes/LocalHD/
> bwilson/llvm/objdir/runtime/libprofile/Debug/CommonProfiling.ll -std-
> compile-opts -strip-debug -o /Volumes/LocalHD/bwilson/llvm/objdir/
> runtime/libprofile/Debug/CommonProfiling.bc
> /Users/bwilson/local/llvm/objdir/Debug/bin/opt: /Volumes/LocalHD/
> bwilson/llvm/objdir/runtime/libprofile/Debug/CommonProfiling.ll:
> 251:19: error: '@llvm.objectsize.i64' defined with type 'i64 (i8**,
> i32)*'
>   %125 = call i64 @llvm.objectsize.i64(i8* %124, i32 0), !dbg !38 ;
> <i64> [#uses=1]
>                   ^
> make[2]: *** [/Volumes/LocalHD/bwilson/llvm/objdir/runtime/libprofile/
> Debug/CommonProfiling.bc] Error 1
> make[1]: *** [libprofile/.makeall] Error 2
> make: *** [all] Error 1
>
> This did not happen when the llvm-gcc used to compile
> CommonProfiling.c did not include this patch.  Can you please
> investigate?  Thanks.
>
> On Oct 26, 2009, at 5:53 PM, Eric Christopher wrote:
>
>> Author: echristo
>> Date: Mon Oct 26 19:53:46 2009
>> New Revision: 85190
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=85190&view=rev
>> Log:
>> Use new objectsize intrinsic for object size checking instead of
>> folding to "don't know" immediately.
>>
>> 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=85190&r1=85189&r2=85190&view=diff
>>
>> =
>> =
>> =
>> =
>> =
>> =
>> =
>> =
>> = 
>> =====================================================================
>> --- llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp (original)
>> +++ llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp Mon Oct 26 19:53:46 2009
>> @@ -4976,12 +4976,12 @@
>>    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)) {
>> +    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));
>> +    tree ObjSizeTree = TREE_VALUE (TREE_CHAIN (arglist));
>>    STRIP_NOPS (ObjSizeTree);
>>    if (TREE_CODE (ObjSizeTree) != INTEGER_CST
>>        || tree_int_cst_sgn (ObjSizeTree) < 0
>> @@ -4990,12 +4990,24 @@
>>      return false;
>>    }
>>
>> -    // This treats everything as unknown, and is minimally
>> defensible as
>> -    // correct, although completely useless.
>> -    if (tree_low_cst (ObjSizeTree, 0) < 2)
>> -      Result = Constant::getAllOnesValue(TD.getIntPtrType(Context));
>> -    else
>> -      Result = ConstantInt::get(TD.getIntPtrType(Context), 0);
>> +    tree Object = TREE_VALUE(arglist);
>> +    tree ObjTy = TREE_VALUE(TREE_CHAIN(arglist));
>> +
>> +    Value* Args[] = {
>> +      Emit(Object, 0),
>> +      Emit(ObjTy, 0)
>> +    };
>> +
>> +    const Type* Ty[3];
>> +    Ty[0] = ConvertType(TREE_TYPE(exp));
>> +    Ty[1] = Type::getInt8PtrTy(Context);
>> +    Ty[2] = Type::getInt32Ty(Context);
>> +
>> +    Result = Builder.CreateCall(Intrinsic::getDeclaration(TheModule,
>> +							  Intrinsic::objectsize,
>> +							  Ty,
>> +							  1),
>> +				Args, Args + 2);
>>    return true;
>>  }
>>  // Unary bit counting intrinsics.
>>
>>
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits




More information about the llvm-commits mailing list