[llvm-commits] [llvm-gcc-4.2] r46236 - /llvm-gcc-4.2/trunk/gcc/objc/objc-act.c
Dale Johannesen
dalej at apple.com
Mon Jan 21 17:29:51 PST 2008
Author: johannes
Date: Mon Jan 21 19:29:51 2008
New Revision: 46236
URL: http://llvm.org/viewvc/llvm-project?rev=46236&view=rev
Log:
Back out one of previous changes for Obj-C++; it
handles the issue differently in the C++ FE code.
Fix another type/initializer mismatch in INSTANCE_VARIABLES.
Modified:
llvm-gcc-4.2/trunk/gcc/objc/objc-act.c
Modified: llvm-gcc-4.2/trunk/gcc/objc/objc-act.c
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/objc/objc-act.c?rev=46236&r1=46235&r2=46236&view=diff
==============================================================================
--- llvm-gcc-4.2/trunk/gcc/objc/objc-act.c (original)
+++ llvm-gcc-4.2/trunk/gcc/objc/objc-act.c Mon Jan 21 19:29:51 2008
@@ -10456,6 +10456,8 @@
{
tree initlist = NULL_TREE;
int val;
+ /* LLVM LOCAL make sizes add up right */
+ int skipped = 0;
do {
tree ivar = NULL_TREE;
@@ -10463,8 +10465,12 @@
/* Unnamed bitfields are ignored. */
if (!DECL_NAME (field_decl))
{
- do
+ /* LLVM LOCAL begin make sizes add up right */
+ do {
field_decl = TREE_CHAIN (field_decl);
+ skipped++;
+ }
+ /* LLVM LOCAL end */
while (field_decl && TREE_CODE (field_decl) != FIELD_DECL);
continue;
}
@@ -10522,6 +10528,26 @@
}
while (field_decl);
+#ifndef OBJCPLUS
+ /* LLVM LOCAL begin make sizes add up right. The size in 'type' counted
+ any unnamed bitfields that we skipped above; add null nodes at the
+ end of the list to compensate. */
+ while (skipped--)
+ {
+ tree ivar = NULL_TREE;
+ ivar = tree_cons (NULL_TREE, build_int_cst (ptr_type_node, 0), ivar);
+ ivar = tree_cons (NULL_TREE, build_int_cst (string_type_node, 0), ivar);
+ ivar = tree_cons (NULL_TREE, build_int_cst (string_type_node, 0), ivar);
+ ivar = tree_cons (NULL_TREE, build_int_cst (NULL_TREE, 0), ivar);
+ ivar = tree_cons (NULL_TREE, build_int_cst (NULL_TREE, 0), ivar);
+
+ initlist = tree_cons (NULL_TREE,
+ objc_build_constructor (type, nreverse(ivar)),
+ initlist);
+ }
+ /* LLVM LOCAL end */
+#endif
+
return objc_build_constructor (build_array_type (type, 0),
nreverse (initlist));
}
@@ -10841,9 +10867,13 @@
/* LLVM LOCAL begin make initializer size match type size */
/* APPLE LOCAL ObjC new abi */
- initlist = build_tree_list (NULL_TREE, build_int_cst (newabi
- ? NULL_TREE
- : ptr_type_node,
+ initlist = build_tree_list (NULL_TREE, build_int_cst (
+#ifdef OBJCPLUS
+ NULL_TREE,
+#else
+ newabi ? NULL_TREE : ptr_type_node,
+#endif
+
init_val));
/* LLVM LOCAL end */
initlist = tree_cons (NULL_TREE, build_int_cst (NULL_TREE, size), initlist);
More information about the llvm-commits
mailing list