------- Comment #4 from janus at gcc dot gnu dot org 2010-08-13 09:50 ------- The problem is the following:
We have two routines called 'my_assign' (in two different modules). When initializing the vtabs in the main program, we happen to use the wrong one: if (vtab$trivial_gradient_type.assign == 0B) { vtab$trivial_gradient_type.assign = my_assign; } Possible solutions: 1) Make sure we use the right symbol from the right module. 2) Do the vtab initialization inside the module that defines the class, i.e. add a module procedure like 'vtab$trivial_gradient_type$init' which does it, and call this from the main program. Then there is no name ambiguity. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45271