Summary: | Redundant multiplications for memset | ||
---|---|---|---|
Product: | gcc | Reporter: | Guillaume Melquiond <guillaume.melquiond> |
Component: | middle-end | Assignee: | Not yet assigned to anyone <unassigned> |
Status: | RESOLVED DUPLICATE | ||
Severity: | enhancement | CC: | gcc-bugs, rguenth |
Priority: | P3 | Keywords: | missed-optimization |
Version: | 4.3.0 | ||
Target Milestone: | 12.0 | ||
Host: | Target: | x86_64-linux-gnu | |
Build: | Known to work: | 12.0 | |
Known to fail: | 10.1.0, 5.1.0 | Last reconfirmed: | 2012-06-06 00:00:00 |
Description
Guillaume Melquiond
2007-08-18 05:54:59 UTC
This is a middle-end issue. What is happening is that it is splitting it up early on with the size. Now what the trunk is doing is better than what was done for 4.0.x. Re-confirmed. Fixed on the trunk by r12-285. This is what we get now: fill1(char*, int): movabsq $72340172838076673, %rax movzbl %sil, %esi imulq %rax, %rsi movq %rsi, (%rdi) movq %rsi, 7(%rdi) ret |