1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
|
2010-03-16 Fariborz Jahanian <fjahanian@apple.com>
Radar 7760213
* c-common.h (HasByrefArray): New decl.
* c-common.c (HasByrefArray): New definition.
* c-typeck.c (build_external_ref): Diagnose access of
__block array.
2010-03-12 Jim Grosbach <grosbach@apple.com>
Radar 7744816
* expmed.c (synth_mult): Remove incorrect special case handling for
0xffffffff.
2010-03-12 Fariborz Jahanian <fjahanian@apple.com>
Radar 7735196
* c-parser.c (build_block_struct_initlist):
Set BLOCK_USE_STRET flag in block descriptor for
blocks which return their aggregate value in memory.
* c-common.h (BLOCK_USE_STRET): New flag.
2010-03-05 Fariborz Jahanian <fjahanian@apple.com>
Radar 7721728
* c-typeck.c (build_external_ref): Diagnose
importation of copied-in variables.
2009-03-12 Caroline Tice <ctice@apple.com>
Radar 6144634
* c-parser.c (c_parser_statement_after_labels): When
re-setting the expression location at the end, use the input
location for Block pointer assignments.
2009-02-11 Fariborz Jahanian <fjahanian@apple.com>
Radar 6573923
* c-decl.c (synth_block_byref_id_object_copy_func,
synth_block_byref_id_object_dispose_func): Set BLOCK_BYREF_CALLER
flag in call to copy/dispose helper functions.
* c-common.h (BLOCK_BYREF_CALLER): New flag.
2008-12-21 Caroline Tice <ctice@apple.com>
Radar 6455678
* cp/typeck.c (original_type): Stop if the type
and its DECL_ORIGINAL_TYPE are the same.
2008-12-18 Bill Wendling <wendling@apple.com>
Radar 6457359
* c-parser.c (build_block_struct_initlist): Changed type.
* cp/parser.c (build_block_struct_initlist): Ditto.
2008-12-02 Caroline Tice <ctice@apple.com>
Radar 6386976
* objcp/objcp-decl.h (TYPE_HAS_OBJCXX_INFO): New macro.
* objcp/objcp-lang.c (objcp-decl.h): New include statement, with
required define.
(LANG_HOOKS_IS_RUNTIME_SPECIFIC_TYPE): Redefine for
obj-c++.
(objcxx_is_runtime_type): New function.
2008-12-02 Fariborz Jahanian <fjahanian@apple.com>
Radar 6411649
* funciton.h: Added new field.
* c-common.c (build_block_helper_name): Produce a unique
block number per each enclosing function when building
the block helper function name.
2008-11-18 Stuart Hastings <stuart@apple.com>
Radar 6353006
* tree.c (generic_block_literal_struct_type): Fix APPLE LOCAL.
* langhooks-def.h (lhd_build_generic_block_struct_type): Fix
APPLE LOCAL.
2008-11-07 Fariborz Jahanian <fjahanian@apple.com>
Radar 5847976
* c-decl.c (synth_block_byref_id_object_copy_func): Takes a new
'flag' argument and generates the much simplified API.
(synth_block_byref_id_object_dispose_func): Ditto.
(new_block_byref_decl): Hack to prevent issuing bogus warning
on a field declared as __weak.
(init_byref_decl): Takes an additional 'flag' argument
and passes it down to synth_block_byref_id_object_copy_func and
synth_block_byref_id_object_dispose_func.
(finish_decl): Computes the flag for the block variable declaration.
* c-common.c (build_block_byref_release_decl,
build_block_byref_assign_copy_decl): Removed.
(build_block_byref_release_exp): Use the new API.
(build_block_object_assign_decl, build_block_object_assign_call_exp,
build_block_object_dispose_decl, build_block_object_dispose_call_exp): New.
(build_indirect_object_id_exp): Fixed a code gen bug which was exposed in
c/c++ mode, but not in ObjC/ObjC++ mode.
* c-common.h (build_block_object_assign_call_exp,
build_block_object_dispose_call_exp,
objc_is_gcable_type): New decls.
Declaration of several new flags.
(cast_to_pointer_to_id): Removed.
* stub-objc.c (objc_is_gcable_type): New
(copy_in_object, retain_block_component, release_block_component): Removed.
(cast_to_pointer_to_id): Removed.
* c-parser.c (build_block_struct_initlist): Remove call to copy_in_object.
(synth_copy_helper_block_func): Generates much simplified API.
(synth_destroy_helper_block_func): Ditto.
(block_object_dispose): Removed.
* config/darwin-c.c (darwin_cpp_builtins): Define __weak even when
-fobjc-gc is off.
2008-10-31 Fariborz Jahanian <fjahanian@apple.com>
Radar 6175959
* stub-objc.c (block_requires_copying): Object pointers with
NSObject attribute also require copy/release API.
* c-parser.c (synth_copy_helper_block_func): Use the new API
_Block_object_assign for ObjC object copying.
(block_object_dispose): New
(synth_destroy_helper_block_func): Call block_object_dispose
to use new _Block_object_dispose API for ObjC object release.
2008-10-27 Fariborz Jahanian <fjahanian@apple.com>
Radar 6231433
* c-typeck.c (objc_compare_types, objc_have_common_type):
Take an extra argument for better diagnostics.
* c-common.c (objc_compare_types, objc_have_common_type):
Take extra argument.
* stub-objc.c: Ditto
2008-10-24 Fariborz Jahanian <fjahanian@apple.com>
Radar 6305545
* cgraph.h (lower_if_nested_functions): New decl.
* tree-gimple.h (lower_nested_functions): Takes one more arg.
* cgraphunit.c (lower_if_nested_functions): New
* tree-nested.c (lower_nested_functions): Skip structors.
2008-10-24 Fariborz Jahanian <fjahanian@apple.com>
Radar 5847213 (minor tweak)
* c-decl.c (build_block_descriptor_type):
Make descriptor_ptr_type and descriptor_ptr_type_with_copydispose
visible to pch.
2008-10-23 Caroline Tice <ctice@apple.com>
Radar 6300081
* tree.c(build_block_pointer_type): Add call to
build_generic_block_struct_type to initialize
generic_block_literal_struct_type if necessary.
* cp/parser.c (build_generic_block_struct_type): Update comments.
(build_block_struct_type): Remove call to
build_generic_block_struct_type.
(make_block_pointer_declarator): Likewise.
* c-decl.c (make_block_pointer_declarator): Likewise.
* c-parser.c (build_block_struct_type): Likewise.
(build_generic_block_struct_type): Update comments.
2008-10-22 Caroline Tice <ctice@apple.com>
Radar 6300081 & Radar 6163705
* tree.h (generic_block_literal_struct_type): Extern global variable
decl.
(build_generic_block_struct_type): New extern function decl.
* cp/parser (build_generic_block_struct_type): New function.
(build_block_struct_type): Call build_generic_block_struct_type
to initialize generic_block_literal_struct_type.
(make_block_pointer_declarator): Likewise.
(declare_block_prologue_local_vars): Temporarily set input_location
to 1 before the start of the block function; re-set input_location at
the end of this function.
* dwarf2out.c (add_type_attribute): If the type is a
BLOCK_POINTER_TYPE, assign it to be a pointer to a
generic_block_literal_struct_type.
* c-decl.c (make_block_pointer_declarator): Call
build_generic_block_struct_type to initialize
generic_block_literal_struct_type.
* c-common.c (generic_block_literal_struct_type): New global variable.
* c-parser.c (build_generic_block_struct_type): New function.
(build_block_struct_type): Call build_generic_block_struct_type
to initialize generic_block_literal_struct_type.
* testsuite/gcc.apple/block-debug-1.c: Fix test to work with new
compiler modifications.
* testsuite/gcc.apple/block-debug-2.c: Likewise.
* testsuite/g++.apple/block-debug-1.C: Likewise.
* testsuite/g++.apple/block-debug-2.C: Likewise.
2008-10-10 Fariborz Jahanian <fjahanian@apple.com>
Radar 5847213 - New Block ABI
* dwarf2out.c (add_type_attribute): Unusuable code
for radar 5811943 is removed.
* c-decl.c (build_block_byref_decl): Removed unneeded
build of block_original_byref_decl_list.
(build_block_internal_types): Removed.
(build_block_descriptor_type): New routine to build the descriptor type.
(make_block_pointer_declarator): Unused code is removed.
* c-typeck.c (build_block_call): New code gen for block calls.
* c-common.c (invoke_impl_ptr_type): Removed.
* c-common.h (block_original_byref_decl_list, build_block_internal_types): Removed
(build_block_descriptor_type, BLOCK_HAS_DESCRIPTOR): Decls added.
* c-parser.c (build_block_struct_type): Block literal expression internal type
is redeclared into its new layout.
(build_block_struct_initlist): Initializer list for above type is redone.
(build_descriptor_block_decl): New routine to declare the descriptor variable
(build_block_literal_tmp): Modified for the new type and initiazation.
2008-10-06 Fariborz Jahanian <fjahanian@apple.com>
Radar 6268817
* c-decl.c (check_for_loop_decls): Block helper function
is OK if declared in a for-loop main statement block.
2008-10-02 Fariborz Jahanian <fjahanian@apple.com>
Radar 6246527
* attribs.c (decl_attributes): Added support for adding attributes
on block pointer variable declarations.
* c-common.c (block_delta_format_args): Add
(any_recognized_block_attribute): Add
* c-common.h (any_recognized_block_attribute): New decl.
* c-parser.c (c_parser_block_literal_expr): Call to do the delta
on printf attribute.
2008-09-30 Fariborz Jahanian <fjahanian@apple.com>
Radar 6225809
* c-decl.c (build_block_byref_decl): Add __block vaiables
to intervening blocks.
2008-09-25 Fariborz Jahanian <fjahanian@apple.com>
Radar 6237713
* c-common.c (handle_noreturn_attribute): Add 'noreturn'
attribute to block pointer decls.
* c-parser.c (c_parser_block_literal_expr): Parse and set
attributes on block literals.
2008-09-25 Fariborz Jahanian <fjahanian@apple.com>
Radar 6244520 - minor addition
* c-common.c (build_indirect_object_id_exp): offset needs
be updated to accomodate addition of the new field.
2008-09-16 Fariborz Jahanian <fjahanian@apple.com>
Radar 6214617
* c-common: New flag BLOCK_HAS_CXX_OBJ replaces BLOCK_NO_COPY.
(BlockImportsCxxObjects): New field replaces BlockHasByrefVar.
* c-parser.c (build_block_struct_type): Remove setting of
BLOCK_NO_COPY flag.
2008-09-16 Fariborz Jahanian <fjahanian@apple.com>
Radar 6217257
* c-common.c (handle_blocks_attribute): Diagnose
vla __block declarations.
2008-09-12 Fariborz Jahanian <fjahanian@apple.com>
Radar 6212722 (tweak)
* c-decl.c (build_block_ref_decl): Use array_to_pointer_conversion
and function_to_pointer_conversion.
* c-typeck.c (array_to_pointer_conversion, function_to_pointer_conversion):
Made them global.
* c-common.h (array_to_pointer_conversion, function_to_pointer_conversion):
Declare.
2008-09-09 Fariborz Jahanian <fjahanian@apple.com>
Radar 6169580
* c-commmon.c (build_block_helper_name): Fix bug in
block helper function name mangling.
2008-09-03 Fariborz Jahanian <fjahanian@apple.com>
Radar 6185344
* c-typeck.c (c_finish_return): Don't do block specific
stuff when block has a return type.
* c-common.h (block_sema_info): block_has_return_type is
a new field.
* c-parser.c (c_parser_direct_declarator): Terminate type
parsing for block return types.
(c_parser_block_literal_expr): Added support to parse and
handle explicit return type for blocks.
2008-08-28 Fariborz Jahanian <fjahanian@apple.com>
Radar 6160536
* c-commmon.c (build_block_helper_name): New
* c-common.h (build_block_helper_name): New decl.
* c-parser.c (c_parser_block_literal_expr): Call
build_block_helper_name to build pretty helper function
name.
2008-08-28 Fariborz Jahanian <fjahanian@apple.com>
Radar 6180456
* c-decl.c (synth_block_byref_id_object_copy_func): Different
API for copying __block declared objects in c.
(synth_block_byref_id_object_dispose_func): Different API
for releasing __block declared objects in c.
* c-common.c (block_byref_assign_copy_decl): New
(build_indirect_object_id_exp): Cast to 'id *' in objective-c
mode only.
* c-common.h (build_block_byref_assign_copy_decl): New decl.
* c-parser.c (synth_copy_helper_block_func): Refactored code
to call build_block_byref_assign_copy_decl().
2008-08-24 Caroline Tice <ctice@apple.com>
Radars 6144664, 6145471, 6144634
c-decl.c (build_block_byref_decl): Assign the source
location for each byref decl to the source location of
the helper function decl.
(build_block_ref_decl): Ditto for ref decls.
2008-08-14 Fariborz Jahanian <fjahanian@apple.com>
Radar 5822844
* c-typeck.c (digest_init): Handler block as initializer.
(c_finish_return): check for completed block before
analyzing block's return expression.
* varasm.c (output_constant): Allow outputting block data.
* c-common.h (BLOCK_IS_GLOBAL): New flag.
(block_is_complete): New field in block data structure.
* c-parser.c (build_block_struct_initlist): New initializer and
flag for global block data.
(build_block_literal_tmp): Temporary data for global block is
declared as global static.
(c_parser_block_literal_expr): Removed diagnostics for global blocks.
Moved fixing helper function type earlier before its tree is built.
2008-08-06 Fariborz Jahanian <fjahanian@apple.com>
Radar 6014138
* c-decl.c (build_block_byref_decl): In the presence of nested "{"
move up the scope chain until reaching the main function body's scope.
2008-08-04 Fariborz Jahanian <fjahanian@apple.com>
Radar 6040305 - work in progress.
* c-decl.c (build_indirect_object_id_exp): Removed.
* c-common.c (build_indirect_object_id_exp): Added
* c-common.h (build_indirect_object_id_exp): New decl.
* config/darwin-c.c (darwin_cpp_builtins): Define __byref
in c++ mode as well.
2008-07-18 Fariborz Jahanian <fjahanian@apple.com>
Radar 6083129 - twiked
* c-decl.c (release_all_local_byrefs_at_return): Do not release
imported __byref variables in the block.
* c-parser.c (gen_block_byref_release_exp): Do not release __byref
variables outside of the block when returning from the block.
2008-07-15 Fariborz Jahanian <fjahanian@apple.com>
Radar 5988451
* c-decl.c (build_block_ref_decl): Insert copied in variable
in each enclosing block which does not use it.
(begin_block): Remove setting of "the_scope" field of the block.
(in_imm_block): Fix effect of changing the "the_scope" field.
(lookup_name_in_block): Do not skip over copied-in variables when
looking up a variable in the block.
* c-parser.c (c_parser_block_literal_expr): Set block's "the_scope" field
to the helper function's outer-most body scope.
2008-07-08 Fariborz Jahanian <fjahanian@apple.com>
Radar 6048570
* c-typeck.c (c_finish_return): Error on returning a block on the stack.
2008-06-05 Fariborz Jahanian <fjahanian@apple.com>
Radar 5988995
* c-typeck.c (types_are_closure_compatible): Nested block pointer
types must be considered when matching block types.
2008-06-05 Fariborz Jahanian <fjahanian@apple.com>
Radar 5982990
* c-parser.c (c_parser_objc_synch_compound_statement): New
(c_parser_objc_synchronized_statement): Call
c_parser_objc_synch_compound_statement.
2008-06-04 Fariborz Jahanian <fjahanian@apple.com>
Radar 5985368
* c-parser.c (c_parser_declaration_or_fndef): Better diagnostics for
a bad block definition.
2008-05-23 Fariborz Jahanian <fjahanian@apple.com>
Radar 5925781
* c-common.c (handle_nonnull_attribute): Support block pointer
just like a pointer for nonnull attribute.
(check_nonnull_arg): Ditto.
2008-05-20 Fariborz Jahanian <fjahanian@apple.com>
Radar 5932809 - minor change for runtime delight.
* c-parser.c (build_closure_struct_type): Add strcutor fields
for __byref 'id' object blocks as well.
(build_closure_struct_initlist): And their initializers.
2008-04-30 Caroline Tice <ctice@apple.com>
Radar 5811961
* c-decl.c: (declare_closure_prologue_local_vars): Set the source
location for the new decl expr statement to be the source location of
the decl tree.
2008-04-25 Fariborz Jahanian <fjahanian@apple.com>
Radar 5803005 (tweaked)
* c-typeck.c (build_external_ref): Refactored global decl checks.
2008-04-24 Caroline Tice <ctice@apple.com>
Radar 5811943
* tree.h (TYPE_CLOSURE_IMPL_STRUCT): New macro.
(lang_flag_2): Use previously unused field in tree_type to indicate
closure structs.
* dwarf2out.c (c-common.h): New include statement.
(dwarf_attr_name): Add case for DW_AT_APPLE_closure.
(gen_variable_die): Give pointers to closures the
invoke_impl_ptr_type.
(gen_struct_or_union_type_die): Add DW_AT_APPLE_closure
to structs that define closures.
* dwarf2.h (DW_AT_APPLE_closure): New Dwarf attribute.
* c-typeck.c (invoke_impl_ptr_type): Move declaration from here to
c-common.c
(build_closure_internal_types): Set TYPE_CLOSURE_IMPL_STRUCT
flag for closure structs.
* c-common.c (invoke_impl_ptr_type): Move declaration to here from
c-typeck.c.
2008-04-23 Fariborz Jahanian <fjahanian@apple.com>
Radar 5882266
* c-typeck.c (types_are_closure_compatible): Check for underlying
pointer types as well.
2008-04-15 Stuart Hastings <stuart@apple.com>
Radar 5862465
* tree.h (PTR_OR_REF_CHECK, POINTER_TYPE_P): Add
CLOSURE_POINTER_TYPE.
* fold-const.c (fold_convert): Add CLOSURE_POINTER_TYPE.
* testsuite/gcc.apple/closure-5862465.c: New.
2008-03-31 Fariborz Jahanian <fjahanian@apple.com>
Radar 5831855
* c-typeck.c (convert_for_assignment): Block and 'id' types
are interchangeable.
2008-03-28 Fariborz Jahanian <fjahanian@apple.com>
Radar 5809099
* convert.c (convert_to_pointer): Allow typecast of closure
pointer to 'id'.
(convert_to_closure_pointer): Allow typecast of 'id'
of a closure pointer expression.
2008-03-25 Fariborz Jahanian <fjahanian@apple.com>
Radar 5811887 (minor change)
* c-opts.c (c_common_post_options): Remove conditional check
of pedantic when setting flag_blocks.
2008-03-24 Fariborz Jahanian <fjahanian@apple.com>
Radar 5811887
* c-cppbuiltin.c: flag_closures renamed to flag_blocks
* c-parser.c: Ditto.
* c.opt: flag_closures renamed to flag_blocks. flag_blocks
defaulted to -1.
* c-opts.c (c_common_post_options): All flavors of c99, blocks are off by
default unless requested via -fblocks.
2008-03-24 Fariborz Jahanian <fjahanian@apple.com>
Radar 5814025
* c-tree.h (make_closure_pointer_declarator): Takes
additional argument.
* c-decl.c (grokdeclarator): Get 'const'-ness of closure
pointer.
(make_closure_pointer_declarator): Takes additional argument for
const/volatile.
* c-parser.c (c_parser_declarator): Pass down attribute info.
to make_closure_pointer_declarator.
2008-03-20 Fariborz Jahanian <fjahanian@apple.com>
Radar 5802025
* c-common.h (objc_build_property_getter_func_call): New decl.
* stub-objc.c (objc_build_property_getter_func_call): New stub.
2008-03-18 Fariborz Jahanian <fjahanian@apple.com>
Radar 5803600
* c-decl.c (add_closure_global_byref_list,
in_closure_global_byref_list): New defs.
* c-common.h (add_closure_global_byref_list,
in_closure_global_byref_list): New decls.
* c-typeck.c (build_external_ref): global variables
declared as 'byref' are enterred in their own list
of such declarations per each closure.
* c-parser.c (c_parser_postfix_expression): Remove previous fix.
(c_parser_closure_byref_declaration): Check for global
'byref' by calling in_closure_global_byref_list.
2008-03-13 Fariborz Jahanian <fjahanian@apple.com>
Radar 5795493
* c-typeck.c: Renamed typesAreClosureCompatible to
types_are_closure_compatible.
2008-03-11 Fariborz Jahanian <fjahanian@apple.com>
Radar 5732232 (Related to change of command option/macro)
* c-cppbuiltin.c: __CLOSURES__ macro rename __BLOCKS__
* c.opt: -fclosures change to -fblocks.
2008-03-10 Fariborz Jahanian <fjahanian@apple.com>
Radar 5782740 - part 2 (bug fix).
* c-parser.c (synth_copy_helper_closure,
synth_destroy_helper_closure): set DECL_ARG_TYPE field of input
arguments for the two synthesized helper functions.
2008-02-21 Caroline Tice <ctice@apple.com>
Radar 5741070
* objc/objc-act.c (objc_finish_message_expr): Find
the record-type tree from the class interface, and mark the record
type as used, for emitting debug info.
* cp/cp-objcp-common.c (c_return_interface_record_type): New function.
* cp/cp-tree.h (c_return_interface_record_type): New extern function
declaration.
* c-tree.h (c_return_interface_record_type): Likewise
* c-decl.c (c_return_interface_record_type): New function.
2007-08-22 Fariborz Jahanian <fjahanian@apple.com>
Radar 4947311
* c-common.h (objc_declare_protocols, objc_start_protocol): Decl changed.
* stub-objc.c (objc_declare_protocols, objc_start_protocol): Changed.
* c-parser.c (c_parser_external_declaration): Call to
c_parser_objc_protocol_definition takes additional argument.
(c_parser_declaration_or_fndef): Protocols with attributes are processed
here by passing it to c_parser_objc_protocol_definition.
(c_parser_objc_protocol_definition): Takes additional argument and passes
it to objc_declare_protocols or objc_start_protocol.
2007-07-13 Fariborz Jahanian <fjahanian@apple.com>
Radar 5277239
* c-parser.c (c_parser_next_token_starts_declspecs): Exclude
objc2's property dot-syntax as a declarator.
(c_parser_postfix_expression): Convert property dot-syntax on
class objects into a property reference expression.
2007-07-10 Fariborz Jahanian <fjahanian@apple.com>
Radar 5285911
* tree.h (CALL_EXPR_OBJC_PROPERTY_GETTER): Macro removed.
* c-typeck.c (build_component_ref): Call
objc_build_property_reference_expr instead of objc_build_getter_call.
(build_modify_expr): Call objc_property_reference_expr instead of
objc_property_call.
* c-common.h (objc_build_getter_call, objc_property_call): Decl removed.
(objc_build_property_reference_expr, objc_property_reference_expr): Decl.
added.
* stub-objc.c (objc_build_getter_call, objc_property_call): Stub removed.
(objc_build_property_reference_expr, objc_property_reference_expr):
Stub added.
2007-06-29 Fariborz Jahanian <fjahanian@apple.com>
Radar 5276085
* c-parser.c (c_parser_binary_expression) : objc_generate_weak_read
replaced with call to objc_build_weak_reference_tree
* c-typeck.c (build_modify_expr, c_objc_common_truthvalue_conversion):
objc_remove_weak_read replaced with call to objc_weak_reference_expr.
* c-common.h (objc_weak_reference_expr,
objc_build_weak_reference_tree) : New decl.
(objc_generate_weak_read, objc_remove_weak_read): remove.
* stub-objc.c (objc_weak_reference_expr,
objc_build_weak_reference_tree): New stub.
(objc_generate_weak_read, objc_remove_weak_read): remove.
2007-05-23 Fariborz Jahanian <fjahanian@apple.com>
Radar 5195402
* c-format.c (handle_format_arg_attribute): Check for NSString *
and CFStringRef as valid formatting types.
(check_format_string): Ditto.
* c-common.h (objc_check_format_nsstring,
objc_check_cfstringref_type): New decls.
* stub-objc.c (objc_check_nsstring_pointer_type): New stub.
* config/darwin-c.c (objc_check_cfstringref_type): New
(objc_check_format_cfstring): Call objc_check_cfstringref_type
for valid CFStringRef argument type.
* config/darwin-protos.h (objc_check_cfstringref_type): New decl.
* config/darwin.h (CFSTRING_TYPE_CHECK): New macro.
2007-05-18 Fariborz Jahanian <fjahanian@apple.com>
Radar 5202926
* c-common.h (objc_anonymous_local_objc_name): New decl.
* config/darwin-protos.h (objc_anonymous_local_objc_name): Decl.
* stub-objc.c (objc_anonymous_local_objc_name): New stub.
* config/darwin.h (ASM_OUTPUT_LABELREF) Call
objc_anonymous_local_objc_name.
2007-05-07 Fariborz Jahanian <fjahanian@apple.com>
Radar 4157812
* c-common.h (objc_build_keyword_decl): Takes a new argument.
* stub-objc.c (objc_build_keyword_decl): Ditto.
* c-parser.c (c_parser_objc_method_decl): Recognize optional
method's argument attribute.
(c_parser_objc_method_decl): Handle errornous selector.
2007-05-02 Fariborz Jahanian <fjahanian@apple.com>
Radar 4502186
* c-typeck.c (convert_for_assignment): Remove synthesized 'volatile'
type before doing type comparison.
2007-03-29 Fariborz Jahanian <fjahanian@apple.com>
Radar 4564694
* c-parse.c (c_parser_objc_class_instance_variables): Add @package
support to syntax.
* c-common.h (RID_AT_PACKAGE): Add
2007-03-29 Fariborz Jahanian <fjahanian@apple.com>
Radar 4947014 - objc atomic property
* c-common.h (RID_NONATOMIC): Add
* c-parse.c (c_parser_objc_property_attribute) : Recognize 'nonatomic'
as new property.
2007-03-23 Fariborz Jahanian <fjahanian@apple.com>
Radar 4985544
* c-format.c (enum format_type): New entry for NSString format.
(format_typ): Has a new entry for NSString format.
(decode_format_attr): Error on use of NSString format on a
non-objective-c program.
(objc_check_nsformat_arg): New.
(check_format_info): Call back for NSString is objc_check_nsformat_arg
(handle_format_attribute): Use objc_check_format_nsstring for
NSString format.
* c-common.h (objc_NSString_format): New decl.
(objc_check_format_nsstring): New decl.
* stub-objc.c (objc_NSString_format, objc_check_format_nsstring): New
stubs.
* config/darwin-protos.h (darwin_cfstring_type_node): New decl.
* config/darwin.c (darwin_cfstring_type_node): New
* config/darwin.h (TARGET_CFSTRING_P): New macro
2007-03-23 Fariborz Jahanian <fjahanian@apple.com>
Radar 4985544
* c-format.c (enum format_type): New entry for NSString format.
(format_typ): Has a new entry for NSString format.
(decode_format_attr): Error on use of NSString format on a
non-objective-c program.
(objc_check_nsformat_arg): New.
(check_format_info): Call back for NSString is objc_check_nsformat_arg
(handle_format_attribute): Use objc_check_format_nsstring for
NSString format.
* c-common.h (objc_NSString_format): New decl.
(objc_check_format_nsstring): New decl.
* stub-objc.c (objc_NSString_format, objc_check_format_nsstring): New
stubs.
* config/darwin-protos.h (darwin_cfstring_type_node): New decl.
* config/darwin.c (darwin_cfstring_type_node): New
* config/darwin.h (TARGET_CFSTRING_P): New macro
2007-03-22 Fariborz Jahanian <fjahanian@apple.com>
Radar 4965989
* c-parser.c (c_parser_objc_class_definition): Add supprt for anonymous
category syntax.
2007-03-21 Fariborz Jahanian <fjahanian@apple.com>
Radar 2848255
* c-parser.c (c_parser_objc_try_catch_statement): Parse @catch(...).
* c.opt: Add -fobjc-zerocost-exceptions option.
* c-opts.c (c_common_post_options): Set the flags for
-fobjc-zerocost-exceptions.
* c-common.h: Add some declarations.
* stub-objc.c (objc2_valid_objc_catch_type, objc2_build_throw_call):
New stubs.
* config/darwin.h (OBJC_FLAG_OBJC_ABI): Check for proper
use of -fobjc-zerocost-exceptions option.
2006-11-06 Fariborz Jahanian <fjahania@apple.com>
Radar 4781080 (part 2)
* targhooks.c (default_objc_fpreturn_msgcall): Takes 2nd argument.
* targhooks.h (default_objc_fpreturn_msgcall): Changed Decl.
* target.h (objc_fpreturn_msgcall): Changed Decl.
* config/i386/i386.h (OBJC_FPRETURN_MSGCALL): Changed Decl.
* config/i386/i386-protos.h (ix86_objc_fpreturn_msgcall): Changed Decl.
* config/i386/i386.c (ix86_objc_fpreturn_msgcall): Changed definition.
2006-09-15 Fariborz Jahanian <fjahania@apple.com>
Radar 4727659
* c-common.c (handle_noreturn_attribute): Handle method_decl
nodes as well.
2006-09-01 Fariborz Jahanian <fjahania@apple.com>
Radar 4712269
* c-common.h (objc_build_incr_decr_setter_call): New decl.
* stub-objc.c (objc_build_incr_decr_setter_call): New stub.
* c-typeck.c (build_unary_op): Call objc_build_incr_decr_setter_call
for potential ince/decr pre/post expressions involving properties.
2006-08-31 Fariborz Jahanian <fjahanian@apple.com>
Radar 4697411
* c-common.h (objc_volatilize_component_ref): New decl.
* c-typeck.c (build_component_ref): Call objc_volatilize_component_ref.
* stub-objc.c (objc_volatilize_component_ref): New stub.
2006-07-18 Fariborz Jahanian <fjahanian@apple.com>
Radar 4592503
* c-decl.c (finish_struct): Check on illegal use of __weak
on struct fields.
* decl.c (start_decl): Check on illegal use of __weak on
variable declarations.
* stub-objc.c (objc_checkon_weak_attribute): New stub.
* c-common.h (objc_checkon_weak_attribute): New decl.
2006-06-26 Fariborz Jahanian <fjahanian@apple.com>
Radar 4591909
* c-parse.in: New/modified grammar for new attributes in
properties.
(yylexname): Change to recognize new attribute terminals.
* c-common.h (RID_DYNAMIC): New enum declaration.
2006-07-14 Fariborz Jahanian <fjahanian@apple.com>
Radar 4621020
* c-parse.in: Added 'weak' attribute keyword for @property.
* c-common.h: 'weak' related declarations.
2006-05-18 Fariborz Jahanian <fjahanian@apple.com>
Radar 4548636 (objc attributes on class)
* c-parse.in: Add attribute non-terminal before
AT_INTERFACE.
* c-common.h (objc_start_class_interface): New argument added.
* stub-objc.c (objc_start_class_interface): Ditto.
2006-05-16 Fariborz Jahanian <fjahanian@apple.com>
Radar 4547045
* c-gimplify.c (obj_reuse_bc_block): Removed.
(objc_pop_label, objc_push_label): New.
(gimplify_c_loop): Fix up foreach's innerloop break label.
2006-04-26 Fariborz Jahanian <fjahanian@apple.com>
Radar 3803157 (method attributes)
* c-parse.in: Add grammar support for declaring
attribute for objc methods.
* c-common.c (handle_deprecated_attribute): Recognize
objc methods as valid declarations.
(handle_unavailable_attribute): Ditto.
* c-common.h: Bunch of new extern declarations.
* stub-objc.c (objc_add_method_declaration, objc_start_method_definition):
Added new argument.
(objc_method_decl): New stub.
2006-04-12 Fariborz Jahanian <fjahanian@apple.com>
Radar 4507230
* c-common.h (objc_type_valid_for_messaging): Declare.
* stub-objc.c (objc_type_valid_for_messaging): New stub.
2006-04-06 Fariborz Jahanian <fjahanian@apple.com>
Radar 4436866
(Missing copies attribute)
* c-parse.in: Add grammer for 'copies' attribute.
* c-common.h (RID_COPIES): New enumerator.
2006-03-27 Fariborz Jahanian <fjahanian@apple.com>
Radar 4133425
* c-common.h (objc_diagnose_private_ivar): New decl.
* stub-objc.c (objc_diagnose_private_ivar): New stub.
* c-decl.c (undeclared_variable): Issue disnostic on
private 'ivar' access.
2006-03-27 Fariborz Jahanian <fjahanian@apple.com>
Radar 4491608
* c-typeck.c (convert_arguments): function name must come from 'selector'
when diagnosing 'too many arguments'.
2006-03-23 Fariborz Jahanian <fjahanian@apple.com>
Radar 4193359
* c-typeck.c (convert_for_assignment): Remove Objective-C EH machinery
'volatile' qualifier before doing type comparison.
2006-02-28 Fariborz Jahanian <fjahanian@apple.com>
Radar 4441049
* c-common.h (objc_v2_bitfield_ivar_bitpos): New decl.
* expr.h (objc_v2_bitfield_ivar_bitpos): New decl.
* stub-objc.c (objc_v2_bitfield_ivar_bitpos): New stub.
* expr.c (get_inner_reference): Compute ivar's bitfield bit offset.
2006-02-15 Fariborz Jahanian <fjahanian@apple.com>
Radar 4445586
* c-common.def (DO_STMT): Takes an extra argument.
2006-02-02 Fariborz Jahanian <fjahanian@apple.com>
Radar 4426814
* c-parse.in (cast_expr): generate objc_read_weak call on
each __weak object in the expession.
* c-typeck.c (build_modify_expr): Undo the call to objc_read_weak
on LHS expression.
* c-objc-common.c (c_objc_common_truthvalue_conversion): Generate
objc_read_weak call before generating tree for !exp, etc.
* c-common.h (objc_generate_weak_read, objc_remove_weak_read): New decl.
* stub-objc.c (objc_generate_weak_read, objc_remove_weak_read): New stubs.
2005-12-15 Fariborz Jahanian <fjahanian@apple.com>
Radar 4229905
* c-typeck.c (build_conditional_expr): Call objc_have_common_type when
looking for objective-c common pointer types.
* c-common.h objc_have_common_type): New declaration.
* stub-objc.c (objc_have_common_type): New stub.
2005-12-05 Mike Stump <mrs@apple.com>
Radar 4357979
* doc/invoke.texi (C Dialect Options): Improve -fnested-functions wording.
* doc/extend.texi (Nested Functions): Note that on darwin nested
functions are off by default.
2005-11-08 Fariborz Jahanian <fjahanian@apple.com>
Radar 4330422
* c-common.h (objc_non_volatilized_type): New declaration
* stub-objc.c (objc_non_volatilized_type): New stub.
2005-10-12 Fariborz Jahanian <fjahanian@apple.com>
Radar 4291785
* c-common.h (objc_get_interface_ivars): New declaration
(objc_detect_field_duplicates): Ditto.
* c-decl.c (finish_struct): Check for duplicate among
flattened fields if objective-c.
* stub-objc.c (objc_get_interface_ivars): New stub.
(objc_detect_field_duplicates): Ditto.
2005-09-28 Devang Patel <dpatel@apple.com>
Radar 4258406
* c-parse.in (nested_function): Report an error, instead of a warning.
(nontype_nested_function): Same.
* c.opt (Wnested-funcs): Remove.
* doc/invoke.texi: Remove Wnested-funcs documentations.
2005-08-03 Fariborz Jahanian <fjahanian@apple.com>
Radar 4188876
* c-typeck.c (pop_init_level): Issue diagnostic on non-constant
vector initializers.
2005-06-22 Ziemowit Laski <zlaski@apple.com>
Radar 4154928
* c-common.h (objc_common_type): New prototype.
* c-typeck.c (build_conditional_expr): For two ObjC pointer types,
use their ObjC common type.
* stub-objc.c (objc_common_type): New stub.
/* APPLE LOCAL merge marger */
/* Stuff under is in fsf mainline, but not in the 4.2 branch */
2007-08-02 Geoffrey Keating <geoffk@apple.com>
Radar 3274130, 5295549
* c-parser.c (c_parser_while_statement): Handle attributes.
(c_parser_do_statement): Handle attributes.
(c_parser_for_statement): Handle attributes.
* c-common.c (handle_unused_attribute): Warn if a statement
is marked as unused.
* c-tree.h (c_finish_loop): Add extra parameter.
* c-typeck.c (c_finish_loop): Handle attributes.
* doc/extend.texi (Attribute Syntax): Document statement attributes.
(Label Attributes): Explain how they apply to statements.
* tree-cfg.c (cleanup_dead_labels): Preserve labels with
user-specified alignment or attributes.
* stmt.c (expand_label): Update and correct documentation.
* c-common.c (handle_aligned_attribute): Handle LABEL_DECL.
* rtl.def (CODE_LABEL): Add 8th operand.
* rtl.h (LABEL_ALIGN_LOG): New.
(LABEL_MAX_SKIP): New.
(SET_LABEL_ALIGN): New.
* emit-rtl.c (gen_label_rtx): Adjust.
* print-rtl.c (print_rtx): Print LABEL_ALIGN_LOG.
* stmt.c (label_rtx): Set CODE_LABEL's alignment from DECL_ALIGN.
(expand_label): Update documentation.
* final.c (struct label_alignment): Delete.
(label_align): Delete.
(min_labelno): Delete.
(max_labelno): Delete.
(LABEL_TO_ALIGNMENT): Delete.
(LABEL_TO_MAX_SKIP): Delete.
(label_to_alignment): Adjust for LABEL_ALIGN_LOG.
(align_fuzz): Likewise.
(compute_alignments): Likewise.
(shorten_branches): Remove code to set up label_align.
Adjust for LABEL_ALIGN_LOG.
(final_scan_insn): Adjust for LABEL_ALIGN_LOG.
* doc/extend.texi (C Extensions): Add 'Label Attributes' to menu.
(Attribute Syntax): Move label content to Label Attributes.
(Function Attributes): Mention label attributes.
(Variable Attributes): Mention label attributes.
(Type Attributes): Mention label attributes.
(Label Attributes): New.
|