This is the mail archive of the gcc-help@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Optimize causes an error.


Thanks I had some debugging printf in the code but I deleted them from
my post to make it a little less messy but yours where better.
This is kind of odd in that it looks like tinx is changing at random
during execution.

4 := (0 - 0) + 40 := 4 < 0
0 := testtran: ../PPDict1.cpp:65: virtual void PPDict1::getData(int,
int, unsigned char*): Assertion `tinx >= 0' failed.

As you can see tinx is set to the value of four in the first statement
then it throws and Assertion on the next statement! There is no
assignments happening between the two statements.

On 7/11/07, John Love-Jensen <eljay@adobe.com> wrote:
Here's what I'd do... first grade debugging. Add in these diagnostic lines:

void PPDict1::getData(int position, int size, unsigned char *buffer) {
  int fsize = getDataLength();
  if ((position + size) > fsize) {
    memset(buffer, 0, size);
    return;
  }
  int tinx=(position-getIndexOffset())+size;

// Which of these things has the unexpected value?
  assert(tinx >= 0);
  assert(getIndexSize() >= 0);
  assert(getIndexOffset() >= 0);
  bool const haveMoreTinx = tinx < getIndexSize();
  bool const isPtrNonZero = indexPTR_ != 0;
  std::cerr << tinx << " := (" << position << " - "
    << getIndexOffset() << ") + " << size;
  std::cerr << haveMoreTinx << " := " << tinx << " < " << getIndexSize()
    << '\n';
  std::cerr << isPtrNonZero << " := " << indexPtr_ << " != 0\n";
  std::cerr << haveMoreTinx << " && " << isPtrNonZero << '\n';

  if((tinx<getIndexSize())&&(indexPTR_!=0)){
    inxcount_++;
    void * tPtr=indexPTR_+position-getIndexOffset();
    memcpy(buffer, tPtr, size);
  }else{
    dictStream_.seekg(position);
    dictStream_.read((char *)buffer, size);
    profcount_++;
  }
}

HTH,
--Eljay




Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]