This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug rtl-optimization/44164] [4.5 Regression] Aliasing bug triggered by Boost.Bind/Boost.Function



------- 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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]