OSDN Git Service

2003-07-14 Franz Sirl <Franz.Sirl-kernel@lauterbach.com>
authorsirl <sirl@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 14 Jul 2003 16:03:29 +0000 (16:03 +0000)
committersirl <sirl@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 14 Jul 2003 16:03:29 +0000 (16:03 +0000)
PR optimization/11440
* gcc.c-torture/execute/20030714-1.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@69334 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/testsuite/ChangeLog
gcc/testsuite/gcc.c-torture/execute/20030714-1.c [new file with mode: 0644]

index 92c235c..c279efe 100644 (file)
@@ -1,3 +1,8 @@
+2003-07-14  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>
+
+       PR optimization/11440
+       * gcc.c-torture/execute/20030714-1.c: New test.
+
 2003-07-14  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
 
        PR c++/11154
diff --git a/gcc/testsuite/gcc.c-torture/execute/20030714-1.c b/gcc/testsuite/gcc.c-torture/execute/20030714-1.c
new file mode 100644 (file)
index 0000000..719baed
--- /dev/null
@@ -0,0 +1,193 @@
+/* derived from PR optimization/11440  */
+
+extern void abort (void);
+extern void exit (int);
+
+typedef _Bool bool;
+const bool false = 0;
+const bool true = 1;
+
+enum EPosition 
+{
+  STATIC, RELATIVE, ABSOLUTE, FIXED
+};
+typedef enum EPosition EPosition;
+
+enum EFloat 
+{
+  FNONE = 0, FLEFT, FRIGHT
+};
+typedef enum EFloat EFloat;
+
+struct RenderBox
+{
+  int unused[6];
+  short m_verticalPosition;
+  
+  bool m_layouted : 1;
+  bool m_unused : 1;
+  bool m_minMaxKnown : 1;
+  bool m_floating : 1;
+  
+  bool m_positioned : 1;
+  bool m_overhangingContents : 1;
+  bool m_relPositioned : 1;
+  bool m_paintSpecial : 1;
+  
+  bool m_isAnonymous : 1;
+  bool m_recalcMinMax : 1;
+  bool m_isText : 1;
+  bool m_inline : 1;
+  
+  bool m_replaced : 1;
+  bool m_mouseInside : 1;
+  bool m_hasFirstLine : 1;
+  bool m_isSelectionBorder : 1;
+  
+  bool (*isTableCell) (struct RenderBox *this);
+};
+
+typedef struct RenderBox RenderBox;
+
+struct RenderStyle
+{
+  struct NonInheritedFlags 
+    {
+      union 
+       {
+         struct 
+           {
+             unsigned int _display : 4;
+             unsigned int _bg_repeat : 2;
+             bool _bg_attachment : 1;
+             unsigned int _overflow : 4 ;
+             unsigned int _vertical_align : 4;
+             unsigned int _clear : 2;
+             EPosition _position : 2;
+             EFloat _floating : 2;
+             unsigned int _table_layout : 1;
+             bool _flowAroundFloats :1;
+
+             unsigned int _styleType : 3;
+             bool _hasHover : 1;
+             bool _hasActive : 1;
+             bool _clipSpecified : 1;
+             unsigned int _unicodeBidi : 2;
+             int _unused : 1;
+           } f;
+         int _niflags;
+       };
+    } noninherited_flags;
+};
+
+typedef struct RenderStyle RenderStyle;
+
+extern void RenderObject_setStyle(RenderBox *this, RenderStyle *_style);
+extern void removeFromSpecialObjects(RenderBox *this);
+
+
+
+void RenderBox_setStyle(RenderBox *thisin, RenderStyle *_style)
+{
+  RenderBox *this = thisin;
+  bool oldpos, tmp;
+  EPosition tmppo;
+  
+  tmp = this->m_positioned;
+
+  oldpos = tmp;
+
+  RenderObject_setStyle(this, _style);
+  
+  tmppo = _style->noninherited_flags.f._position;
+
+  switch(tmppo)
+    {
+    case ABSOLUTE:
+    case FIXED:
+       {
+         bool ltrue = true;
+         this->m_positioned = ltrue;
+         break;
+       }
+
+    default:
+       {
+         EFloat tmpf;
+         EPosition tmpp;
+         if (oldpos)
+           {
+             bool ltrue = true;
+             this->m_positioned = ltrue;
+             removeFromSpecialObjects(this);
+           }
+           {
+             bool lfalse = false;
+             this->m_positioned = lfalse;
+           }
+
+         tmpf = _style->noninherited_flags.f._floating;
+
+         if(!this->isTableCell (this) && !(tmpf == FNONE)) 
+           {
+             bool ltrue = true;
+             this->m_floating = ltrue;
+           }
+         else 
+           {
+             tmpp = _style->noninherited_flags.f._position;
+             if (tmpp == RELATIVE)
+               {
+                 bool ltrue = true;
+                 this->m_relPositioned = ltrue;
+               }
+           }
+       }
+    }
+}
+
+
+
+
+RenderBox g_this;
+RenderStyle g__style;
+
+void RenderObject_setStyle(RenderBox *this, RenderStyle *_style)
+{
+  (void) this;
+  (void) _style;
+}
+
+void removeFromSpecialObjects(RenderBox *this)
+{
+  (void) this;
+}
+
+bool RenderBox_isTableCell (RenderBox *this)
+{
+  (void) this;
+  return false;
+}
+
+int main (void)
+{
+
+  g_this.m_relPositioned = false;
+  g_this.m_positioned = false;
+  g_this.m_floating = false;
+  g_this.isTableCell = RenderBox_isTableCell;
+
+  g__style.noninherited_flags.f._position = FIXED;
+  g__style.noninherited_flags.f._floating = FNONE;
+
+  RenderBox_setStyle (&g_this, &g__style);
+  
+  if (g_this.m_positioned != true)
+    abort ();
+  if (g_this.m_relPositioned != false)
+    abort ();
+  if (g_this.m_floating != false)
+    abort ();
+
+  exit (0);
+}