Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
View | Details | Raw Unified | Return to bug 331641 | Differences between
and this patch

Collapse All | Expand All

(-)file_not_specified_in_diff (-43 / +47 lines)
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);

Return to bug 331641