From d1bc38e623d1f99525168fe3e18b6f66932310e1 Mon Sep 17 00:00:00 2001 From: Uros Bizjak Date: Sat, 10 Nov 2012 12:28:12 +0100 Subject: [PATCH] re PR rtl-optimization/55247 (internal compiler error: Max. number of generated reload insns per insn is achieved (90)) PR target/55247 * config/i386/i386.md (*movti_internal_rex64): Add "!" to riF->o alternative. testsuite/ChangeLog: PR target/55247 * gcc.target/i386/pr55247.c: New test. From-SVN: r193388 --- gcc/ChangeLog | 16 +++++++++----- gcc/config/i386/i386.md | 2 +- gcc/testsuite/ChangeLog | 7 +++++- gcc/testsuite/gcc.target/i386/pr55247.c | 38 +++++++++++++++++++++++++++++++++ 4 files changed, 56 insertions(+), 7 deletions(-) create mode 100644 gcc/testsuite/gcc.target/i386/pr55247.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index dde3d21..b35dc90 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2012-11-10 Vladimir Makarov + Uros Bizjak + + PR target/55247 + * config/i386/i386.md (*movti_internal_rex64): Add "!" to riF->o + alternative. + 2012-11-09 Ed Smith-Rowland <3dw4rd@verizon.net> PR c++/54413 @@ -23,9 +30,8 @@ * lra.c (setup_operand_alternative): Use them. * lra-constraints.c (LOSER_COST_FACTOR, MAX_OVERALL_COST_BOUND): Remove. - (process_alt_operands): Use LRA_LOSER_COST_FACTOR and - LRA_MAX_REJECT. Accumulate reject instead of setting for - non-const. + (process_alt_operands): Use LRA_LOSER_COST_FACTOR and LRA_MAX_REJECT. + Accumulate reject instead of setting for non-const. (curr_insn_transform): Initialize best_losers and best_overall by INT_MAX. @@ -67,8 +73,8 @@ PR rtl-optimization/54472 * sel-sched-ir.c (has_dependence_note_reg_set): Handle implicit sets. - (has_dependence_note_reg_clobber, - has_dependence_note_reg_use): Likewise. + (has_dependence_note_reg_clobber, has_dependence_note_reg_use): + Likewise. 2012-11-09 Eric Botcazou diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index 243ab4e..2598a1f 100644 --- a/gcc/config/i386/i386.md +++ b/gcc/config/i386/i386.md @@ -1874,7 +1874,7 @@ (const_string "OI")))]) (define_insn "*movti_internal_rex64" - [(set (match_operand:TI 0 "nonimmediate_operand" "=!r ,o ,x,x ,m") + [(set (match_operand:TI 0 "nonimmediate_operand" "=!r ,!o ,x,x ,m") (match_operand:TI 1 "general_operand" "riFo,riF,C,xm,x"))] "TARGET_64BIT && !(MEM_P (operands[0]) && MEM_P (operands[1]))" { diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index ccf9be8..f27261f 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2012-11-10 Uros Bizjak + + PR target/55247 + * gcc.target/i386/pr55247.c: New test. + 2012-11-09 Andrew Pinski * gcc.c-torture/execute/20121108-1.c: New test. @@ -84,7 +89,7 @@ PR rtl-optimization/55151 * gcc.dg/pr55151.c: Use ia32 instead of x86_64. -2012-11-05 Uros Bizjak +2012-11-07 Uros Bizjak * gcc.dg/tree-ssa/cunroll-1.c: Scan cunrolli dump. diff --git a/gcc/testsuite/gcc.target/i386/pr55247.c b/gcc/testsuite/gcc.target/i386/pr55247.c new file mode 100644 index 0000000..4b5e626 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr55247.c @@ -0,0 +1,38 @@ +/* { dg-do compile { target { ! { ia32 } } } } */ +/* { dg-options "-O2 -mx32 -maddress-mode=long -mno-sse" } */ + +typedef unsigned int uint32_t; +typedef unsigned int uintptr_t; +typedef uint32_t Elf32_Word; +typedef uint32_t Elf32_Addr; +typedef struct { + Elf32_Word st_name; + Elf32_Addr st_value; + Elf32_Word st_size; + unsigned char st_other; +} Elf32_Sym; +typedef struct { + Elf32_Word r_info; +} +Elf32_Rela; +typedef struct { + union { + Elf32_Addr d_ptr; + } + d_un; +} Elf32_Dyn; +struct link_map { + Elf32_Dyn *l_info[34]; +}; +typedef struct link_map *lookup_t; +extern void symbind32 (Elf32_Sym *); +void +_dl_profile_fixup (struct link_map *l, Elf32_Word reloc_arg) +{ + const Elf32_Sym *const symtab = (const void *) (l)->l_info[6]->d_un.d_ptr; + const Elf32_Rela *const reloc = (const void *) ((l)->l_info[23]->d_un.d_ptr + reloc_arg * sizeof (Elf32_Rela)); + const Elf32_Sym *refsym = &symtab[((reloc->r_info) >> 8)]; + const Elf32_Sym *defsym = refsym; + Elf32_Sym sym = *defsym; + symbind32 (&sym); +} -- 2.7.4