[llvm-commits] [llvm-gcc-4.2] r56729 - in /llvm-gcc-4.2/trunk/gcc/objc: ChangeLog.apple objc-act.c
Bill Wendling
isanbard at gmail.com
Fri Sep 26 17:24:12 PDT 2008
Author: void
Date: Fri Sep 26 19:24:12 2008
New Revision: 56729
URL: http://llvm.org/viewvc/llvm-project?rev=56729&view=rev
Log:
Don't generate trampolines for blocks.
Modified:
llvm-gcc-4.2/trunk/gcc/objc/ChangeLog.apple
llvm-gcc-4.2/trunk/gcc/objc/objc-act.c
Modified: llvm-gcc-4.2/trunk/gcc/objc/ChangeLog.apple
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/objc/ChangeLog.apple?rev=56729&r1=56728&r2=56729&view=diff
==============================================================================
--- llvm-gcc-4.2/trunk/gcc/objc/ChangeLog.apple (original)
+++ llvm-gcc-4.2/trunk/gcc/objc/ChangeLog.apple Fri Sep 26 19:24:12 2008
@@ -1,3 +1,22 @@
+2008-09-23 Fariborz Jahanian <fjahanian at apple.com>
+
+ Radar 6230701
+ * objc-act.c (access_block_ref_self_decl): New
+ (build_ivar_reference): Call it, instead of inline code.
+ (get_super_receiver): Call access_block_ref_self_decl to get
+ copied-in version of 'self' when building 'super'
+ messaging.
+
+2008-09-19 Fariborz Jahanian <fjahanian at apple.com>
+
+ Radar 6230800
+ * objc-act.c (objc_v2_build_ivar_ref): Better text for diagnostic.
+
+2008-09-19 Fariborz Jahanian <fjahanian at apple.com>
+
+ Radar 4900615
+ * objc-act.c (encode_type): Encode long double as 'D'.
+
2008-09-11 Fariborz Jahanian <fjahanian at apple.com>
Radar 5839123
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=56729&r1=56728&r2=56729&view=diff
==============================================================================
--- llvm-gcc-4.2/trunk/gcc/objc/objc-act.c (original)
+++ llvm-gcc-4.2/trunk/gcc/objc/objc-act.c Fri Sep 26 19:24:12 2008
@@ -7492,7 +7492,8 @@
#endif
))
{
- error ("Illegal reference to 'none-fragile' ivar");
+ /* APPLE LOCAL radar 6230800 */
+ error ("Illegal reference to non-fragile ivar");
return error_mark_node;
}
/* APPLE LOCAL end radar 4954480 */
@@ -14259,6 +14260,20 @@
return result;
}
+/* APPLE LOCAL begin radar 6230701 */
+/* Find a 'self' declaration in this block. If not found,
+ add a 'const' copy in current block. */
+static void
+access_block_ref_self_decl (tree *decl)
+{
+ if (lookup_name_in_block (DECL_NAME (*decl), decl))
+ *decl = lookup_name (DECL_NAME (*decl));
+ else
+ *decl = build_block_ref_decl (DECL_NAME (*decl), *decl);
+ gcc_assert (*decl);
+}
+/* APPLE LOCAL end radar 6230701 */
+
static tree
build_ivar_reference (tree id)
{
@@ -14289,18 +14304,7 @@
{
/* Find a 'self' declaration in this block. If not found,
add a 'const' copy in current block. */
- if (lookup_name_in_block (DECL_NAME (decl), &decl))
- decl = lookup_name (DECL_NAME (decl));
- else {
-#ifndef OBJCPLUS
- if (building_block_byref_decl) {
- warning (0, "ivar %qs may not be declared inside the 'byref' block - ignored",
- IDENTIFIER_POINTER (id));
- return error_mark_node;
- }
-#endif
- decl = build_block_ref_decl (DECL_NAME (decl), decl);
- }
+ access_block_ref_self_decl (&decl);
gcc_assert (decl);
}
base = build_indirect_ref (decl, "->");
@@ -17506,9 +17510,11 @@
switch (GET_MODE_BITSIZE (TYPE_MODE (type)))
{
case 32: c = 'f'; break;
- case 64:
+ /* APPLE LOCAL begin radar 4900615 */
+ case 64: c = 'd'; break;
case 96:
- case 128: c = 'd'; break;
+ case 128: c = 'D'; break;
+ /* APPLE LOCAL end radar 4900615 */
default: abort ();
}
obstack_1grow (&util_obstack, c);
@@ -18211,7 +18217,16 @@
/* Set receiver to self. */
super_expr = objc_build_component_ref (UOBJC_SUPER_decl, self_id);
- super_expr = build_modify_expr (super_expr, NOP_EXPR, self_decl);
+ /* APPLE LOCAL begin radar 6230701 */
+ if (cur_block)
+ {
+ tree local_self_decl = self_decl;
+ access_block_ref_self_decl (&local_self_decl);
+ super_expr = build_modify_expr (super_expr, NOP_EXPR, local_self_decl);
+ }
+ else
+ super_expr = build_modify_expr (super_expr, NOP_EXPR, self_decl);
+ /* APPLE LOCAL end radar 6230701 */
super_expr_list = super_expr;
/* Set class to begin searching. */
More information about the llvm-commits
mailing list