On Thu, 2011-12-15 at 10:51 -0500, Patrick Marlier wrote:
> Here a list of known bugs for trans-mem. I have tried to sort it by 
> priority (highest first).

Thanks for this list!

Items that I would add:

* Publication safety could potentially be violated.  We suspect this can
happen when loads are moved to before other loads that the former depend
on (e.g., "if(foo) x = bar;" could become "xtemp=bar; if (foo) x =
xtemp;"; however, swapping loads inside of a BB would be fine).
However, we don't have a test case for this yet.  Aldy/Andrew suggested
looking at some of the tests in gcc/testsuite/gcc.dg/simulate-thread/,
which they used for the atomic work.  If you have time to look for a
test case, this would be great.

* I have a test that shows that the compiler doesn't yet check that
txn_safe etc are part of the type (so, you can assign the value of
txn_unsafe function pointer to a txn_safe one).  Will create a PR for
this.  Lower priority, I'd say.

Just performance related, so lower priority:

* I need to port LSA to a libitm TM method (multiple locks,
write-through, time-based).  With just global-lock / write-through as of
now, we won't win any performance prizes...

* We currently go irrevocable very early, whereas it would be better if
we'd waited for as long as possible.  I thought I had seen cases where
this was happening even if it wasn't sure that we would actually have to
go irrevocable, but I don't remember which test / program this was with.

> 
>   * Stack save/restore not working? -> XFAIL testcases
>     Related to this:
>     ICE: verify_gimple failed: invalid rhs for gimple memory store with 
> -fgnu-tm --param tm-max-aggregate-size=32
>     http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51472
>     [trans-mem] save/restore of thread-local data in nested txns is missing
>     http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49581
> 

Stack slots don't get restored in Genome currently.  Setting the
returns-twice flag on ITM_beginTransaction fixes this for Genome, but we
need to check that this will always work.  Richard is also looking at
whether we can fix the back edges (they broke / got lost, which causes
stack restore to be missing).

>   * Caller-save happens on _ITM_beginTransaction
>     ([trans-mem] Segfault in libitm when compiling with -O2)
>     -> Fix proposed but probably not optimal.
>     http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48625
> 
>   * [trans-mem] problem with TM clone aliases
>     Leads to add _ITM_getTMCloneOrIrrevocable in a __transaction_atomic.
>     -> Fix proposed.
>     http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51516
> 
>   * ICE: in function_and_variable_visibility, at ipa.c:835 with -O 
> -fgnu-tm and overriding virtual transaction_safe function
>     -> Fix proposed.
>     http://gcc.gnu.org/ml/gcc-patches/2011-12/msg01182.html
>     http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51411
> 
>   * ICE: verify_flow_info failed: BB 3 can not throw but has an EH edge 
> with -fgnu-tm -fnon-call-exceptions and transaction_callable
>     http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51212
> 
>   * ICE when lto1 does not have -fgnu-tm and object file uses TM
>     http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51280
> 
>   * AIX unexpected error_mark node in new TM tests
>     -> Probably already fixed?
>     http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51174
> 
> Probably should be closed:
>   * libitm failures
>     http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51124
> 
>   * infinite loop when compiling
>     http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48075

I think I checked that a while ago, and it was still looping.  But as
someone on the PR pointed out, this is ICE on illegal code, so less
important.

> 
> Fixed but still open:
>   * ICE: vector VEC(inline_summary_t,base) index domain error, in 
> inline_summary at ipa-inline.h:193 with -O -fgnu-tm, transaction_safe 
> and overloaded contructor
>     http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51273
> 
>   * ICE: SIGSEGV in ix86_init_builtins (i386.c:27691) with -fgnu-tm and 
> any fortran code
>     http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51291
> 
> I hope this message could help.

It does!  Thanks for all the help!


Torvald


Reply via email to