[Bug c++/59131] Compiler segfaults while generating code to save local variables in transactional section

2013-11-15 Thread machens at tuhh dot de
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59131

--- Comment #2 from Holger Machens machens at tuhh dot de ---
Created attachment 31224
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=31224action=edit
Test case to reproduce the bug


[Bug c++/59130] New: Inline(d) or static functions not registered in transactional clone table

2013-11-14 Thread machens at tuhh dot de
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59130

Bug ID: 59130
   Summary: Inline(d) or static functions not registered in
transactional clone table
   Product: gcc
   Version: 4.7.3
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: machens at tuhh dot de

Created attachment 31218
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=31218action=edit
Test case to reproduce the bug

When a function pointer is used in a transactional section to call a function
the STM library (such as libitm) has to lookup the corresponding transactional
function 'clone' of that function. The compiler therefore generates mapping
tables which associate function pointers of non-transactional functions with
their corresponding transactional function clones.

With the STAMP benchmark suite I have experienced that the compiler does not
generate entries in the lookup table for functions which are declared as static
or inline.

I have written a small test case to reproduce the bug (see attachment). 


Compile with:

/usr/bin/g++-4.7 -fgnu-tm -Wall -g -O3 -o gnutm-test main.cpp -lpthread -litm


[Bug c++/59131] New: Compiler segfaults while generating code to save local variables in transactional section

2013-11-14 Thread machens at tuhh dot de
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59131

Bug ID: 59131
   Summary: Compiler segfaults while generating code to save local
variables in transactional section
   Product: gcc
   Version: 4.7.3
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: machens at tuhh dot de

I've analyzed code generated to save and restore local variables in
transactional sections and wrote some tests with very much local variables
(exceeding the capacity of the CPU registers). At some point the compiler
segfaulted. I've attached the code to allow you to further investigate it.



/usr/bin/g++-4.7 -fgnu-tm -Wall -g -O3 -o gnutm-test compiler-segfaults.c -litm