final.c (258501) | final.c (260014) |
---|---|
1/* Convert RTL to assembler code and output it, for GNU compiler. 2 Copyright (C) 1987, 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 3 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 4 Free Software Foundation, Inc. 5 6This file is part of GCC. 7 8GCC is free software; you can redistribute it and/or modify it under --- 329 unchanged lines hidden (view full) --- 338 gives the next following alignment insn that increases the known 339 alignment, or NULL_RTX if there is no such insn. 340 For any alignment obtained this way, we can again index uid_align with 341 its uid to obtain the next following align that in turn increases the 342 alignment, till we reach NULL_RTX; the sequence obtained this way 343 for each insn we'll call the alignment chain of this insn in the following 344 comments. */ 345 | 1/* Convert RTL to assembler code and output it, for GNU compiler. 2 Copyright (C) 1987, 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 3 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 4 Free Software Foundation, Inc. 5 6This file is part of GCC. 7 8GCC is free software; you can redistribute it and/or modify it under --- 329 unchanged lines hidden (view full) --- 338 gives the next following alignment insn that increases the known 339 alignment, or NULL_RTX if there is no such insn. 340 For any alignment obtained this way, we can again index uid_align with 341 its uid to obtain the next following align that in turn increases the 342 alignment, till we reach NULL_RTX; the sequence obtained this way 343 for each insn we'll call the alignment chain of this insn in the following 344 comments. */ 345 |
346struct label_alignment 347{ 348 short alignment; 349 short max_skip; 350}; 351 | 346/* APPLE LOCAL begin for-fsf-4_4 3274130 5295549 */ \ 347/* APPLE LOCAL end for-fsf-4_4 3274130 5295549 */ \ |
352static rtx *uid_align; 353static int *uid_shuid; | 348static rtx *uid_align; 349static int *uid_shuid; |
354static struct label_alignment *label_align; | 350/* APPLE LOCAL begin for-fsf-4_4 3274130 5295549 */ \ |
355 | 351 |
352/* APPLE LOCAL end for-fsf-4_4 3274130 5295549 */ \ 353 |
|
356/* Indicate that branch shortening hasn't yet been done. */ 357 358void 359init_insn_lengths (void) 360{ 361 if (uid_shuid) 362 { 363 free (uid_shuid); --- 186 unchanged lines hidden (view full) --- 550#endif 551 552#ifndef INSN_LENGTH_ALIGNMENT 553#define INSN_LENGTH_ALIGNMENT(INSN) length_unit_log 554#endif 555 556#define INSN_SHUID(INSN) (uid_shuid[INSN_UID (INSN)]) 557 | 354/* Indicate that branch shortening hasn't yet been done. */ 355 356void 357init_insn_lengths (void) 358{ 359 if (uid_shuid) 360 { 361 free (uid_shuid); --- 186 unchanged lines hidden (view full) --- 548#endif 549 550#ifndef INSN_LENGTH_ALIGNMENT 551#define INSN_LENGTH_ALIGNMENT(INSN) length_unit_log 552#endif 553 554#define INSN_SHUID(INSN) (uid_shuid[INSN_UID (INSN)]) 555 |
558static int min_labelno, max_labelno; 559 560#define LABEL_TO_ALIGNMENT(LABEL) \ 561 (label_align[CODE_LABEL_NUMBER (LABEL) - min_labelno].alignment) 562 563#define LABEL_TO_MAX_SKIP(LABEL) \ 564 (label_align[CODE_LABEL_NUMBER (LABEL) - min_labelno].max_skip) 565 | 556/* APPLE LOCAL begin for-fsf-4_4 3274130 5295549 */ \ 557/* APPLE LOCAL end for-fsf-4_4 3274130 5295549 */ \ |
566/* For the benefit of port specific code do this also as a function. */ 567 568int 569label_to_alignment (rtx label) 570{ | 558/* For the benefit of port specific code do this also as a function. */ 559 560int 561label_to_alignment (rtx label) 562{ |
571 return LABEL_TO_ALIGNMENT (label); | 563/* APPLE LOCAL begin for-fsf-4_4 3274130 5295549 */ \ 564 return LABEL_ALIGN_LOG (label); 565/* APPLE LOCAL end for-fsf-4_4 3274130 5295549 */ \ |
572} 573 574#ifdef HAVE_ATTR_length 575/* The differences in addresses 576 between a branch and its target might grow or shrink depending on 577 the alignment the start insn of the range (the branch for a forward 578 branch or the label for a backward branch) starts out on; if these 579 differences are used naively, they can even oscillate infinitely. --- 32 unchanged lines hidden (view full) --- 612 for (align_label = uid_align[uid]; align_label; align_label = uid_align[uid]) 613 { 614 int align_addr, new_align; 615 616 uid = INSN_UID (align_label); 617 align_addr = INSN_ADDRESSES (uid) - insn_lengths[uid]; 618 if (uid_shuid[uid] > end_shuid) 619 break; | 566} 567 568#ifdef HAVE_ATTR_length 569/* The differences in addresses 570 between a branch and its target might grow or shrink depending on 571 the alignment the start insn of the range (the branch for a forward 572 branch or the label for a backward branch) starts out on; if these 573 differences are used naively, they can even oscillate infinitely. --- 32 unchanged lines hidden (view full) --- 606 for (align_label = uid_align[uid]; align_label; align_label = uid_align[uid]) 607 { 608 int align_addr, new_align; 609 610 uid = INSN_UID (align_label); 611 align_addr = INSN_ADDRESSES (uid) - insn_lengths[uid]; 612 if (uid_shuid[uid] > end_shuid) 613 break; |
620 known_align_log = LABEL_TO_ALIGNMENT (align_label); | 614/* APPLE LOCAL begin for-fsf-4_4 3274130 5295549 */ \ 615 known_align_log = LABEL_ALIGN_LOG (align_label); 616/* APPLE LOCAL end for-fsf-4_4 3274130 5295549 */ \ |
621 new_align = 1 << known_align_log; 622 if (new_align < known_align) 623 continue; 624 fuzz += (-align_addr ^ growth) & (new_align - known_align); 625 known_align = new_align; 626 } 627 return fuzz; 628} --- 48 unchanged lines hidden (view full) --- 677#endif /* HAVE_ATTR_length */ 678 679/* Compute branch alignments based on frequency information in the 680 CFG. */ 681 682static unsigned int 683compute_alignments (void) 684{ | 617 new_align = 1 << known_align_log; 618 if (new_align < known_align) 619 continue; 620 fuzz += (-align_addr ^ growth) & (new_align - known_align); 621 known_align = new_align; 622 } 623 return fuzz; 624} --- 48 unchanged lines hidden (view full) --- 673#endif /* HAVE_ATTR_length */ 674 675/* Compute branch alignments based on frequency information in the 676 CFG. */ 677 678static unsigned int 679compute_alignments (void) 680{ |
685 int log, max_skip, max_log; | 681/* APPLE LOCAL begin for-fsf-4_4 3274130 5295549 */ \ 682/* APPLE LOCAL end for-fsf-4_4 3274130 5295549 */ \ |
686 basic_block bb; 687 | 683 basic_block bb; 684 |
688 if (label_align) 689 { 690 free (label_align); 691 label_align = 0; 692 } | 685/* APPLE LOCAL begin for-fsf-4_4 3274130 5295549 */ \ 686/* APPLE LOCAL end for-fsf-4_4 3274130 5295549 */ \ |
693 | 687 |
694 max_labelno = max_label_num (); 695 min_labelno = get_first_label_num (); 696 label_align = XCNEWVEC (struct label_alignment, max_labelno - min_labelno + 1); 697 | |
698 /* If not optimizing or optimizing for size, don't assign any alignments. */ 699 if (! optimize || optimize_size) 700 return 0; 701 702 FOR_EACH_BB (bb) 703 { 704 rtx label = BB_HEAD (bb); 705 int fallthru_frequency = 0, branch_frequency = 0, has_fallthru = 0; 706 edge e; 707 edge_iterator ei; | 688 /* If not optimizing or optimizing for size, don't assign any alignments. */ 689 if (! optimize || optimize_size) 690 return 0; 691 692 FOR_EACH_BB (bb) 693 { 694 rtx label = BB_HEAD (bb); 695 int fallthru_frequency = 0, branch_frequency = 0, has_fallthru = 0; 696 edge e; 697 edge_iterator ei; |
698/* APPLE LOCAL begin for-fsf-4_4 3274130 5295549 */ \ 699 int log, max_skip, max_log; |
|
708 | 700 |
701/* APPLE LOCAL end for-fsf-4_4 3274130 5295549 */ \ |
|
709 if (!LABEL_P (label) 710 || probably_never_executed_bb_p (bb)) 711 continue; | 702 if (!LABEL_P (label) 703 || probably_never_executed_bb_p (bb)) 704 continue; |
705/* APPLE LOCAL begin for-fsf-4_4 3274130 5295549 */ \ 706 /* If user has specified an alignment, honour it. */ 707 if (LABEL_ALIGN_LOG (label) > 0) 708 continue; 709 710/* APPLE LOCAL end for-fsf-4_4 3274130 5295549 */ \ |
|
712 max_log = LABEL_ALIGN (label); 713 max_skip = LABEL_ALIGN_MAX_SKIP; 714 715 FOR_EACH_EDGE (e, ei, bb->preds) 716 { 717 if (e->flags & EDGE_FALLTHRU) 718 has_fallthru = 1, fallthru_frequency += EDGE_FREQUENCY (e); 719 else --- 32 unchanged lines hidden (view full) --- 752 { 753 log = LOOP_ALIGN (label); 754 if (max_log < log) 755 { 756 max_log = log; 757 max_skip = LOOP_ALIGN_MAX_SKIP; 758 } 759 } | 711 max_log = LABEL_ALIGN (label); 712 max_skip = LABEL_ALIGN_MAX_SKIP; 713 714 FOR_EACH_EDGE (e, ei, bb->preds) 715 { 716 if (e->flags & EDGE_FALLTHRU) 717 has_fallthru = 1, fallthru_frequency += EDGE_FREQUENCY (e); 718 else --- 32 unchanged lines hidden (view full) --- 751 { 752 log = LOOP_ALIGN (label); 753 if (max_log < log) 754 { 755 max_log = log; 756 max_skip = LOOP_ALIGN_MAX_SKIP; 757 } 758 } |
760 LABEL_TO_ALIGNMENT (label) = max_log; 761 LABEL_TO_MAX_SKIP (label) = max_skip; | 759/* APPLE LOCAL begin for-fsf-4_4 3274130 5295549 */ \ 760 SET_LABEL_ALIGN (label, max_log, max_skip); 761/* APPLE LOCAL end for-fsf-4_4 3274130 5295549 */ \ |
762 } 763 return 0; 764} 765 766struct tree_opt_pass pass_compute_alignments = 767{ 768 NULL, /* name */ 769 NULL, /* gate */ --- 36 unchanged lines hidden (view full) --- 806 int something_changed = 1; 807 char *varying_length; 808 rtx body; 809 int uid; 810 rtx align_tab[MAX_CODE_ALIGN]; 811 812#endif 813 | 762 } 763 return 0; 764} 765 766struct tree_opt_pass pass_compute_alignments = 767{ 768 NULL, /* name */ 769 NULL, /* gate */ --- 36 unchanged lines hidden (view full) --- 806 int something_changed = 1; 807 char *varying_length; 808 rtx body; 809 int uid; 810 rtx align_tab[MAX_CODE_ALIGN]; 811 812#endif 813 |
814 /* Compute maximum UID and allocate label_align / uid_shuid. */ | 814/* APPLE LOCAL begin for-fsf-4_4 3274130 5295549 */ \ 815 /* Compute maximum UID and allocate uid_shuid. */ 816/* APPLE LOCAL end for-fsf-4_4 3274130 5295549 */ \ |
815 max_uid = get_max_uid (); 816 817 /* Free uid_shuid before reallocating it. */ 818 free (uid_shuid); 819 820 uid_shuid = XNEWVEC (int, max_uid); 821 | 817 max_uid = get_max_uid (); 818 819 /* Free uid_shuid before reallocating it. */ 820 free (uid_shuid); 821 822 uid_shuid = XNEWVEC (int, max_uid); 823 |
822 if (max_labelno != max_label_num ()) 823 { 824 int old = max_labelno; 825 int n_labels; 826 int n_old_labels; 827 828 max_labelno = max_label_num (); 829 830 n_labels = max_labelno - min_labelno + 1; 831 n_old_labels = old - min_labelno + 1; 832 833 label_align = xrealloc (label_align, 834 n_labels * sizeof (struct label_alignment)); 835 836 /* Range of labels grows monotonically in the function. Failing here 837 means that the initialization of array got lost. */ 838 gcc_assert (n_old_labels <= n_labels); 839 840 memset (label_align + n_old_labels, 0, 841 (n_labels - n_old_labels) * sizeof (struct label_alignment)); 842 } 843 844 /* Initialize label_align and set up uid_shuid to be strictly | 824 /* APPLE LOCAL for-fsf-4_4 3274130 5295549 */ \ 825 /* Initialize set up uid_shuid to be strictly |
845 monotonically rising with insn order. */ 846 /* We use max_log here to keep track of the maximum alignment we want to 847 impose on the next CODE_LABEL (or the current one if we are processing 848 the CODE_LABEL itself). */ 849 850 max_log = 0; 851 max_skip = 0; 852 --- 5 unchanged lines hidden (view full) --- 858 if (INSN_P (insn)) 859 continue; 860 861 if (LABEL_P (insn)) 862 { 863 rtx next; 864 865 /* Merge in alignments computed by compute_alignments. */ | 826 monotonically rising with insn order. */ 827 /* We use max_log here to keep track of the maximum alignment we want to 828 impose on the next CODE_LABEL (or the current one if we are processing 829 the CODE_LABEL itself). */ 830 831 max_log = 0; 832 max_skip = 0; 833 --- 5 unchanged lines hidden (view full) --- 839 if (INSN_P (insn)) 840 continue; 841 842 if (LABEL_P (insn)) 843 { 844 rtx next; 845 846 /* Merge in alignments computed by compute_alignments. */ |
866 log = LABEL_TO_ALIGNMENT (insn); | 847/* APPLE LOCAL begin for-fsf-4_4 3274130 5295549 */ \ 848 log = LABEL_ALIGN_LOG (insn); 849/* APPLE LOCAL end for-fsf-4_4 3274130 5295549 */ \ |
867 if (max_log < log) 868 { 869 max_log = log; | 850 if (max_log < log) 851 { 852 max_log = log; |
870 max_skip = LABEL_TO_MAX_SKIP (insn); | 853/* APPLE LOCAL begin for-fsf-4_4 3274130 5295549 */ \ 854 max_skip = LABEL_MAX_SKIP (insn); 855/* APPLE LOCAL end for-fsf-4_4 3274130 5295549 */ \ |
871 } 872 873 log = LABEL_ALIGN (insn); 874 if (max_log < log) 875 { 876 max_log = log; 877 max_skip = LABEL_ALIGN_MAX_SKIP; 878 } --- 11 unchanged lines hidden (view full) --- 890 log = ADDR_VEC_ALIGN (next); 891 if (max_log < log) 892 { 893 max_log = log; 894 max_skip = LABEL_ALIGN_MAX_SKIP; 895 } 896 } 897 } | 856 } 857 858 log = LABEL_ALIGN (insn); 859 if (max_log < log) 860 { 861 max_log = log; 862 max_skip = LABEL_ALIGN_MAX_SKIP; 863 } --- 11 unchanged lines hidden (view full) --- 875 log = ADDR_VEC_ALIGN (next); 876 if (max_log < log) 877 { 878 max_log = log; 879 max_skip = LABEL_ALIGN_MAX_SKIP; 880 } 881 } 882 } |
898 LABEL_TO_ALIGNMENT (insn) = max_log; 899 LABEL_TO_MAX_SKIP (insn) = max_skip; | 883/* APPLE LOCAL begin for-fsf-4_4 3274130 5295549 */ \ 884 SET_LABEL_ALIGN (insn, max_log, max_skip); 885/* APPLE LOCAL end for-fsf-4_4 3274130 5295549 */ \ |
900 max_log = 0; 901 max_skip = 0; 902 } 903 else if (BARRIER_P (insn)) 904 { 905 rtx label; 906 907 for (label = insn; label && ! INSN_P (label); --- 30 unchanged lines hidden (view full) --- 938 939 for (i = MAX_CODE_ALIGN; --i >= 0;) 940 align_tab[i] = NULL_RTX; 941 seq = get_last_insn (); 942 for (; seq; seq = PREV_INSN (seq)) 943 { 944 int uid = INSN_UID (seq); 945 int log; | 886 max_log = 0; 887 max_skip = 0; 888 } 889 else if (BARRIER_P (insn)) 890 { 891 rtx label; 892 893 for (label = insn; label && ! INSN_P (label); --- 30 unchanged lines hidden (view full) --- 924 925 for (i = MAX_CODE_ALIGN; --i >= 0;) 926 align_tab[i] = NULL_RTX; 927 seq = get_last_insn (); 928 for (; seq; seq = PREV_INSN (seq)) 929 { 930 int uid = INSN_UID (seq); 931 int log; |
946 log = (LABEL_P (seq) ? LABEL_TO_ALIGNMENT (seq) : 0); | 932/* APPLE LOCAL begin for-fsf-4_4 3274130 5295549 */ \ 933 log = (LABEL_P (seq) ? LABEL_ALIGN_LOG (seq) : 0); 934/* APPLE LOCAL end for-fsf-4_4 3274130 5295549 */ \ |
947 uid_align[uid] = align_tab[0]; 948 if (log) 949 { 950 /* Found an alignment label. */ 951 uid_align[uid] = align_tab[log]; 952 for (i = log - 1; i >= 0; i--) 953 align_tab[i] = seq; 954 } --- 31 unchanged lines hidden (view full) --- 986 min = shuid; 987 min_lab = lab; 988 } 989 if (shuid > max) 990 { 991 max = shuid; 992 max_lab = lab; 993 } | 935 uid_align[uid] = align_tab[0]; 936 if (log) 937 { 938 /* Found an alignment label. */ 939 uid_align[uid] = align_tab[log]; 940 for (i = log - 1; i >= 0; i--) 941 align_tab[i] = seq; 942 } --- 31 unchanged lines hidden (view full) --- 974 min = shuid; 975 min_lab = lab; 976 } 977 if (shuid > max) 978 { 979 max = shuid; 980 max_lab = lab; 981 } |
994 if (min_align > LABEL_TO_ALIGNMENT (lab)) 995 min_align = LABEL_TO_ALIGNMENT (lab); | 982/* APPLE LOCAL begin for-fsf-4_4 3274130 5295549 */ \ 983 if (min_align > (int) LABEL_ALIGN_LOG (lab)) 984 min_align = LABEL_ALIGN_LOG (lab); 985/* APPLE LOCAL end for-fsf-4_4 3274130 5295549 */ \ |
996 } 997 XEXP (pat, 2) = gen_rtx_LABEL_REF (Pmode, min_lab); 998 XEXP (pat, 3) = gen_rtx_LABEL_REF (Pmode, max_lab); 999 insn_shuid = INSN_SHUID (insn); 1000 rel = INSN_SHUID (XEXP (XEXP (pat, 0), 0)); 1001 memset (&flags, 0, sizeof (flags)); 1002 flags.min_align = min_align; 1003 flags.base_after_vec = rel > insn_shuid; --- 12 unchanged lines hidden (view full) --- 1016 insn_current_address += insn_lengths[uid], insn = NEXT_INSN (insn)) 1017 { 1018 uid = INSN_UID (insn); 1019 1020 insn_lengths[uid] = 0; 1021 1022 if (LABEL_P (insn)) 1023 { | 986 } 987 XEXP (pat, 2) = gen_rtx_LABEL_REF (Pmode, min_lab); 988 XEXP (pat, 3) = gen_rtx_LABEL_REF (Pmode, max_lab); 989 insn_shuid = INSN_SHUID (insn); 990 rel = INSN_SHUID (XEXP (XEXP (pat, 0), 0)); 991 memset (&flags, 0, sizeof (flags)); 992 flags.min_align = min_align; 993 flags.base_after_vec = rel > insn_shuid; --- 12 unchanged lines hidden (view full) --- 1006 insn_current_address += insn_lengths[uid], insn = NEXT_INSN (insn)) 1007 { 1008 uid = INSN_UID (insn); 1009 1010 insn_lengths[uid] = 0; 1011 1012 if (LABEL_P (insn)) 1013 { |
1024 int log = LABEL_TO_ALIGNMENT (insn); | 1014/* APPLE LOCAL begin for-fsf-4_4 3274130 5295549 */ \ 1015 int log = LABEL_ALIGN_LOG (insn); 1016/* APPLE LOCAL end for-fsf-4_4 3274130 5295549 */ \ |
1025 if (log) 1026 { 1027 int align = 1 << log; 1028 int new_address = (insn_current_address + align - 1) & -align; 1029 insn_lengths[uid] = new_address - insn_current_address; 1030 } 1031 } 1032 --- 89 unchanged lines hidden (view full) --- 1122 int tmp_length; 1123#endif 1124 int length_align; 1125 1126 uid = INSN_UID (insn); 1127 1128 if (LABEL_P (insn)) 1129 { | 1017 if (log) 1018 { 1019 int align = 1 << log; 1020 int new_address = (insn_current_address + align - 1) & -align; 1021 insn_lengths[uid] = new_address - insn_current_address; 1022 } 1023 } 1024 --- 89 unchanged lines hidden (view full) --- 1114 int tmp_length; 1115#endif 1116 int length_align; 1117 1118 uid = INSN_UID (insn); 1119 1120 if (LABEL_P (insn)) 1121 { |
1130 int log = LABEL_TO_ALIGNMENT (insn); | 1122/* APPLE LOCAL begin for-fsf-4_4 3274130 5295549 */ \ 1123 int log = LABEL_ALIGN_LOG (insn); 1124/* APPLE LOCAL end for-fsf-4_4 3274130 5295549 */ \ |
1131 if (log > insn_current_align) 1132 { 1133 int align = 1 << log; 1134 int new_address= (insn_current_address + align - 1) & -align; 1135 insn_lengths[uid] = new_address - insn_current_address; 1136 insn_current_align = log; 1137 insn_current_address = new_address; 1138 } --- 32 unchanged lines hidden (view full) --- 1171 /* Try to find a known alignment for rel_lab. */ 1172 for (prev = rel_lab; 1173 prev 1174 && ! insn_lengths[INSN_UID (prev)] 1175 && ! (varying_length[INSN_UID (prev)] & 1); 1176 prev = PREV_INSN (prev)) 1177 if (varying_length[INSN_UID (prev)] & 2) 1178 { | 1125 if (log > insn_current_align) 1126 { 1127 int align = 1 << log; 1128 int new_address= (insn_current_address + align - 1) & -align; 1129 insn_lengths[uid] = new_address - insn_current_address; 1130 insn_current_align = log; 1131 insn_current_address = new_address; 1132 } --- 32 unchanged lines hidden (view full) --- 1165 /* Try to find a known alignment for rel_lab. */ 1166 for (prev = rel_lab; 1167 prev 1168 && ! insn_lengths[INSN_UID (prev)] 1169 && ! (varying_length[INSN_UID (prev)] & 1); 1170 prev = PREV_INSN (prev)) 1171 if (varying_length[INSN_UID (prev)] & 2) 1172 { |
1179 rel_align = LABEL_TO_ALIGNMENT (prev); | 1173/* APPLE LOCAL begin for-fsf-4_4 3274130 5295549 */ \ 1174 rel_align = LABEL_ALIGN_LOG (prev); 1175/* APPLE LOCAL end for-fsf-4_4 3274130 5295549 */ \ |
1180 break; 1181 } 1182 1183 /* See the comment on addr_diff_vec_flags in rtl.h for the 1184 meaning of the flags values. base: REL_LAB vec: INSN */ 1185 /* Anything after INSN has still addresses from the last 1186 pass; adjust these so that they reflect our current 1187 estimate for this pass. */ --- 655 unchanged lines hidden (view full) --- 1843 if (dwarf2out_do_frame ()) 1844 dwarf2out_frame_debug (insn, false); 1845#endif 1846 break; 1847 1848 case CODE_LABEL: 1849 /* The target port might emit labels in the output function for 1850 some insn, e.g. sh.c output_branchy_insn. */ | 1176 break; 1177 } 1178 1179 /* See the comment on addr_diff_vec_flags in rtl.h for the 1180 meaning of the flags values. base: REL_LAB vec: INSN */ 1181 /* Anything after INSN has still addresses from the last 1182 pass; adjust these so that they reflect our current 1183 estimate for this pass. */ --- 655 unchanged lines hidden (view full) --- 1839 if (dwarf2out_do_frame ()) 1840 dwarf2out_frame_debug (insn, false); 1841#endif 1842 break; 1843 1844 case CODE_LABEL: 1845 /* The target port might emit labels in the output function for 1846 some insn, e.g. sh.c output_branchy_insn. */ |
1851 if (CODE_LABEL_NUMBER (insn) <= max_labelno) 1852 { 1853 int align = LABEL_TO_ALIGNMENT (insn); | 1847/* APPLE LOCAL begin for-fsf-4_4 3274130 5295549 */ \ 1848 { 1849 int align = LABEL_ALIGN_LOG (insn); |
1854#ifdef ASM_OUTPUT_MAX_SKIP_ALIGN | 1850#ifdef ASM_OUTPUT_MAX_SKIP_ALIGN |
1855 int max_skip = LABEL_TO_MAX_SKIP (insn); | 1851 int max_skip = LABEL_MAX_SKIP (insn); |
1856#endif | 1852#endif |
1857 1858 if (align && NEXT_INSN (insn)) 1859 { | 1853 1854 if (align && NEXT_INSN (insn)) 1855 { |
1860#ifdef ASM_OUTPUT_MAX_SKIP_ALIGN | 1856#ifdef ASM_OUTPUT_MAX_SKIP_ALIGN |
1861 ASM_OUTPUT_MAX_SKIP_ALIGN (file, align, max_skip); | 1857 ASM_OUTPUT_MAX_SKIP_ALIGN (file, align, max_skip); |
1862#else 1863#ifdef ASM_OUTPUT_ALIGN_WITH_NOP | 1858#else 1859#ifdef ASM_OUTPUT_ALIGN_WITH_NOP |
1864 ASM_OUTPUT_ALIGN_WITH_NOP (file, align); | 1860 ASM_OUTPUT_ALIGN_WITH_NOP (file, align); |
1865#else | 1861#else |
1866 ASM_OUTPUT_ALIGN (file, align); | 1862 ASM_OUTPUT_ALIGN (file, align); |
1867#endif 1868#endif | 1863#endif 1864#endif |
1869 } 1870 } | 1865 } 1866 } 1867/* APPLE LOCAL end for-fsf-4_4 3274130 5295549 */ \ |
1871#ifdef HAVE_cc0 1872 CC_STATUS_INIT; 1873 /* If this label is reached from only one place, set the condition 1874 codes from the instruction just before the branch. */ 1875 1876 /* Disabled because some insns set cc_status in the C output code 1877 and NOTICE_UPDATE_CC alone can set incorrect status. */ 1878 if (0 /* optimize && LABEL_NUSES (insn) == 1*/) --- 2216 unchanged lines hidden --- | 1868#ifdef HAVE_cc0 1869 CC_STATUS_INIT; 1870 /* If this label is reached from only one place, set the condition 1871 codes from the instruction just before the branch. */ 1872 1873 /* Disabled because some insns set cc_status in the C output code 1874 and NOTICE_UPDATE_CC alone can set incorrect status. */ 1875 if (0 /* optimize && LABEL_NUSES (insn) == 1*/) --- 2216 unchanged lines hidden --- |