This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug rtl-optimization/44164] [4.5 Regression] Aliasing bug triggered by Boost.Bind/Boost.Function
- From: "rguenth at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 25 May 2010 13:56:59 -0000
- Subject: [Bug rtl-optimization/44164] [4.5 Regression] Aliasing bug triggered by Boost.Bind/Boost.Function
- References: <bug-44164-19190@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Comment #20 from rguenth at gcc dot gnu dot org 2010-05-25 13:56 -------
-fsched2-use-superblocks also fixes it.
-fdbg-cnt=sched_region:65 is broken, -fdbg-cnt=sched_region:64 works for
a simplified testcase tail:
int bmi_get(const int* id)
{
if (*id != 42)
__builtin_abort();
return 0;
}
int main()
{
int id = 42;
typedef boost::function<int ()> func_t;
func_t f = boost::bind(&bmi_get, &id);
func_t g = f;
g();
return 0;
}
Assembler difference:
--- /tmp/gtest.s.ok 2010-05-25 15:51:19.000000000 +0200
+++ /tmp/gtest.s.broken 2010-05-25 15:51:30.000000000 +0200
@@ -825,21 +825,21 @@
call _ZN5boost6detail8function16has_empty_targetEz
testb %al, %al
jne .L93
+ movq 112(%rsp), %rdx
leaq 96(%rsp), %rbx
- movq $_Z7bmi_getPKi, 104(%rsp)
- movq %rbp, 16(%rbx)
movl
$_ZZN5boost9function0IiE9assign_toINS_3_bi6bind_tIiPFiPKiENS3_5l
ist1INS3_5valueIPiEEEEEEEEvT_E13stored_vtable, %eax
orq $1, %rax
- movq %rax, 96(%rsp)
- movq %rax, 64(%rsp)
+ movq $_Z7bmi_getPKi, 104(%rsp)
movq $_Z7bmi_getPKi, 72(%rsp)
- movq 112(%rsp), %rdx
+ movq %rbp, 16(%rbx)
+ leaq 64(%rsp), %rbp
+ movq %rax, 96(%rsp)
movq %rdx, 80(%rsp)
movq 120(%rsp), %rdx
- movq %rdx, 88(%rsp)
+ movq %rax, 64(%rsp)
andq $-2, %rax
- leaq 64(%rsp), %rbp
leaq 8(%rbp), %rdi
+ movq %rdx, 88(%rsp)
.LEHB15:
call *8(%rax)
.LEHE15:
Still can't see where that is broken ... :/
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44164