Remove CT_BROKEN.
Only one component is actually BROKEN (libelf), make it depend on EXPERIMENTAL, but state BROKEN in the prompt.
ltrace (which depends on libelf) is now marked as EXPERIMENTAL, with the reference to the BROKEN libelf in the help entry.
/trunk/docs/overview.txt | 6 0 6 0 ------
/trunk/config/debug/ltrace.in | 7 4 3 0 ++++---
/trunk/config/global/ct-behave.in | 8 0 8 0 --------
/trunk/config/tools/libelf.in | 5 3 2 0 +++--
4 files changed, 7 insertions(+), 19 deletions(-)
1 Original patch from gentoo: gentoo/src/patchsets/gcc/4.3.0/gentoo/20_all_gcc-x86-emit-cld.patch
2 bandaid for the cld issue. to be dropped when gcc-4.3 goes stable.
4 http://gcc.gnu.org/ml/gcc-patches/2008-03/msg00417.html
6 2008-03-06 Uros Bizjak <ubizjak@gmail.com>
8 * config/i386/i386.h (TARGET_CLD): New define.
9 (struct machine_function): Add needs_cld field.
10 (ix86_current_function_needs_cld): New define.
11 * config/i386/i386.md (UNSPEC_CLD): New unspec volatile constant.
12 ("cld"): New isns pattern.
13 ("strmov_singleop"): Set ix86_current_function_needs_cld flag.
15 ("strset_singleop"): Ditto.
17 ("cmpstrnqi_nz_1"): Ditto.
18 ("cmpstrnqi_1"): Ditto.
19 ("strlenqi_1"): Ditto.
20 * config/i386/i386.c (ix86_expand_prologue): Emit cld insn for
21 TARGET_CLD when ix86_current_function_needs_cld is set.
23 diff -durN gcc-4.3.0.orig/gcc/config/i386/i386.c gcc-4.3.0/gcc/config/i386/i386.c
24 --- gcc-4.3.0.orig/gcc/config/i386/i386.c 2008-02-21 13:30:00.000000000 +0100
25 +++ gcc-4.3.0/gcc/config/i386/i386.c 2008-06-10 14:44:37.000000000 +0200
26 @@ -6448,6 +6448,10 @@
27 emit_insn (gen_prologue_use (pic_offset_table_rtx));
28 emit_insn (gen_blockage ());
31 + /* Emit cld instruction if stringops are used in the function. */
32 + if (TARGET_CLD && ix86_current_function_needs_cld)
33 + emit_insn (gen_cld ());
36 /* Emit code to restore saved registers using MOV insns. First register
37 diff -durN gcc-4.3.0.orig/gcc/config/i386/i386.h gcc-4.3.0/gcc/config/i386/i386.h
38 --- gcc-4.3.0.orig/gcc/config/i386/i386.h 2008-02-15 09:12:02.000000000 +0100
39 +++ gcc-4.3.0/gcc/config/i386/i386.h 2008-06-10 14:44:37.000000000 +0200
42 extern int x86_prefetch_sse;
45 #define TARGET_ABM x86_abm
46 #define TARGET_CMPXCHG16B x86_cmpxchg16b
47 #define TARGET_POPCNT x86_popcnt
49 int save_varrargs_registers;
50 int accesses_prev_frame;
51 int optimize_mode_switching[MAX_386_ENTITIES];
52 - /* Set by ix86_compute_frame_layout and used by prologue/epilogue expander to
53 - determine the style used. */
55 + /* Set by ix86_compute_frame_layout and used by prologue/epilogue
56 + expander to determine the style used. */
57 int use_fast_prologue_epilogue;
58 /* Number of saved registers USE_FAST_PROLOGUE_EPILOGUE has been computed
61 #define ix86_stack_locals (cfun->machine->stack_locals)
62 #define ix86_save_varrargs_registers (cfun->machine->save_varrargs_registers)
63 #define ix86_optimize_mode_switching (cfun->machine->optimize_mode_switching)
64 +#define ix86_current_function_needs_cld (cfun->machine->needs_cld)
65 #define ix86_tls_descriptor_calls_expanded_in_cfun \
66 (cfun->machine->tls_descriptor_call_expanded_p)
67 /* Since tls_descriptor_call_expanded is not cleared, even if all TLS
68 diff -durN gcc-4.3.0.orig/gcc/config/i386/i386.md gcc-4.3.0/gcc/config/i386/i386.md
69 --- gcc-4.3.0.orig/gcc/config/i386/i386.md 2008-02-06 12:34:00.000000000 +0100
70 +++ gcc-4.3.0/gcc/config/i386/i386.md 2008-06-10 14:44:37.000000000 +0200
74 (UNSPECV_PROLOGUE_USE 14)
78 ;; Constants to represent pcomtrue/pcomfalse variants
79 @@ -18529,6 +18530,14 @@
81 ;; Block operation instructions
84 + [(unspec_volatile [(const_int 0)] UNSPECV_CLD)]
87 + [(set_attr "length" "1")
88 + (set_attr "length_immediate" "0")
89 + (set_attr "modrm" "0")])
91 (define_expand "movmemsi"
92 [(use (match_operand:BLK 0 "memory_operand" ""))
93 (use (match_operand:BLK 1 "memory_operand" ""))
94 @@ -18601,7 +18610,7 @@
95 (set (match_operand 2 "register_operand" "")
96 (match_operand 5 "" ""))])]
97 "TARGET_SINGLE_STRINGOP || optimize_size"
99 + "ix86_current_function_needs_cld = 1;")
101 (define_insn "*strmovdi_rex_1"
102 [(set (mem:DI (match_operand:DI 2 "register_operand" "0"))
103 @@ -18718,7 +18727,7 @@
104 (match_operand 3 "memory_operand" ""))
105 (use (match_dup 4))])]
108 + "ix86_current_function_needs_cld = 1;")
110 (define_insn "*rep_movdi_rex64"
111 [(set (match_operand:DI 2 "register_operand" "=c") (const_int 0))
112 @@ -18878,7 +18887,7 @@
113 (set (match_operand 0 "register_operand" "")
114 (match_operand 3 "" ""))])]
115 "TARGET_SINGLE_STRINGOP || optimize_size"
117 + "ix86_current_function_needs_cld = 1;")
119 (define_insn "*strsetdi_rex_1"
120 [(set (mem:DI (match_operand:DI 1 "register_operand" "0"))
121 @@ -18972,7 +18981,7 @@
122 (use (match_operand 3 "register_operand" ""))
123 (use (match_dup 1))])]
126 + "ix86_current_function_needs_cld = 1;")
128 (define_insn "*rep_stosdi_rex64"
129 [(set (match_operand:DI 1 "register_operand" "=c") (const_int 0))
130 @@ -19148,7 +19157,7 @@
131 (clobber (match_operand 1 "register_operand" ""))
132 (clobber (match_dup 2))])]
135 + "ix86_current_function_needs_cld = 1;")
137 (define_insn "*cmpstrnqi_nz_1"
138 [(set (reg:CC FLAGS_REG)
139 @@ -19195,7 +19204,7 @@
140 (clobber (match_operand 1 "register_operand" ""))
141 (clobber (match_dup 2))])]
144 + "ix86_current_function_needs_cld = 1;")
146 (define_insn "*cmpstrnqi_1"
147 [(set (reg:CC FLAGS_REG)
148 @@ -19264,7 +19273,7 @@
149 (clobber (match_operand 1 "register_operand" ""))
150 (clobber (reg:CC FLAGS_REG))])]
153 + "ix86_current_function_needs_cld = 1;")
155 (define_insn "*strlenqi_1"
156 [(set (match_operand:SI 0 "register_operand" "=&c")