* [gentoo-commits] gentoo commit in src/patchsets/gcc/4.4.3/gentoo: 62_all_ia64-pr41551.patch 70_all_gcc44-pr45070-arm_-Os.patch README.history
@ 2010-09-23 22:50 Luca Barbato (lu_zero)
0 siblings, 0 replies; only message in thread
From: Luca Barbato (lu_zero) @ 2010-09-23 22:50 UTC (permalink / raw
To: gentoo-commits
lu_zero 10/09/23 22:50:01
Modified: README.history
Added: 62_all_ia64-pr41551.patch
70_all_gcc44-pr45070-arm_-Os.patch
Log:
Backport 4.4.4 patches
Revision Changes Path
1.5 src/patchsets/gcc/4.4.3/gentoo/README.history
file : http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/gcc/4.4.3/gentoo/README.history?rev=1.5&view=markup
plain: http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/gcc/4.4.3/gentoo/README.history?rev=1.5&content-type=text/plain
diff : http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/gcc/4.4.3/gentoo/README.history?r1=1.4&r2=1.5
Index: README.history
===================================================================
RCS file: /var/cvsroot/gentoo/src/patchsets/gcc/4.4.3/gentoo/README.history,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- README.history 1 Aug 2010 21:01:52 -0000 1.4
+++ README.history 23 Sep 2010 22:50:01 -0000 1.5
@@ -1,3 +1,7 @@
+1.4
+ 23.09.2010
+ + 62_all_ia64-pr41551.patch
+ + 70_all_gcc44-pr45070-arm_-Os.patch
1.3 01.08.2010
+ 94_all_sh-pr42481.patch
+ 95_all_sh-pr43744.patch
1.1 src/patchsets/gcc/4.4.3/gentoo/62_all_ia64-pr41551.patch
file : http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/gcc/4.4.3/gentoo/62_all_ia64-pr41551.patch?rev=1.1&view=markup
plain: http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/gcc/4.4.3/gentoo/62_all_ia64-pr41551.patch?rev=1.1&content-type=text/plain
Index: 62_all_ia64-pr41551.patch
===================================================================
[4.4 Regression] ia64: ICE: in instantiate_virtual_regs_in_insn, at function.c:1630
http://gcc.gnu.org/PR41551
https://bugs.gentoo.org/331825
--- branches/gcc-4_4-branch/gcc/function.c
+++ branches/gcc-4_4-branch/gcc/function.c
@@ -1601,7 +1601,13 @@
if (!safe_insn_predicate (insn_code, i, x))
{
start_sequence ();
- x = force_reg (insn_data[insn_code].operand[i].mode, x);
+ if (REG_P (x))
+ {
+ gcc_assert (REGNO (x) <= LAST_VIRTUAL_REGISTER);
+ x = copy_to_reg (x);
+ }
+ else
+ x = force_reg (insn_data[insn_code].operand[i].mode, x);
seq = get_insns ();
end_sequence ();
if (seq)
1.1 src/patchsets/gcc/4.4.3/gentoo/70_all_gcc44-pr45070-arm_-Os.patch
file : http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/gcc/4.4.3/gentoo/70_all_gcc44-pr45070-arm_-Os.patch?rev=1.1&view=markup
plain: http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/gcc/4.4.3/gentoo/70_all_gcc44-pr45070-arm_-Os.patch?rev=1.1&content-type=text/plain
Index: 70_all_gcc44-pr45070-arm_-Os.patch
===================================================================
Miscompiled c++ class with packed attribute on ARM with -Os optimizations
http://gcc.gnu.org/PR45070
https://bugs.gentoo.org/331641
--- a/gcc/Makefile.in
+++ b/gcc/Makefile.in
@@ -2749,7 +2749,7 @@ tree-switch-conversion.o : tree-switch-conversion.c $(CONFIG_H) $(SYSTEM_H) \
$(TREE_H) $(TM_P_H) $(TREE_FLOW_H) $(DIAGNOSTIC_H) $(TREE_INLINE_H) \
$(TIMEVAR_H) $(TM_H) coretypes.h $(TREE_DUMP_H) $(GIMPLE_H) \
tree-pass.h $(FLAGS_H) $(EXPR_H) $(BASIC_BLOCK_H) output.h \
- $(GGC_H) $(OBSTACK_H) $(PARAMS_H) $(CPPLIB_H) $(PARAMS_H)
+ $(GGC_H) $(OBSTACK_H) $(PARAMS_H) $(CPPLIB_H) $(PARAMS_H) langhooks.h
tree-complex.o : tree-complex.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TREE_H) \
$(TM_H) $(RTL_H) $(REAL_H) $(FLAGS_H) $(TREE_FLOW_H) $(GIMPLE_H) \
tree-iterator.h tree-pass.h tree-ssa-propagate.h $(DIAGNOSTIC_H)
--- a/gcc/config/arm/arm.c
+++ b/gcc/config/arm/arm.c
@@ -12150,7 +12150,8 @@ arm_output_epilogue (rtx sibling)
&& !crtl->tail_call_emit)
{
unsigned long mask;
- mask = (1 << (arm_size_return_regs() / 4)) - 1;
+ /* Preserve return values, of any size. */
+ mask = (1 << ((arm_size_return_regs() + 3) / 4)) - 1;
mask ^= 0xf;
mask &= ~saved_regs_mask;
reg = 0;
--- a/gcc/config/arm/linux-atomic.c
+++ b/gcc/config/arm/linux-atomic.c
@@ -56,7 +56,7 @@ typedef void (__kernel_dmb_t) (void);
\
do { \
tmp = *ptr; \
- failure = __kernel_cmpxchg (tmp, PFX_OP tmp INF_OP val, ptr); \
+ failure = __kernel_cmpxchg (tmp, PFX_OP (tmp INF_OP val), ptr); \
} while (failure != 0); \
\
return tmp; \
@@ -88,8 +88,8 @@ FETCH_AND_OP_WORD (nand, ~, &)
\
do { \
oldval = *wordptr; \
- newval = ((PFX_OP ((oldval & mask) >> shift) \
- INF_OP (unsigned int) val) << shift) & mask; \
+ newval = ((PFX_OP (((oldval & mask) >> shift) \
+ INF_OP (unsigned int) val)) << shift) & mask; \
newval |= oldval & ~mask; \
failure = __kernel_cmpxchg (oldval, newval, wordptr); \
} while (failure != 0); \
@@ -97,19 +97,19 @@ FETCH_AND_OP_WORD (nand, ~, &)
return (RETURN & mask) >> shift; \
}
-SUBWORD_SYNC_OP (add, , +, short, 2, oldval)
-SUBWORD_SYNC_OP (sub, , -, short, 2, oldval)
-SUBWORD_SYNC_OP (or, , |, short, 2, oldval)
-SUBWORD_SYNC_OP (and, , &, short, 2, oldval)
-SUBWORD_SYNC_OP (xor, , ^, short, 2, oldval)
-SUBWORD_SYNC_OP (nand, ~, &, short, 2, oldval)
+SUBWORD_SYNC_OP (add, , +, unsigned short, 2, oldval)
+SUBWORD_SYNC_OP (sub, , -, unsigned short, 2, oldval)
+SUBWORD_SYNC_OP (or, , |, unsigned short, 2, oldval)
+SUBWORD_SYNC_OP (and, , &, unsigned short, 2, oldval)
+SUBWORD_SYNC_OP (xor, , ^, unsigned short, 2, oldval)
+SUBWORD_SYNC_OP (nand, ~, &, unsigned short, 2, oldval)
-SUBWORD_SYNC_OP (add, , +, char, 1, oldval)
-SUBWORD_SYNC_OP (sub, , -, char, 1, oldval)
-SUBWORD_SYNC_OP (or, , |, char, 1, oldval)
-SUBWORD_SYNC_OP (and, , &, char, 1, oldval)
-SUBWORD_SYNC_OP (xor, , ^, char, 1, oldval)
-SUBWORD_SYNC_OP (nand, ~, &, char, 1, oldval)
+SUBWORD_SYNC_OP (add, , +, unsigned char, 1, oldval)
+SUBWORD_SYNC_OP (sub, , -, unsigned char, 1, oldval)
+SUBWORD_SYNC_OP (or, , |, unsigned char, 1, oldval)
+SUBWORD_SYNC_OP (and, , &, unsigned char, 1, oldval)
+SUBWORD_SYNC_OP (xor, , ^, unsigned char, 1, oldval)
+SUBWORD_SYNC_OP (nand, ~, &, unsigned char, 1, oldval)
#define OP_AND_FETCH_WORD(OP, PFX_OP, INF_OP) \
int HIDDEN \
@@ -119,10 +119,10 @@ SUBWORD_SYNC_OP (nand, ~, &, char, 1, oldval)
\
do { \
tmp = *ptr; \
- failure = __kernel_cmpxchg (tmp, PFX_OP tmp INF_OP val, ptr); \
+ failure = __kernel_cmpxchg (tmp, PFX_OP (tmp INF_OP val), ptr); \
} while (failure != 0); \
\
- return PFX_OP tmp INF_OP val; \
+ return PFX_OP (tmp INF_OP val); \
}
OP_AND_FETCH_WORD (add, , +)
@@ -132,19 +132,19 @@ OP_AND_FETCH_WORD (and, , &)
OP_AND_FETCH_WORD (xor, , ^)
OP_AND_FETCH_WORD (nand, ~, &)
-SUBWORD_SYNC_OP (add, , +, short, 2, newval)
-SUBWORD_SYNC_OP (sub, , -, short, 2, newval)
-SUBWORD_SYNC_OP (or, , |, short, 2, newval)
-SUBWORD_SYNC_OP (and, , &, short, 2, newval)
-SUBWORD_SYNC_OP (xor, , ^, short, 2, newval)
-SUBWORD_SYNC_OP (nand, ~, &, short, 2, newval)
+SUBWORD_SYNC_OP (add, , +, unsigned short, 2, newval)
+SUBWORD_SYNC_OP (sub, , -, unsigned short, 2, newval)
+SUBWORD_SYNC_OP (or, , |, unsigned short, 2, newval)
+SUBWORD_SYNC_OP (and, , &, unsigned short, 2, newval)
+SUBWORD_SYNC_OP (xor, , ^, unsigned short, 2, newval)
+SUBWORD_SYNC_OP (nand, ~, &, unsigned short, 2, newval)
-SUBWORD_SYNC_OP (add, , +, char, 1, newval)
-SUBWORD_SYNC_OP (sub, , -, char, 1, newval)
-SUBWORD_SYNC_OP (or, , |, char, 1, newval)
-SUBWORD_SYNC_OP (and, , &, char, 1, newval)
-SUBWORD_SYNC_OP (xor, , ^, char, 1, newval)
-SUBWORD_SYNC_OP (nand, ~, &, char, 1, newval)
+SUBWORD_SYNC_OP (add, , +, unsigned char, 1, newval)
+SUBWORD_SYNC_OP (sub, , -, unsigned char, 1, newval)
+SUBWORD_SYNC_OP (or, , |, unsigned char, 1, newval)
+SUBWORD_SYNC_OP (and, , &, unsigned char, 1, newval)
+SUBWORD_SYNC_OP (xor, , ^, unsigned char, 1, newval)
+SUBWORD_SYNC_OP (nand, ~, &, unsigned char, 1, newval)
int HIDDEN
__sync_val_compare_and_swap_4 (int *ptr, int oldval, int newval)
@@ -194,8 +194,8 @@ __sync_val_compare_and_swap_4 (int *ptr, int oldval, int newval)
} \
}
-SUBWORD_VAL_CAS (short, 2)
-SUBWORD_VAL_CAS (char, 1)
+SUBWORD_VAL_CAS (unsigned short, 2)
+SUBWORD_VAL_CAS (unsigned char, 1)
typedef unsigned char bool;
@@ -216,8 +216,8 @@ __sync_bool_compare_and_swap_4 (int *ptr, int oldval, int newval)
return (oldval == actual_oldval); \
}
-SUBWORD_BOOL_CAS (short, 2)
-SUBWORD_BOOL_CAS (char, 1)
+SUBWORD_BOOL_CAS (unsigned short, 2)
+SUBWORD_BOOL_CAS (unsigned char, 1)
void HIDDEN
__sync_synchronize (void)
@@ -259,8 +259,8 @@ __sync_lock_test_and_set_4 (int *ptr, int val)
return (oldval & mask) >> shift; \
}
-SUBWORD_TEST_AND_SET (short, 2)
-SUBWORD_TEST_AND_SET (char, 1)
+SUBWORD_TEST_AND_SET (unsigned short, 2)
+SUBWORD_TEST_AND_SET (unsigned char, 1)
#define SYNC_LOCK_RELEASE(TYPE, WIDTH) \
void HIDDEN \
--- a/gcc/tree-switch-conversion.c
+++ b/gcc/tree-switch-conversion.c
@@ -96,6 +96,7 @@ eight) times the number of the actual switch branches. */
#include "diagnostic.h"
#include "tree-dump.h"
#include "timevar.h"
+#include "langhooks.h"
/* The main structure of the pass. */
struct switch_conv_info
@@ -658,9 +659,11 @@ gen_inbound_check (gimple swtch)
/* Make sure we do not generate arithmetics in a subrange. */
if (TREE_TYPE (TREE_TYPE (info.index_expr)))
- utype = unsigned_type_for (TREE_TYPE (TREE_TYPE (info.index_expr)));
+ utype = lang_hooks.types.type_for_mode
+ (TYPE_MODE (TREE_TYPE (TREE_TYPE (info.index_expr))), 1);
else
- utype = unsigned_type_for (TREE_TYPE (info.index_expr));
+ utype = lang_hooks.types.type_for_mode
+ (TYPE_MODE (TREE_TYPE (info.index_expr)), 1);
/* (end of) block 0 */
gsi = gsi_for_stmt (info.arr_ref_first);
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2010-09-23 22:50 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-09-23 22:50 [gentoo-commits] gentoo commit in src/patchsets/gcc/4.4.3/gentoo: 62_all_ia64-pr41551.patch 70_all_gcc44-pr45070-arm_-Os.patch README.history Luca Barbato (lu_zero)
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox