[llvm-commits] [llvm-gcc-4.2] r49422 - /llvm-gcc-4.2/trunk/gcc/llvm-types.cpp

Devang Patel dpatel at apple.com
Wed Apr 9 09:07:49 PDT 2008


Pl. avoid the word "Hack" in the comments.
-
Devang
On Apr 9, 2008, at 2:39 AM, Duncan Sands wrote:

> Author: baldrick
> Date: Wed Apr  9 04:39:29 2008
> New Revision: 49422
>
> URL: http://llvm.org/viewvc/llvm-project?rev=49422&view=rev
> Log:
> Hack to fix PR1971.
>
> Modified:
>    llvm-gcc-4.2/trunk/gcc/llvm-types.cpp
>
> Modified: llvm-gcc-4.2/trunk/gcc/llvm-types.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/llvm-types.cpp?rev=49422&r1=49421&r2=49422&view=diff
>
> =
> =
> =
> =
> =
> =
> =
> =
> ======================================================================
> --- llvm-gcc-4.2/trunk/gcc/llvm-types.cpp (original)
> +++ llvm-gcc-4.2/trunk/gcc/llvm-types.cpp Wed Apr  9 04:39:29 2008
> @@ -1701,7 +1701,8 @@
> // node for it, but not when A is a nonvirtual base class.  So we  
> can't
> // use that.)
> static void FixBaseClassFields(tree type) {
> -  assert(TREE_CODE(type)==RECORD_TYPE);
> +  if (TREE_CODE(type)!=RECORD_TYPE)
> +    return;
>   for (tree Field = TYPE_FIELDS(type); Field; Field =  
> TREE_CHAIN(Field)) {
>     if (TREE_CODE(Field)==FIELD_DECL &&
>         !DECL_BIT_FIELD_TYPE(Field) &&
> @@ -1749,7 +1750,8 @@
> // code continues to work (there are pointers stashed away in there).
>
> static void RestoreBaseClassFields(tree type) {
> -  assert(TREE_CODE(type)==RECORD_TYPE);
> +  if (TREE_CODE(type)!=RECORD_TYPE)
> +    return;
>   for (tree Field = TYPE_FIELDS(type); Field; Field =  
> TREE_CHAIN(Field)) {
>     if (TREE_CODE(Field) == FIELD_DECL &&  
> DECL_FIELD_REPLACED(Field)) {
>       tree &oldTy = BaseTypesMap[TREE_TYPE(Field)];
> @@ -2174,7 +2176,13 @@
>   unsigned MaxSize = 0, MaxAlign = 0;
>   for (tree Field = TYPE_FIELDS(type); Field; Field =  
> TREE_CHAIN(Field)) {
>     if (TREE_CODE(Field) != FIELD_DECL) continue;
> -    assert(getFieldOffsetInBits(Field) == 0 && "Union with non-zero  
> offset?");
> +//    assert(getFieldOffsetInBits(Field) == 0 && "Union with non- 
> zero offset?");
> +    // Hack to get Fortran EQUIVALENCE working.
> +    // TODO: Unify record and union logic and handle this optimally.
> +    if (getFieldOffsetInBits(Field) != 0) {
> +      ConvertingStruct = OldConvertingStruct;
> +      return ConvertRECORD(type, orig_type);
> +    }
>
>     // Set the field idx to zero for all fields.
>     SetFieldIndex(Field, 0);
>
>
> _______________________________________________
> 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