/* { dg-do compile } */
|
/* { dg-do compile } */
|
/* { dg-options "-O3 -fdump-tree-fnsplit" } */
|
/* { dg-options "-O3 -fdump-tree-fnsplit" } */
|
class MemoryManager;
|
class MemoryManager;
|
class XMLExcepts {
|
class XMLExcepts {
|
public :
|
public :
|
enum Codes {
|
enum Codes {
|
AttrList_BadIndex
|
AttrList_BadIndex
|
};
|
};
|
};
|
};
|
class XMLException {
|
class XMLException {
|
public:
|
public:
|
XMLException(const char* const srcFile, const unsigned int srcLine,
|
XMLException(const char* const srcFile, const unsigned int srcLine,
|
MemoryManager* const memoryManager = 0);
|
MemoryManager* const memoryManager = 0);
|
};
|
};
|
class ArrayIndexOutOfBoundsException : public XMLException {
|
class ArrayIndexOutOfBoundsException : public XMLException {
|
public:
|
public:
|
ArrayIndexOutOfBoundsException(const char* const srcFile , const unsigned
|
ArrayIndexOutOfBoundsException(const char* const srcFile , const unsigned
|
int srcLine , const XMLExcepts::Codes toThrow , MemoryManager* memoryManager =
|
int srcLine , const XMLExcepts::Codes toThrow , MemoryManager* memoryManager =
|
0) : XMLException(srcFile, srcLine, memoryManager) {
|
0) : XMLException(srcFile, srcLine, memoryManager) {
|
}
|
}
|
};
|
};
|
class XMLAttDef {
|
class XMLAttDef {
|
bool fExternalAttribute;
|
bool fExternalAttribute;
|
};
|
};
|
class XMLAttDefList {
|
class XMLAttDefList {
|
public:
|
public:
|
MemoryManager* getMemoryManager() const;
|
MemoryManager* getMemoryManager() const;
|
};
|
};
|
class DTDAttDef : public XMLAttDef {
|
class DTDAttDef : public XMLAttDef {
|
};
|
};
|
class DTDAttDefList : public XMLAttDefList {
|
class DTDAttDefList : public XMLAttDefList {
|
virtual const XMLAttDef &getAttDef(unsigned int index) const ;
|
virtual const XMLAttDef &getAttDef(unsigned int index) const ;
|
DTDAttDef** fArray;
|
DTDAttDef** fArray;
|
unsigned int fCount;
|
unsigned int fCount;
|
};
|
};
|
const XMLAttDef &DTDAttDefList::getAttDef(unsigned int index) const {
|
const XMLAttDef &DTDAttDefList::getAttDef(unsigned int index) const {
|
if(index >= fCount)
|
if(index >= fCount)
|
throw ArrayIndexOutOfBoundsException("foo.cpp", 0,
|
throw ArrayIndexOutOfBoundsException("foo.cpp", 0,
|
XMLExcepts::AttrList_BadIndex, getMemoryManager());
|
XMLExcepts::AttrList_BadIndex, getMemoryManager());
|
return *(fArray[index]);
|
return *(fArray[index]);
|
}
|
}
|
|
|
/* Mistake in branch prediction caused us to split away real body of the function keeping
|
/* Mistake in branch prediction caused us to split away real body of the function keeping
|
only throw () invokation. This is bad idea. */
|
only throw () invokation. This is bad idea. */
|
/* { dg-final { scan-tree-dump-not "Splitting function" "fnsplit"} } */
|
/* { dg-final { scan-tree-dump-not "Splitting function" "fnsplit"} } */
|
/* { dg-final { cleanup-tree-dump "fnsplit" } } */
|
/* { dg-final { cleanup-tree-dump "fnsplit" } } */
|
|
|