This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug target/38811] [4.4 Regression] internal compiler error: in compensate_edge, at reg-stack.c:2754
- From: "rguenth at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 12 Jan 2009 09:57:37 -0000
- Subject: [Bug target/38811] [4.4 Regression] internal compiler error: in compensate_edge, at reg-stack.c:2754
- References: <bug-38811-17177@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Comment #3 from rguenth at gcc dot gnu dot org 2009-01-12 09:57 -------
Confirmed. The following fails with -O2 -m32:
typedef unsigned long ULONG;
void iwos_ErrorMessage(long error, const char * const file_name,
ULONG line_num, const char * const message);
class AbcA2d {
public:
double x;
double y;
~AbcA2d() { }
};
enum AbcZyParamType { ABC_SP_1 };
class AbcExtent2d {
AbcA2d m_vMin;
AbcA2d m_vMax;
public:
AbcExtent2d(const AbcA2d & rMin, const AbcA2d & rMax);
AbcA2d ClampPoint2d(const AbcA2d & rPoint) const;
AbcA2d GetMax() const { return m_vMax; }
AbcA2d GetMin() const { }
AbcA2d Evaluate(double dNormalizedX, double dNormalizedY) const;
};
inline AbcExtent2d::AbcExtent2d(const AbcA2d & rMin, const AbcA2d & rMax)
{
if (rMin.x > rMax.x || rMin.y > rMax.y)
{
long sErr = (1007);
if (sErr != 1000)
iwos_ErrorMessage(sErr,(const char * const)__null,
0,(const char * const)__null);
}
else
{
m_vMin = rMin;
m_vMax = rMax;
}
}
inline AbcA2d AbcExtent2d::ClampPoint2d(const AbcA2d & rPoint) const
{
AbcA2d sRet = rPoint;
if (rPoint.x < m_vMin.x)
sRet.x = m_vMin.x;
return sRet;
}
inline AbcA2d AbcExtent2d::Evaluate(double dNormalizedX, double dNormalizedY)
const
{
AbcA2d sRet;
sRet.x = m_vMin.x + dNormalizedX * (m_vMax.x - m_vMin.x);
sRet.y = m_vMin.y + dNormalizedY * (m_vMax.y - m_vMin.y);
return ClampPoint2d(sRet);
}
class AbcAbcdTracer {
AbcExtent2d m_vUVDomain;
virtual long TestIsoAbcde(AbcZyParamType eZyParam, double dParam,
int & rbZyxIsSolution);
virtual int DoesPointLieOnAbcde(AbcA2d & rUV, int bRefinePoint) const;
};
long AbcAbcdTracer::TestIsoAbcde(AbcZyParamType eZyParam, double dParam,
int & rbZyxIsSolution)
{
AbcA2d sUV1(m_vUVDomain.GetMin());
AbcA2d sUV2(m_vUVDomain.GetMax());
AbcExtent2d sUVIso(sUV1,sUV2);
for (ULONG i=0; i<10; i++)
{
double dT = i / (10 -1.0);
AbcA2d sUV = sUVIso.Evaluate(dT,dT);
if (!DoesPointLieOnAbcde(sUV,0))
;
}
}
--
rguenth at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |NEW
Component|c++ |target
Ever Confirmed|0 |1
GCC host triplet|x86_64-unknown-linux-gnu |
GCC target triplet|x86_64-unknown-linux-gnu |i?86-*-*
Keywords| |ice-on-valid-code
Known to fail| |4.4.0
Known to work| |4.3.2
Last reconfirmed|0000-00-00 00:00:00 |2009-01-12 09:57:37
date| |
Summary|internal compiler error: in |[4.4 Regression] internal
|compensate_edge, at reg- |compiler error: in
|stack.c:2754 |compensate_edge, at reg-
| |stack.c:2754
Target Milestone|--- |4.4.0
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38811