This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug target/11180] [avr-gcc] Optimization decrease performance of struct assignment.
- From: "dmixm at marine dot febras dot ru" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 16 Sep 2007 03:22:00 -0000
- Subject: [Bug target/11180] [avr-gcc] Optimization decrease performance of struct assignment.
- References: <bug-11180-6291@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Comment #14 from dmixm at marine dot febras dot ru 2007-09-16 03:22 -------
It was:
(define_insn "movdi"
[(set (match_operand:DI 0 "nonimmediate_operand" "")
(match_operand:DI 1 "general_operand" ""))]
""
"#")
(define_split
[(set (match_operand:DI 0 "nonimmediate_operand" "")
(match_operand:DI 1 "general_operand" ""))]
"reload_completed"
[(set (match_dup 2) (match_dup 4))
(set (match_dup 3) (match_dup 5))]
"{
operands[2] = simplify_gen_subreg (SImode, operands[0], DImode, 0);
operands[3] = simplify_gen_subreg (SImode, operands[0], DImode, 4);
operands[4] = simplify_gen_subreg (SImode, operands[1], DImode, 0);
operands[5] = simplify_gen_subreg (SImode, operands[1], DImode, 4);
}")
Alas, this elementary addition has appeared erroneous.
The following program leads to emergency end of compilation:
int main ()
{
volatile long long x = 0x0102030405060708LL;
if (x != 0x0102030405060708LL)
exit (__LINE__);
exit (0);
}
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=11180