Line
Link Here
|
0 |
-- a/gcc/Makefile.in |
0 |
++ b/gcc/Makefile.in |
Lines 3036-3042
tree-switch-conversion.o : tree-switch-conversion.c $(CONFIG_H) $(SYSTEM_H) \
Link Here
|
3036 |
$(TREE_H) $(TM_P_H) $(TREE_FLOW_H) $(DIAGNOSTIC_H) $(TREE_INLINE_H) \ |
3036 |
$(TREE_H) $(TM_P_H) $(TREE_FLOW_H) $(DIAGNOSTIC_H) $(TREE_INLINE_H) \ |
3037 |
$(TIMEVAR_H) $(TM_H) coretypes.h $(TREE_DUMP_H) $(GIMPLE_H) \ |
3037 |
$(TIMEVAR_H) $(TM_H) coretypes.h $(TREE_DUMP_H) $(GIMPLE_H) \ |
3038 |
$(TREE_PASS_H) $(FLAGS_H) $(EXPR_H) $(BASIC_BLOCK_H) output.h \ |
3038 |
$(TREE_PASS_H) $(FLAGS_H) $(EXPR_H) $(BASIC_BLOCK_H) output.h \ |
3039 |
$(GGC_H) $(OBSTACK_H) $(PARAMS_H) $(CPPLIB_H) $(PARAMS_H) |
3039 |
$(GGC_H) $(OBSTACK_H) $(PARAMS_H) $(CPPLIB_H) $(PARAMS_H) langhooks.h |
3040 |
tree-complex.o : tree-complex.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TREE_H) \ |
3040 |
tree-complex.o : tree-complex.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TREE_H) \ |
3041 |
$(TM_H) $(RTL_H) $(REAL_H) $(FLAGS_H) $(TREE_FLOW_H) $(GIMPLE_H) \ |
3041 |
$(TM_H) $(RTL_H) $(REAL_H) $(FLAGS_H) $(TREE_FLOW_H) $(GIMPLE_H) \ |
3042 |
tree-iterator.h $(TREE_PASS_H) tree-ssa-propagate.h $(DIAGNOSTIC_H) |
3042 |
tree-iterator.h $(TREE_PASS_H) tree-ssa-propagate.h $(DIAGNOSTIC_H) |
3043 |
-- a/gcc/config/arm/arm.c |
3043 |
++ b/gcc/config/arm/arm.c |
Lines 13705-13711
arm_output_epilogue (rtx sibling)
Link Here
|
13705 |
&& !crtl->tail_call_emit) |
13705 |
&& !crtl->tail_call_emit) |
13706 |
{ |
13706 |
{ |
13707 |
unsigned long mask; |
13707 |
unsigned long mask; |
13708 |
mask = (1 << (arm_size_return_regs() / 4)) - 1; |
13708 |
/* Preserve return values, of any size. */ |
|
|
13709 |
mask = (1 << ((arm_size_return_regs() + 3) / 4)) - 1; |
13709 |
mask ^= 0xf; |
13710 |
mask ^= 0xf; |
13710 |
mask &= ~saved_regs_mask; |
13711 |
mask &= ~saved_regs_mask; |
13711 |
reg = 0; |
13712 |
reg = 0; |
13712 |
-- a/gcc/config/arm/linux-atomic.c |
13713 |
++ b/gcc/config/arm/linux-atomic.c |
Lines 56-62
typedef void (__kernel_dmb_t) (void);
Link Here
|
56 |
\ |
56 |
\ |
57 |
do { \ |
57 |
do { \ |
58 |
tmp = *ptr; \ |
58 |
tmp = *ptr; \ |
59 |
failure = __kernel_cmpxchg (tmp, PFX_OP tmp INF_OP val, ptr); \ |
59 |
failure = __kernel_cmpxchg (tmp, PFX_OP (tmp INF_OP val), ptr); \ |
60 |
} while (failure != 0); \ |
60 |
} while (failure != 0); \ |
61 |
\ |
61 |
\ |
62 |
return tmp; \ |
62 |
return tmp; \ |
Lines 88-95
FETCH_AND_OP_WORD (nand, ~, &)
Link Here
|
88 |
\ |
88 |
\ |
89 |
do { \ |
89 |
do { \ |
90 |
oldval = *wordptr; \ |
90 |
oldval = *wordptr; \ |
91 |
newval = ((PFX_OP ((oldval & mask) >> shift) \ |
91 |
newval = ((PFX_OP (((oldval & mask) >> shift) \ |
92 |
INF_OP (unsigned int) val) << shift) & mask; \ |
92 |
INF_OP (unsigned int) val)) << shift) & mask; \ |
93 |
newval |= oldval & ~mask; \ |
93 |
newval |= oldval & ~mask; \ |
94 |
failure = __kernel_cmpxchg (oldval, newval, wordptr); \ |
94 |
failure = __kernel_cmpxchg (oldval, newval, wordptr); \ |
95 |
} while (failure != 0); \ |
95 |
} while (failure != 0); \ |
Lines 97-115
FETCH_AND_OP_WORD (nand, ~, &)
Link Here
|
97 |
return (RETURN & mask) >> shift; \ |
97 |
return (RETURN & mask) >> shift; \ |
98 |
} |
98 |
} |
99 |
|
99 |
|
100 |
SUBWORD_SYNC_OP (add, , +, short, 2, oldval) |
100 |
SUBWORD_SYNC_OP (add, , +, unsigned short, 2, oldval) |
101 |
SUBWORD_SYNC_OP (sub, , -, short, 2, oldval) |
101 |
SUBWORD_SYNC_OP (sub, , -, unsigned short, 2, oldval) |
102 |
SUBWORD_SYNC_OP (or, , |, short, 2, oldval) |
102 |
SUBWORD_SYNC_OP (or, , |, unsigned short, 2, oldval) |
103 |
SUBWORD_SYNC_OP (and, , &, short, 2, oldval) |
103 |
SUBWORD_SYNC_OP (and, , &, unsigned short, 2, oldval) |
104 |
SUBWORD_SYNC_OP (xor, , ^, short, 2, oldval) |
104 |
SUBWORD_SYNC_OP (xor, , ^, unsigned short, 2, oldval) |
105 |
SUBWORD_SYNC_OP (nand, ~, &, short, 2, oldval) |
105 |
SUBWORD_SYNC_OP (nand, ~, &, unsigned short, 2, oldval) |
106 |
|
106 |
|
107 |
SUBWORD_SYNC_OP (add, , +, char, 1, oldval) |
107 |
SUBWORD_SYNC_OP (add, , +, unsigned char, 1, oldval) |
108 |
SUBWORD_SYNC_OP (sub, , -, char, 1, oldval) |
108 |
SUBWORD_SYNC_OP (sub, , -, unsigned char, 1, oldval) |
109 |
SUBWORD_SYNC_OP (or, , |, char, 1, oldval) |
109 |
SUBWORD_SYNC_OP (or, , |, unsigned char, 1, oldval) |
110 |
SUBWORD_SYNC_OP (and, , &, char, 1, oldval) |
110 |
SUBWORD_SYNC_OP (and, , &, unsigned char, 1, oldval) |
111 |
SUBWORD_SYNC_OP (xor, , ^, char, 1, oldval) |
111 |
SUBWORD_SYNC_OP (xor, , ^, unsigned char, 1, oldval) |
112 |
SUBWORD_SYNC_OP (nand, ~, &, char, 1, oldval) |
112 |
SUBWORD_SYNC_OP (nand, ~, &, unsigned char, 1, oldval) |
113 |
|
113 |
|
114 |
#define OP_AND_FETCH_WORD(OP, PFX_OP, INF_OP) \ |
114 |
#define OP_AND_FETCH_WORD(OP, PFX_OP, INF_OP) \ |
115 |
int HIDDEN \ |
115 |
int HIDDEN \ |
Lines 119-128
SUBWORD_SYNC_OP (nand, ~, &, char, 1, oldval)
Link Here
|
119 |
\ |
119 |
\ |
120 |
do { \ |
120 |
do { \ |
121 |
tmp = *ptr; \ |
121 |
tmp = *ptr; \ |
122 |
failure = __kernel_cmpxchg (tmp, PFX_OP tmp INF_OP val, ptr); \ |
122 |
failure = __kernel_cmpxchg (tmp, PFX_OP (tmp INF_OP val), ptr); \ |
123 |
} while (failure != 0); \ |
123 |
} while (failure != 0); \ |
124 |
\ |
124 |
\ |
125 |
return PFX_OP tmp INF_OP val; \ |
125 |
return PFX_OP (tmp INF_OP val); \ |
126 |
} |
126 |
} |
127 |
|
127 |
|
128 |
OP_AND_FETCH_WORD (add, , +) |
128 |
OP_AND_FETCH_WORD (add, , +) |
Lines 132-150
OP_AND_FETCH_WORD (and, , &)
Link Here
|
132 |
OP_AND_FETCH_WORD (xor, , ^) |
132 |
OP_AND_FETCH_WORD (xor, , ^) |
133 |
OP_AND_FETCH_WORD (nand, ~, &) |
133 |
OP_AND_FETCH_WORD (nand, ~, &) |
134 |
|
134 |
|
135 |
SUBWORD_SYNC_OP (add, , +, short, 2, newval) |
135 |
SUBWORD_SYNC_OP (add, , +, unsigned short, 2, newval) |
136 |
SUBWORD_SYNC_OP (sub, , -, short, 2, newval) |
136 |
SUBWORD_SYNC_OP (sub, , -, unsigned short, 2, newval) |
137 |
SUBWORD_SYNC_OP (or, , |, short, 2, newval) |
137 |
SUBWORD_SYNC_OP (or, , |, unsigned short, 2, newval) |
138 |
SUBWORD_SYNC_OP (and, , &, short, 2, newval) |
138 |
SUBWORD_SYNC_OP (and, , &, unsigned short, 2, newval) |
139 |
SUBWORD_SYNC_OP (xor, , ^, short, 2, newval) |
139 |
SUBWORD_SYNC_OP (xor, , ^, unsigned short, 2, newval) |
140 |
SUBWORD_SYNC_OP (nand, ~, &, short, 2, newval) |
140 |
SUBWORD_SYNC_OP (nand, ~, &, unsigned short, 2, newval) |
141 |
|
141 |
|
142 |
SUBWORD_SYNC_OP (add, , +, char, 1, newval) |
142 |
SUBWORD_SYNC_OP (add, , +, unsigned char, 1, newval) |
143 |
SUBWORD_SYNC_OP (sub, , -, char, 1, newval) |
143 |
SUBWORD_SYNC_OP (sub, , -, unsigned char, 1, newval) |
144 |
SUBWORD_SYNC_OP (or, , |, char, 1, newval) |
144 |
SUBWORD_SYNC_OP (or, , |, unsigned char, 1, newval) |
145 |
SUBWORD_SYNC_OP (and, , &, char, 1, newval) |
145 |
SUBWORD_SYNC_OP (and, , &, unsigned char, 1, newval) |
146 |
SUBWORD_SYNC_OP (xor, , ^, char, 1, newval) |
146 |
SUBWORD_SYNC_OP (xor, , ^, unsigned char, 1, newval) |
147 |
SUBWORD_SYNC_OP (nand, ~, &, char, 1, newval) |
147 |
SUBWORD_SYNC_OP (nand, ~, &, unsigned char, 1, newval) |
148 |
|
148 |
|
149 |
int HIDDEN |
149 |
int HIDDEN |
150 |
__sync_val_compare_and_swap_4 (int *ptr, int oldval, int newval) |
150 |
__sync_val_compare_and_swap_4 (int *ptr, int oldval, int newval) |
Lines 194-201
__sync_val_compare_and_swap_4 (int *ptr, int oldval, int newval)
Link Here
|
194 |
} \ |
194 |
} \ |
195 |
} |
195 |
} |
196 |
|
196 |
|
197 |
SUBWORD_VAL_CAS (short, 2) |
197 |
SUBWORD_VAL_CAS (unsigned short, 2) |
198 |
SUBWORD_VAL_CAS (char, 1) |
198 |
SUBWORD_VAL_CAS (unsigned char, 1) |
199 |
|
199 |
|
200 |
typedef unsigned char bool; |
200 |
typedef unsigned char bool; |
201 |
|
201 |
|
Lines 216-223
__sync_bool_compare_and_swap_4 (int *ptr, int oldval, int newval)
Link Here
|
216 |
return (oldval == actual_oldval); \ |
216 |
return (oldval == actual_oldval); \ |
217 |
} |
217 |
} |
218 |
|
218 |
|
219 |
SUBWORD_BOOL_CAS (short, 2) |
219 |
SUBWORD_BOOL_CAS (unsigned short, 2) |
220 |
SUBWORD_BOOL_CAS (char, 1) |
220 |
SUBWORD_BOOL_CAS (unsigned char, 1) |
221 |
|
221 |
|
222 |
void HIDDEN |
222 |
void HIDDEN |
223 |
__sync_synchronize (void) |
223 |
__sync_synchronize (void) |
Lines 259-266
__sync_lock_test_and_set_4 (int *ptr, int val)
Link Here
|
259 |
return (oldval & mask) >> shift; \ |
259 |
return (oldval & mask) >> shift; \ |
260 |
} |
260 |
} |
261 |
|
261 |
|
262 |
SUBWORD_TEST_AND_SET (short, 2) |
262 |
SUBWORD_TEST_AND_SET (unsigned short, 2) |
263 |
SUBWORD_TEST_AND_SET (char, 1) |
263 |
SUBWORD_TEST_AND_SET (unsigned char, 1) |
264 |
|
264 |
|
265 |
#define SYNC_LOCK_RELEASE(TYPE, WIDTH) \ |
265 |
#define SYNC_LOCK_RELEASE(TYPE, WIDTH) \ |
266 |
void HIDDEN \ |
266 |
void HIDDEN \ |
267 |
-- a/gcc/tree-switch-conversion.c |
267 |
++ b/gcc/tree-switch-conversion.c |
Lines 96-101
eight) times the number of the actual switch branches. */
Link Here
|
96 |
#include "diagnostic.h" |
96 |
#include "diagnostic.h" |
97 |
#include "tree-dump.h" |
97 |
#include "tree-dump.h" |
98 |
#include "timevar.h" |
98 |
#include "timevar.h" |
|
|
99 |
#include "langhooks.h" |
99 |
|
100 |
|
100 |
/* The main structure of the pass. */ |
101 |
/* The main structure of the pass. */ |
101 |
struct switch_conv_info |
102 |
struct switch_conv_info |
Lines 693-701
gen_inbound_check (gimple swtch)
Link Here
|
693 |
|
694 |
|
694 |
/* Make sure we do not generate arithmetics in a subrange. */ |
695 |
/* Make sure we do not generate arithmetics in a subrange. */ |
695 |
if (TREE_TYPE (TREE_TYPE (info.index_expr))) |
696 |
if (TREE_TYPE (TREE_TYPE (info.index_expr))) |
696 |
utype = unsigned_type_for (TREE_TYPE (TREE_TYPE (info.index_expr))); |
697 |
utype = lang_hooks.types.type_for_mode |
|
|
698 |
(TYPE_MODE (TREE_TYPE (TREE_TYPE (info.index_expr))), 1); |
697 |
else |
699 |
else |
698 |
utype = unsigned_type_for (TREE_TYPE (info.index_expr)); |
700 |
utype = lang_hooks.types.type_for_mode |
|
|
701 |
(TYPE_MODE (TREE_TYPE (info.index_expr)), 1); |
699 |
|
702 |
|
700 |
/* (end of) block 0 */ |
703 |
/* (end of) block 0 */ |
701 |
gsi = gsi_for_stmt (info.arr_ref_first); |
704 |
gsi = gsi_for_stmt (info.arr_ref_first); |