------- Comment #6 from manu at gcc dot gnu dot org 2008-08-27 11:03 ------- (In reply to comment #5) > (In reply to comment #4) > > error: 'operator new' takes type 'size_t' ('long unsigned int') as first > > parameter > > I don't understand why you get this error >
Because I am using a 64bit target and you are using a 32bit to generate the .ii file. I can reproduce the testcase fine now. This is a two-fold bug: * Printing guard$13936$owner is no-no. We rather not print anything and miss a warning than print something like that. Not sure how to detect that this is not a user-variable. It is not marked as compiler-generated. * I don't know if the throw is explicit or compiler-generated (the dumps are a bit useless). # BLOCK 4, starting at line 0 # PRED: 2 (ab,eh,exec) <L2>: save_filt.157D.15292_7 = [filter_expr] <<<filter object>>>; save_eptr.156D.15293_8 = [exc_ptr_expr] <<<exception object>>>; [/opt/ACE_wrappers/ace/Guard_T.inl : 24] D.15294_9 = guard$D15120$owner_D.15311_16(D); [/opt/ACE_wrappers/ace/Guard_T.inl : 24] if (D.15294_9 == -1) goto <bb 6>; else goto <bb 5>; # SUCC: 6 [48.8%] (true,exec) 5 [51.2%] (false,exec) If it is compiler-generated, we should never warn. The enclosing function is defined as: long unsigned int CircularBuffer<MUTEX>::write() [with MUTEX = ACE_Thread_Mutex] (struct CircularBufferD.14893 * const thisD.14900) Eh tree: 1 cleanup 3 must_not_throw tree_label:<L3> 2 cleanup tree_label:<L2> The must_not_throw is not an indication that this function doesn't throw? Perhaps we should just never warn about anything within EH BB, since they are not properly marked as compiler-generated by the front-end and the middle-end has problems dealing with them. That would fix a few bugs. -- manu at gcc dot gnu dot org changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Ever Confirmed|0 |1 Last reconfirmed|0000-00-00 00:00:00 |2008-08-27 11:03:18 date| | http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36833