[Bug c++/11767] different code behaviour with -fnon-call-exceptions -fprofile-arcs

pinskia at physics dot uc dot edu gcc-bugzilla@gcc.gnu.org
Mon Aug 4 23:37:00 GMT 2003


PLEASE REPLY TO gcc-bugzilla@gcc.gnu.org ONLY, *NOT* gcc-bugs@gcc.gnu.org.

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=11767


pinskia at physics dot uc dot edu changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Severity|critical                    |normal
             Status|UNCONFIRMED                 |NEW
     Ever Confirmed|                            |1
           Keywords|                            |wrong-code
   Last reconfirmed|0000-00-00 00:00:00         |2003-08-04 23:37:03
               date|                            |
            Summary|different code behaviour    |different code behaviour
                   |with -fprofile-arcs -ftest- |with -fnon-call-exceptions -
                   |coverage                    |fprofile-arcs


------- Additional Comments From pinskia at physics dot uc dot edu  2003-08-04 23:37 -------
Okay the problem is not per say with -fprofile-arcs -ftest-coverage but with  -fnon-call-
exceptions and -fprofile-arcs.
I can confirm this on the mainline (20030804) Here is the reduced source but I could not 
remove the dependent on string:
#include <string>
typedef unsigned long ACE_UINT32;
extern "C" void abort();

static ACE_UINT32 const msc_maxCurrencyID = 9999;

class ResourceBalanceType2
{
  public:
   explicit ResourceBalanceType2(
      ACE_UINT32 resourceBalanceTypeID,
      ACE_UINT32 isoValue,
      const std::string& rc_shortName,
      const std::string& rc_symbol
    );
  public:
    const ACE_UINT32 mc_resBalTypeID;
    const ACE_UINT32 mc_isoValue;
    const std::string mc_shortName;
    const std::string mc_symbol;
};
void f(){}
ResourceBalanceType2::ResourceBalanceType2(
  ACE_UINT32 resourceBalanceTypeID,
  ACE_UINT32 isoValue,
  const std::string& rc_shortName,
  const std::string& rc_symbol
):  mc_resBalTypeID(resourceBalanceTypeID),
  mc_isoValue(isoValue),
  mc_shortName(rc_shortName),
  mc_symbol(rc_symbol)
{
  bool isGreater = (mc_isoValue > msc_maxCurrencyID);
  f();
  bool temp = mc_isoValue > msc_maxCurrencyID;
  if(!isGreater) abort();
  if(!temp) abort();
}
int main ( int argc, char * argv[] )
{
    ACE_UINT32 const mc_isoValue = 10000;
    ResourceBalanceType2 rbResourceBalanceType2(3, mc_isoValue, "ATM", "M");
}



More information about the Gcc-bugs mailing list