re PR target/39482 (ICE in inline_secondary_memory_needed, at config/i386/i386.c:25478)
PR target/39482 * config/i386/i386.md (*truncdfsf_mixed): Avoid combining registers from different units in a single alternative. (*truncdfsf_i387): Ditto. (*truncxfsf2_mixed): Ditto. (*truncxfdf2_mixed): Ditto. testsuite/ChangeLog: PR target/39482 * gcc.target/i386/pr39482.c: New test. From-SVN: r144915
This commit is contained in:
parent
df5deb18f1
commit
9ade279bf6
@ -1,3 +1,12 @@
|
||||
2009-03-17 Uros Bizjak <ubizjak@gmail.com>
|
||||
|
||||
PR target/39482
|
||||
* config/i386/i386.md (*truncdfsf_mixed): Avoid combining registers
|
||||
from different units in a single alternative.
|
||||
(*truncdfsf_i387): Ditto.
|
||||
(*truncxfsf2_mixed): Ditto.
|
||||
(*truncxfdf2_mixed): Ditto.
|
||||
|
||||
2009-03-17 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
* dwarf2out.c (dwarf2out_imported_module_or_decl_1): Allow
|
||||
@ -44,14 +53,12 @@
|
||||
2009-03-17 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
PR target/39477
|
||||
* doc/extend.texi: Correct register behavior for regparm on
|
||||
Intel 386.
|
||||
* doc/extend.texi: Correct register behavior for regparm on Intel 386.
|
||||
|
||||
2009-03-17 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
PR target/39476
|
||||
* config/i386/i386.c (ix86_function_regparm): Rewrite for
|
||||
64bit.
|
||||
* config/i386/i386.c (ix86_function_regparm): Rewrite for 64bit.
|
||||
|
||||
2009-03-17 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
@ -105,7 +112,7 @@
|
||||
|
||||
2008-03-13 Catherine Moore <clm@codesourcery.com>
|
||||
|
||||
* gcc/config/i386/x-mingw32 (host-mingw32.o): Replace
|
||||
* gcc/config/i386/x-mingw32 (host-mingw32.o): Replace
|
||||
diagnostic.h with $(DIAGNOSTIC_H).
|
||||
|
||||
2008-03-12 Jakub Jelinek <jakub@redhat.com>
|
||||
@ -124,8 +131,7 @@
|
||||
2009-03-12 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
PR target/39445
|
||||
* config/i386/i386.c (ix86_expand_push): Don't set memory
|
||||
alignment.
|
||||
* config/i386/i386.c (ix86_expand_push): Don't set memory alignment.
|
||||
|
||||
2009-03-12 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
@ -138,8 +144,7 @@
|
||||
2009-03-12 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
PR target/38824
|
||||
* config/i386/i386.md: Compare REGNO on the new peephole2
|
||||
patterns.
|
||||
* config/i386/i386.md: Compare REGNO on the new peephole2 patterns.
|
||||
|
||||
2009-03-12 Vladimir Makarov <vmakarov@redhat.com>
|
||||
|
||||
@ -162,8 +167,7 @@
|
||||
2009-03-11 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR target/39137
|
||||
* cfgexpand.c (get_decl_align_unit): Use LOCAL_DECL_ALIGNMENT
|
||||
macro.
|
||||
* cfgexpand.c (get_decl_align_unit): Use LOCAL_DECL_ALIGNMENT macro.
|
||||
* defaults.h (LOCAL_DECL_ALIGNMENT): Define if not yet defined.
|
||||
* config/i386/i386.h (LOCAL_DECL_ALIGNMENT): Define.
|
||||
* config/i386/i386.c (ix86_local_alignment): For
|
||||
@ -205,8 +209,7 @@
|
||||
Nathan Froyd <froydnj@codesourcery.com>
|
||||
|
||||
PR middle-end/37850
|
||||
* libgcc2.c (__mulMODE3): Use explicit assignments to form the
|
||||
result.
|
||||
* libgcc2.c (__mulMODE3): Use explicit assignments to form the result.
|
||||
(__divMODE3): Likewise.
|
||||
|
||||
2009-03-09 Jakub Jelinek <jakub@redhat.com>
|
||||
@ -248,8 +251,7 @@
|
||||
of referenced_var_check_and_insert.
|
||||
|
||||
PR debug/39372
|
||||
* dwarf2out.c (add_abstract_origin_attribute): Return
|
||||
origin_die.
|
||||
* dwarf2out.c (add_abstract_origin_attribute): Return origin_die.
|
||||
(gen_variable_die): Emit DW_AT_location on abstract static variable's
|
||||
DIE, don't emit it if abstract origin already has it.
|
||||
* tree-cfg.c (remove_useless_stmts_bind): GIMPLE_BINDs with any
|
||||
@ -480,8 +482,7 @@
|
||||
2009-03-01 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
|
||||
|
||||
* optc-gen.awk: No need to duplicate option flags twice.
|
||||
Reuse help texts for duplicate options which do not have
|
||||
any.
|
||||
Reuse help texts for duplicate options which do not have any.
|
||||
|
||||
* gcc.c (display_help): Document --version.
|
||||
|
||||
|
@ -4458,35 +4458,33 @@
|
||||
(set_attr "mode" "SF")])
|
||||
|
||||
(define_insn "*truncdfsf_mixed"
|
||||
[(set (match_operand:SF 0 "nonimmediate_operand" "=m,?fx*r,Y2")
|
||||
[(set (match_operand:SF 0 "nonimmediate_operand" "=m,Y2 ,?f,?x,?*r")
|
||||
(float_truncate:SF
|
||||
(match_operand:DF 1 "nonimmediate_operand" "f ,f ,Y2m")))
|
||||
(clobber (match_operand:SF 2 "memory_operand" "=X,m ,X"))]
|
||||
(match_operand:DF 1 "nonimmediate_operand" "f ,Y2m,f ,f ,f")))
|
||||
(clobber (match_operand:SF 2 "memory_operand" "=X,X ,m ,m ,m"))]
|
||||
"TARGET_MIX_SSE_I387"
|
||||
{
|
||||
switch (which_alternative)
|
||||
{
|
||||
case 0:
|
||||
return output_387_reg_move (insn, operands);
|
||||
|
||||
case 1:
|
||||
return "#";
|
||||
case 2:
|
||||
return "%vcvtsd2ss\t{%1, %d0|%d0, %1}";
|
||||
|
||||
default:
|
||||
gcc_unreachable ();
|
||||
return "#";
|
||||
}
|
||||
}
|
||||
[(set_attr "type" "fmov,multi,ssecvt")
|
||||
(set_attr "unit" "*,i387,*")
|
||||
(set_attr "prefix" "orig,orig,maybe_vex")
|
||||
[(set_attr "type" "fmov,ssecvt,multi,multi,multi")
|
||||
(set_attr "unit" "*,*,i387,i387,i387")
|
||||
(set_attr "prefix" "orig,maybe_vex,orig,orig,orig")
|
||||
(set_attr "mode" "SF")])
|
||||
|
||||
(define_insn "*truncdfsf_i387"
|
||||
[(set (match_operand:SF 0 "nonimmediate_operand" "=m,?fx*r")
|
||||
[(set (match_operand:SF 0 "nonimmediate_operand" "=m,?f,?x,?*r")
|
||||
(float_truncate:SF
|
||||
(match_operand:DF 1 "nonimmediate_operand" "f,f")))
|
||||
(clobber (match_operand:SF 2 "memory_operand" "=X,m"))]
|
||||
(match_operand:DF 1 "nonimmediate_operand" "f ,f ,f ,f")))
|
||||
(clobber (match_operand:SF 2 "memory_operand" "=X,m ,m ,m"))]
|
||||
"TARGET_80387"
|
||||
{
|
||||
switch (which_alternative)
|
||||
@ -4494,14 +4492,12 @@
|
||||
case 0:
|
||||
return output_387_reg_move (insn, operands);
|
||||
|
||||
case 1:
|
||||
return "#";
|
||||
default:
|
||||
gcc_unreachable ();
|
||||
return "#";
|
||||
}
|
||||
}
|
||||
[(set_attr "type" "fmov,multi")
|
||||
(set_attr "unit" "*,i387")
|
||||
[(set_attr "type" "fmov,multi,multi,multi")
|
||||
(set_attr "unit" "*,i387,i387,i387")
|
||||
(set_attr "mode" "SF")])
|
||||
|
||||
(define_insn "*truncdfsf2_i387_1"
|
||||
@ -4552,31 +4548,31 @@
|
||||
})
|
||||
|
||||
(define_insn "*truncxfsf2_mixed"
|
||||
[(set (match_operand:SF 0 "nonimmediate_operand" "=m,?fx*r")
|
||||
[(set (match_operand:SF 0 "nonimmediate_operand" "=m,?f,?x,?*r")
|
||||
(float_truncate:SF
|
||||
(match_operand:XF 1 "register_operand" "f,f")))
|
||||
(clobber (match_operand:SF 2 "memory_operand" "=X,m"))]
|
||||
(match_operand:XF 1 "register_operand" "f ,f ,f ,f")))
|
||||
(clobber (match_operand:SF 2 "memory_operand" "=X,m ,m ,m"))]
|
||||
"TARGET_80387"
|
||||
{
|
||||
gcc_assert (!which_alternative);
|
||||
return output_387_reg_move (insn, operands);
|
||||
}
|
||||
[(set_attr "type" "fmov,multi")
|
||||
(set_attr "unit" "*,i387")
|
||||
[(set_attr "type" "fmov,multi,multi,multi")
|
||||
(set_attr "unit" "*,i387,i387,i387")
|
||||
(set_attr "mode" "SF")])
|
||||
|
||||
(define_insn "*truncxfdf2_mixed"
|
||||
[(set (match_operand:DF 0 "nonimmediate_operand" "=m,?fY2*r")
|
||||
[(set (match_operand:DF 0 "nonimmediate_operand" "=m,?f,?Y2,?*r")
|
||||
(float_truncate:DF
|
||||
(match_operand:XF 1 "register_operand" "f,f")))
|
||||
(clobber (match_operand:DF 2 "memory_operand" "=X,m"))]
|
||||
(match_operand:XF 1 "register_operand" "f ,f ,f ,f")))
|
||||
(clobber (match_operand:DF 2 "memory_operand" "=X,m ,m ,m"))]
|
||||
"TARGET_80387"
|
||||
{
|
||||
gcc_assert (!which_alternative);
|
||||
return output_387_reg_move (insn, operands);
|
||||
}
|
||||
[(set_attr "type" "fmov,multi")
|
||||
(set_attr "unit" "*,i387")
|
||||
[(set_attr "type" "fmov,multi,multi,multi")
|
||||
(set_attr "unit" "*,i387,i387,i387")
|
||||
(set_attr "mode" "DF")])
|
||||
|
||||
(define_insn "truncxf<mode>2_i387_noop"
|
||||
|
@ -1,3 +1,8 @@
|
||||
2009-03-17 Uros Bizjak <ubizjak@gmail.com>
|
||||
|
||||
PR target/39482
|
||||
* gcc.target/i386/pr39482.c: New test.
|
||||
|
||||
2009-03-17 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR debug/39471
|
||||
|
9
gcc/testsuite/gcc.target/i386/pr39482.c
Normal file
9
gcc/testsuite/gcc.target/i386/pr39482.c
Normal file
@ -0,0 +1,9 @@
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "-mno-sse2" } */
|
||||
|
||||
extern double log (double __x);
|
||||
|
||||
double foo (unsigned long int m_liOutputBufferLen)
|
||||
{
|
||||
return log ((double) m_liOutputBufferLen);
|
||||
}
|
Loading…
Reference in New Issue
Block a user