On Tue, 2012-05-08 at 18:02 -0500, Dave Boutcher wrote: > Without this patch it is perfectly fine to assign non-transaction_safe > functions to function pointers marked as transaction_safe. Unpleasantness > happens at run time. > > e.g. > > __attribute__((transaction_safe)) long (*compare)(int, int); > > compare = my_funky_random_function; > > > gcc/c-typeck.c | 7 +++++++ > 1 file changed, 7 insertions(+) > > diff --git a/gcc/c-typeck.c b/gcc/c-typeck.c > index fc01a79..69687d6 100644 > --- a/gcc/c-typeck.c > +++ b/gcc/c-typeck.c > @@ -5608,6 +5608,13 @@ convert_for_assignment (location_t location, tree > type, tree rhs, > } > } > > + /* Check for assignment to transaction safe */ > + if (is_tm_safe(type) && !is_tm_safe_or_pure (rhs)) {
I don't think that assigning a tm_pure function to tm_safe works. There will be no instrumented version of it. I don't think we generate an alias or sth like that yet. When contributing patches, please submit testcases along with it. For example, regarding this particular problem, I would believe that there are more cases that we don't check properly yet. Also, did you do the FSF copyright assignment paperwork yet? Torvald