[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