1132718Skan/* Stub functions for Objective-C and Objective-C++ routines
2132718Skan   that are called from within the C and C++ front-ends,
3132718Skan   respectively.
4132718Skan   Copyright (C) 1991, 1995, 1997, 1998,
5169689Skan   1999, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
6132718Skan
7132718SkanThis file is part of GCC.
8132718Skan
9132718SkanGCC is free software; you can redistribute it and/or modify it under
10132718Skanthe terms of the GNU General Public License as published by the Free
11132718SkanSoftware Foundation; either version 2, or (at your option) any later
12132718Skanversion.
13132718Skan
14132718SkanGCC is distributed in the hope that it will be useful, but WITHOUT ANY
15132718SkanWARRANTY; without even the implied warranty of MERCHANTABILITY or
16132718SkanFITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
17132718Skanfor more details.
18132718Skan
19132718SkanYou should have received a copy of the GNU General Public License
20132718Skanalong with GCC; see the file COPYING.  If not, write to the Free
21169689SkanSoftware Foundation, 51 Franklin Street, Fifth Floor, Boston, MA
22169689Skan02110-1301, USA.  */
23132718Skan
24132718Skan#include "config.h"
25132718Skan#include "system.h"
26132718Skan#include "coretypes.h"
27132718Skan#include "tree.h"
28132718Skan#include "c-common.h"
29132718Skan
30132718Skantree
31169689Skanobjc_is_class_name (tree ARG_UNUSED (arg))
32132718Skan{
33132718Skan  return 0;
34132718Skan}
35132718Skan
36132718Skantree
37169689Skanobjc_is_id (tree ARG_UNUSED (arg))
38132718Skan{
39132718Skan  return 0;
40132718Skan}
41132718Skan
42132718Skantree
43169689Skanobjc_is_object_ptr (tree ARG_UNUSED (arg))
44132718Skan{
45132718Skan  return 0;
46132718Skan}
47132718Skan
48261188Spfg/* APPLE LOCAL begin radar 4133425 */
49261188Spfgbool objc_diagnose_private_ivar (tree ARG_UNUSED (arg))
50261188Spfg{
51261188Spfg  return false;
52261188Spfg}
53261188Spfg/* APPLE LOCAL end radar 4133425 */
54261188Spfg
55132718Skantree
56169689Skanobjc_lookup_ivar (tree other, tree ARG_UNUSED (arg))
57132718Skan{
58169689Skan  /* Just use whatever C/C++ found.  */
59169689Skan  return other;
60132718Skan}
61132718Skan
62132718Skanvoid
63169689Skanobjc_check_decl (tree ARG_UNUSED (decl))
64132718Skan{
65132718Skan}
66261188Spfg
67261188Spfg/* APPLE LOCAL begin radar 4281748 */
68261188Spfgvoid
69261188Spfgobjc_check_global_decl (tree ARG_UNUSED (decl))
70261188Spfg{
71261188Spfg}
72261188Spfg/* APPLE LOCAL end radar 4281748 */
73261188Spfg
74261188Spfg/* APPLE LOCAL begin radar 4330422 */
75261188Spfgtree
76261188Spfgobjc_non_volatilized_type (tree type)
77261188Spfg{
78261188Spfg  return type;
79261188Spfg}
80261188Spfg/* APPLE LOCAL end radar 4330422 */
81261188Spfg
82261188Spfg/* APPLE LOCAL begin radar 4697411 */
83261188Spfgvoid
84261188Spfgobjc_volatilize_component_ref (tree ARG_UNUSED (cref), tree ARG_UNUSED (type))
85261188Spfg{
86261188Spfg}
87261188Spfg/* APPLE LOCAL end radar 4697411 */
88132718Skan
89132718Skanint
90169689Skanobjc_is_reserved_word (tree ARG_UNUSED (ident))
91169689Skan{
92169689Skan  return 0;
93132718Skan}
94132718Skan
95261188Spfg/* APPLE LOCAL begin 4154928 */
96261188Spfgtree
97261188Spfgobjc_common_type (tree ARG_UNUSED (type1), tree ARG_UNUSED (type2))
98261188Spfg{
99261188Spfg  return false;
100261188Spfg}
101261188Spfg/* APPLE LOCAL end 4154928 */
102261188Spfg
103169689Skanbool
104169689Skanobjc_compare_types (tree ARG_UNUSED (ltyp), tree ARG_UNUSED (rtyp),
105261188Spfg		    /* APPLE LOCAL begin radar 6231433 */
106261188Spfg		    int ARG_UNUSED (argno), tree ARG_UNUSED (callee),
107261188Spfg		    const char * ARG_UNUSED (message))
108261188Spfg		    /* APPLE LOCAL end radar 6231433 */
109169689Skan{
110169689Skan  return false;
111169689Skan}
112169689Skan
113261188Spfg/* APPLE LOCAL begin radar 4229905 - radar 6231433 */
114261188Spfgbool
115261188Spfgobjc_have_common_type (tree ARG_UNUSED (ltyp), tree ARG_UNUSED (rtyp),
116261188Spfg		       int ARG_UNUSED (argno), tree ARG_UNUSED (callee),
117261188Spfg		       const char * ARG_UNUSED (message))
118261188Spfg{
119261188Spfg  return false;
120261188Spfg}
121261188Spfg/* APPLE LOCAL end radar 4229905 - radar 6231433 */
122261188Spfg
123169689Skanvoid
124169689Skanobjc_volatilize_decl (tree ARG_UNUSED (decl))
125169689Skan{
126169689Skan}
127169689Skan
128169689Skanbool
129169689Skanobjc_type_quals_match (tree ARG_UNUSED (ltyp), tree ARG_UNUSED (rtyp))
130169689Skan{
131169689Skan  return false;
132169689Skan}
133169689Skan
134132718Skantree
135169689Skanobjc_rewrite_function_call (tree function, tree ARG_UNUSED (params))
136169689Skan{
137169689Skan  return function;
138169689Skan}
139169689Skan
140169689Skantree
141132718Skanobjc_message_selector (void)
142132718Skan{
143132718Skan  return 0;
144132718Skan}
145132718Skan
146169689Skanvoid
147169689Skanobjc_declare_alias (tree ARG_UNUSED (alias), tree ARG_UNUSED (orig))
148169689Skan{
149169689Skan}
150169689Skan
151169689Skanvoid
152169689Skanobjc_declare_class (tree ARG_UNUSED (list))
153169689Skan{
154169689Skan}
155169689Skan
156169689Skanvoid
157261188Spfg/* APPLE LOCAL begin radar 4947311 - protocol attributes */
158261188Spfgobjc_declare_protocols (tree ARG_UNUSED (list), tree ARG_UNUSED (attributes))
159169689Skan{
160169689Skan}
161169689Skan
162169689Skanvoid
163169689Skanobjc_start_protocol (tree ARG_UNUSED (proto),
164261188Spfg		     tree ARG_UNUSED (protorefs),
165261188Spfg		     tree ARG_UNUSED (attributes))
166169689Skan{
167169689Skan}
168261188Spfg/* APPLE LOCAL end radar 4947311 - protocol attributes */
169169689Skan
170169689Skanvoid
171169689Skanobjc_start_class_interface (tree ARG_UNUSED (name),
172169689Skan			    tree ARG_UNUSED (super),
173261188Spfg/* APPLE LOCAL begin radar 4548636 */
174261188Spfg			    tree ARG_UNUSED (protos),
175261188Spfg			    tree ARG_UNUSED (attributes))
176261188Spfg/* APPLE LOCAL end radar 4548636 */
177169689Skan{
178169689Skan}
179169689Skan
180169689Skanvoid
181169689Skanobjc_start_category_interface (tree ARG_UNUSED (name),
182169689Skan			       tree ARG_UNUSED (categ),
183169689Skan			       tree ARG_UNUSED (protos))
184169689Skan{
185169689Skan}
186169689Skan
187169689Skanvoid
188169689Skanobjc_continue_interface (void)
189169689Skan{
190169689Skan}
191169689Skan
192169689Skanvoid
193169689Skanobjc_finish_interface (void)
194169689Skan{
195169689Skan}
196169689Skan
197169689Skanvoid
198169689Skanobjc_add_instance_variable (tree ARG_UNUSED (decl))
199169689Skan{
200169689Skan}
201169689Skan
202169689Skanvoid
203169689Skanobjc_set_visibility (int ARG_UNUSED (vis))
204169689Skan{
205169689Skan}
206169689Skan
207169689Skanvoid
208169689Skanobjc_set_method_type (enum tree_code ARG_UNUSED (code))
209169689Skan{
210169689Skan}
211169689Skan
212169689Skanvoid
213169689Skanobjc_start_class_implementation (tree ARG_UNUSED (name),
214169689Skan				 tree ARG_UNUSED (super))
215169689Skan{
216169689Skan}
217169689Skan
218169689Skanvoid
219169689Skanobjc_start_category_implementation (tree ARG_UNUSED (name),
220169689Skan				    tree ARG_UNUSED (categ))
221169689Skan{
222169689Skan}
223169689Skan
224169689Skanvoid
225169689Skanobjc_continue_implementation (void)
226169689Skan{
227169689Skan}
228169689Skan
229169689Skanvoid
230169689Skanobjc_clear_super_receiver (void)
231169689Skan{
232169689Skan}
233169689Skan
234169689Skanvoid
235169689Skanobjc_finish_implementation (void)
236169689Skan{
237169689Skan}
238169689Skan
239169689Skanvoid
240261188Spfg/* APPLE LOCAL begin radar 3803157 - objc attribute */
241261188Spfgobjc_add_method_declaration (tree ARG_UNUSED (signature),
242261188Spfg			     tree ARG_UNUSED (attribute))
243261188Spfg/* APPLE LOCAL end radar 3803157 - objc attribute */
244169689Skan{
245169689Skan}
246169689Skan
247169689Skanvoid
248261188Spfg/* APPLE LOCAL begin radar 3803157 - objc attribute */
249261188Spfgobjc_start_method_definition (tree ARG_UNUSED (signature),
250261188Spfg			      tree ARG_UNUSED (attribute))
251261188Spfg/* APPLE LOCAL end radar 3803157 - objc attribute */
252169689Skan{
253169689Skan}
254169689Skan
255169689Skanvoid
256169689Skanobjc_finish_method_definition (tree ARG_UNUSED (fndecl))
257169689Skan{
258169689Skan}
259169689Skan
260169689Skantree
261169689Skanobjc_build_keyword_decl (tree ARG_UNUSED (selector),
262169689Skan			 tree ARG_UNUSED (typename),
263261188Spfg			 /* APPLE LOCAL begin radar 4157812 */
264261188Spfg			 tree ARG_UNUSED (identifier),
265261188Spfg			 tree ARG_UNUSED (attribute))
266261188Spfg			 /* APPLE LOCAL end radar 4157812 */
267169689Skan{
268169689Skan  return 0;
269169689Skan}
270169689Skan
271169689Skantree
272169689Skanobjc_build_method_signature (tree ARG_UNUSED (rettype),
273169689Skan			     tree ARG_UNUSED (selectors),
274169689Skan			     tree ARG_UNUSED (optparms),
275169689Skan			     bool ARG_UNUSED (ellipsis))
276169689Skan{
277169689Skan  return 0;
278169689Skan}
279169689Skan
280169689Skantree
281169689Skanobjc_build_encode_expr (tree ARG_UNUSED (expr))
282169689Skan{
283169689Skan  return 0;
284169689Skan}
285169689Skan
286169689Skantree
287169689Skanobjc_build_protocol_expr (tree ARG_UNUSED (expr))
288169689Skan{
289169689Skan  return 0;
290169689Skan}
291169689Skan
292169689Skantree
293169689Skanobjc_build_selector_expr (tree ARG_UNUSED (expr))
294169689Skan{
295169689Skan  return 0;
296169689Skan}
297169689Skan
298169689Skantree
299169689Skanobjc_build_message_expr (tree ARG_UNUSED (expr))
300169689Skan{
301169689Skan  return 0;
302169689Skan}
303169689Skan
304169689Skantree
305169689Skanobjc_build_string_object (tree ARG_UNUSED (str))
306169689Skan{
307169689Skan  return 0;
308169689Skan}
309169689Skan
310169689Skantree
311169689Skanobjc_get_class_reference (tree ARG_UNUSED (name))
312169689Skan{
313169689Skan  return 0;
314169689Skan}
315169689Skan
316261188Spfg/* APPLE LOCAL begin radar 4291785 */
317169689Skantree
318261188Spfgobjc_get_interface_ivars (tree ARG_UNUSED (fieldlist))
319261188Spfg{
320261188Spfg  return 0;
321261188Spfg}
322261188Spfgvoid
323261188Spfgobjc_detect_field_duplicates (tree ARG_UNUSED (fieldlist))
324261188Spfg{
325261188Spfg}
326261188Spfg/* APPLE LOCAL end radar 4291785 */
327261188Spfg
328261188Spfgtree
329169689Skanobjc_get_protocol_qualified_type (tree ARG_UNUSED (name),
330169689Skan				  tree ARG_UNUSED (protos))
331169689Skan{
332169689Skan  return 0;
333169689Skan}
334169689Skan
335169689Skanint
336169689Skanobjc_static_init_needed_p (void)
337169689Skan{
338169689Skan  return 0;
339169689Skan}
340169689Skan
341169689Skantree
342169689Skanobjc_generate_static_init_call (tree ARG_UNUSED (ctors))
343169689Skan{
344169689Skan  return 0;
345169689Skan}
346169689Skan
347169689Skanint
348169689Skanobjc_is_public (tree ARG_UNUSED (expr), tree ARG_UNUSED (identifier))
349169689Skan{
350169689Skan  return 1;
351169689Skan}
352169689Skan
353261188Spfg/* APPLE LOCAL begin C* language */
354261188Spfgvoid
355261188Spfgobjc_set_method_opt (int ARG_UNUSED (opt))
356261188Spfg{
357261188Spfg}
358261188Spfg
359169689Skantree
360261188Spfgobjc_build_component_ref (tree ARG_UNUSED (datum), tree ARG_UNUSED (component))
361261188Spfg{
362261188Spfg  return 0;
363261188Spfg}
364261188Spfg
365261188Spfgtree
366261188Spfgobjc_build_foreach_components (tree ARG_UNUSED (receiver),
367261188Spfg			       tree *ARG_UNUSED (enumState_decl),
368261188Spfg			       tree *ARG_UNUSED (items_decl),
369261188Spfg			       tree *ARG_UNUSED (limit_decl),
370261188Spfg			       tree *ARG_UNUSED (startMutations_decl),
371261188Spfg			       tree *ARG_UNUSED (counter_decl),
372261188Spfg			       tree *ARG_UNUSED (countByEnumeratingWithState))
373261188Spfg{
374261188Spfg  return 0;
375261188Spfg}
376261188Spfg/* APPLE LOCAL end C* language */
377261188Spfg
378261188Spfg/* APPLE LOCAL begin C* property (Radar 4436866) */
379261188Spfgvoid
380261188Spfgobjc_set_property_attr (int ARG_UNUSED (code), tree ARG_UNUSED (identifier))
381261188Spfg{
382261188Spfg}
383261188Spfgvoid
384261188Spfgobjc_add_property_variable (tree ARG_UNUSED (prop))
385261188Spfg{
386261188Spfg}
387261188Spfg/* APPLE LOCAL radar 5285911 */
388261188Spfg/* Stub for objc_build_getter_call is removed. */
389261188Spfgtree
390261188Spfgobjc_build_setter_call (tree ARG_UNUSED (lhs), tree ARG_UNUSED (rhs))
391261188Spfg{
392261188Spfg  return 0;
393261188Spfg}
394261188Spfg/* APPLE LOCAL end C* property (Radar 4436866) */
395261188Spfg
396261188Spfgtree
397169689Skanobjc_get_class_ivars (tree ARG_UNUSED (name))
398169689Skan{
399169689Skan  return 0;
400169689Skan}
401169689Skan
402169689Skantree
403169689Skanobjc_build_throw_stmt (tree ARG_UNUSED (expr))
404169689Skan{
405169689Skan  return 0;
406169689Skan}
407169689Skan
408169689Skantree
409169689Skanobjc_build_synchronized (location_t ARG_UNUSED (start_locus),
410169689Skan			 tree ARG_UNUSED (mutex), tree ARG_UNUSED (body))
411169689Skan{
412169689Skan  return 0;
413169689Skan}
414169689Skan
415169689Skanvoid
416169689Skanobjc_begin_try_stmt (location_t ARG_UNUSED (try_locus), tree ARG_UNUSED (body))
417169689Skan{
418169689Skan}
419169689Skan
420169689Skanvoid
421169689Skanobjc_begin_catch_clause (tree ARG_UNUSED (decl))
422169689Skan{
423169689Skan}
424169689Skan
425169689Skanvoid
426169689Skanobjc_finish_catch_clause (void)
427169689Skan{
428169689Skan}
429169689Skan
430169689Skanvoid
431169689Skanobjc_build_finally_clause (location_t ARG_UNUSED (finally_locus),
432169689Skan			   tree ARG_UNUSED (body))
433169689Skan{
434169689Skan}
435169689Skan
436169689Skantree
437169689Skanobjc_finish_try_stmt (void)
438169689Skan{
439169689Skan  return 0;
440169689Skan}
441169689Skan
442169689Skantree
443169689Skanobjc_generate_write_barrier (tree ARG_UNUSED (lhs),
444169689Skan			     enum tree_code ARG_UNUSED (modifycode),
445169689Skan			     tree ARG_UNUSED (rhs))
446169689Skan{
447169689Skan  return 0;
448169689Skan}
449261188Spfg/* APPLE LOCAL begin radar 5276085 */
450261188Spfgvoid objc_weak_reference_expr (tree* ARG_UNUSED (expr))
451261188Spfg{
452261188Spfg}
453261188Spfg
454261188Spfgtree
455261188Spfgobjc_build_weak_reference_tree (tree expr)
456261188Spfg{
457261188Spfg  return expr;
458261188Spfg}
459261188Spfg/* APPLE LOCAL end radar 5276085 */
460261188Spfg
461261188Spfg/* APPLE LOCAL begin C* warnings to easy porting to new abi */
462261188Spfgvoid
463261188Spfgdiagnose_selector_cast (tree ARG_UNUSED (cast_type), tree ARG_UNUSED (sel_exp))
464261188Spfg{
465261188Spfg}
466261188Spfg/* APPLE LOCAL end C* warnings to easy porting to new abi */
467261188Spfg
468261188Spfg/* APPLE LOCAL begin radar 4441049 */
469261188Spfgtree
470261188Spfgobjc_v2_component_ref_field_offset (tree ARG_UNUSED (exp))
471261188Spfg{
472261188Spfg  return 0;
473261188Spfg}
474261188Spfg
475261188Spfgtree
476261188Spfgobjc_v2_bitfield_ivar_bitpos (tree ARG_UNUSED (exp))
477261188Spfg{
478261188Spfg  return 0;
479261188Spfg}
480261188Spfg/* APPLE LOCAL end radar 4441049 */
481261188Spfg/* APPLE LOCAL begin radar 4507230 */
482261188Spfgbool
483261188Spfgobjc_type_valid_for_messaging (tree ARG_UNUSED (exp))
484261188Spfg{
485261188Spfg  return false;
486261188Spfg}
487261188Spfg/* APPLE LOCAL end radar 4507230 */
488261188Spfg/* APPLE LOCAL begin radar 3803157 - objc attribute */
489261188Spfgbool
490261188Spfgobjc_method_decl (enum tree_code ARG_UNUSED (opcode))
491261188Spfg{
492261188Spfg  return false;
493261188Spfg}
494261188Spfg/* APPLE LOCAL end radar 3803157 - objc attribute */
495261188Spfg
496261188Spfg/* APPLE LOCAL begin radar 4708210 (for_objc_collection in 4.2) */
497261188Spfgvoid
498261188Spfgobjc_finish_foreach_loop (location_t ARG_UNUSED (location), tree ARG_UNUSED (cond),
499261188Spfg	  tree ARG_UNUSED (for_body), tree ARG_UNUSED (blab),
500261188Spfg	  tree ARG_UNUSED (clab))
501261188Spfg{
502261188Spfg  return;
503261188Spfg}
504261188Spfg/* APPLE LOCAL end radar 4708210 (for_objc_collection in 4.2) */
505261188Spfg/* APPLE LOCAL begin radar 5847976 */
506261188Spfgint
507261188Spfgobjc_is_gcable_type (tree ARG_UNUSED (type))
508261188Spfg{
509261188Spfg  return 0;
510261188Spfg}
511261188Spfg/* APPLE LOCAL end radar 5847976 */
512261188Spfg/* APPLE LOCAL begin radar 4592503 */
513261188Spfgvoid
514261188Spfgobjc_checkon_weak_attribute (tree ARG_UNUSED (decl))
515261188Spfg{
516261188Spfg  return;
517261188Spfg}
518261188Spfg/* APPLE LOCAL end radar 4592503 */
519261188Spfg/* APPLE LOCAL begin radar 4712269 */
520261188Spfgtree
521261188Spfgobjc_build_incr_decr_setter_call (enum tree_code ARG_UNUSED (code),
522261188Spfg				   tree ARG_UNUSED (lhs),
523261188Spfg				   tree ARG_UNUSED (inc))
524261188Spfg{
525261188Spfg  return NULL_TREE;
526261188Spfg}
527261188Spfg/* APPLE LOCAL end radar 4712269 */
528261188Spfg/* APPLE LOCAL begin objc new property */
529261188Spfgvoid objc_declare_property_impl (int ARG_UNUSED (code),
530261188Spfg				 tree ARG_UNUSED (tree_list))
531261188Spfg{
532261188Spfg}
533261188Spfg/* APPLE LOCAL begin radar 5285911 */
534261188Spfgtree
535261188Spfgobjc_build_property_reference_expr (tree ARG_UNUSED (datum),
536261188Spfg				    tree ARG_UNUSED (component))
537261188Spfg{
538261188Spfg  return 0;
539261188Spfg}
540261188Spfgbool
541261188Spfgobjc_property_reference_expr (tree ARG_UNUSED (exp))
542261188Spfg{
543261188Spfg  return false;
544261188Spfg}
545261188Spfg/* APPLE LOCAL end radar 5285911 */
546261188Spfg/* APPLE LOCAL end objc new property */
547261188Spfg/* APPLE LOCAL begin radar 4985544 */
548261188Spfgbool
549261188Spfgobjc_check_format_nsstring (tree ARG_UNUSED (argument),
550261188Spfg			     unsigned HOST_WIDE_INT ARG_UNUSED (format_num),
551261188Spfg			     bool * ARG_UNUSED(no_add_attrs))
552261188Spfg{
553261188Spfg  return false;
554261188Spfg}
555261188Spfg/* APPLE LOCAL end radar 4985544 */
556261188Spfg/* APPLE LOCAL begin radar 5202926 */
557261188Spfgbool
558261188Spfgobjc_anonymous_local_objc_name (const char * ARG_UNUSED (name))
559261188Spfg{
560261188Spfg  return false;
561261188Spfg}
562261188Spfg/* APPLE LOCAL begin radar 5195402 */
563261188Spfgbool
564261188Spfgobjc_check_nsstring_pointer_type (tree ARG_UNUSED (type))
565261188Spfg{
566261188Spfg  return false;
567261188Spfg}
568261188Spfg/* APPLE LOCAL end radar 5195402 */
569261188Spfg/* APPLE LOCAL end radar 5202926 */
570261188Spfg
571261188Spfg/* APPLE LOCAL begin radar 5782740 - blocks */
572261188Spfgbool block_requires_copying (tree exp)
573261188Spfg{
574261188Spfg  /* APPLE LOCAL begin radar 6175959 */
575261188Spfg  tree type = TREE_TYPE (exp);
576261188Spfg  return TREE_CODE (type) == BLOCK_POINTER_TYPE
577261188Spfg   || (POINTER_TYPE_P (type)
578261188Spfg	&& lookup_attribute ("NSObject", TYPE_ATTRIBUTES (type)));
579261188Spfg  /* APPLE LOCAL end radar 6175959 */
580261188Spfg}
581261188Spfg/* APPLE LOCAL end radar 5782740 - blocks */
582261188Spfg
583261188Spfg/* APPLE LOCAL begin radar 5802025 */
584261188Spfgtree objc_build_property_getter_func_call (tree object)
585261188Spfg{
586261188Spfg  return object;
587261188Spfg}
588261188Spfg/* APPLE LOCAL end radar 5802025 */
589