summaryrefslogtreecommitdiff
path: root/support/regression/tests/bug-2582.c
diff options
context:
space:
mode:
authorXavier ASUS <xavi92psx@gmail.com>2019-10-18 00:31:54 +0200
committerXavier ASUS <xavi92psx@gmail.com>2019-10-18 00:31:54 +0200
commit268a53de823a6750d6256ee1fb1e7707b4b45740 (patch)
tree42c1799a9a82b2f7d9790ee9fe181d72a7274751 /support/regression/tests/bug-2582.c
downloadsdcc-gas-268a53de823a6750d6256ee1fb1e7707b4b45740.tar.gz
sdcc-3.9.0 fork implementing GNU assembler syntax
This fork aims to provide better support for stm8-binutils
Diffstat (limited to 'support/regression/tests/bug-2582.c')
-rw-r--r--support/regression/tests/bug-2582.c74
1 files changed, 74 insertions, 0 deletions
diff --git a/support/regression/tests/bug-2582.c b/support/regression/tests/bug-2582.c
new file mode 100644
index 0000000..85dea39
--- /dev/null
+++ b/support/regression/tests/bug-2582.c
@@ -0,0 +1,74 @@
+/*
+ bug-2195.c
+
+ A z80 parameter passing bug.
+*/
+
+#include <testfwk.h>
+
+typedef unsigned char u8;
+
+typedef struct WindowPositionStruct
+{
+ u8 mX;
+ u8 mY;
+} WindowPosition;
+
+typedef struct WindowSizeStruct
+{
+ u8 mW;
+ u8 mH;
+} WindowSize;
+
+typedef struct WindowPositionAndSizeStruct
+{
+ WindowPosition mPosition;
+ WindowSize mSize;
+} WindowPositionAndSize;
+
+typedef struct WindowRenderStyleStruct
+{
+ u8 mStateColor[4];
+} WindowRenderStyle;
+
+typedef struct WindowStruct
+{
+ WindowPositionAndSize mPositionAndSize;
+
+ WindowRenderStyle* mpStyle;
+} Window;
+
+void BG_FillRect( u8 x, u8 y, u8 w, u8 h, u8 f)
+{
+ ASSERT(x == 1);
+ ASSERT(y == 2);
+ ASSERT(w == 3);
+ ASSERT(h == 4);
+ ASSERT(f == 0);
+}
+
+static Window gWindow;
+static WindowRenderStyle gWindowRenderStyle;
+
+void testBug(void)
+{
+ u8 state = 0;
+ gWindow.mpStyle = &gWindowRenderStyle;
+ gWindow.mPositionAndSize.mPosition.mX = 1;
+ gWindow.mPositionAndSize.mPosition.mY = 2;
+ gWindow.mPositionAndSize.mSize.mW = 3;
+ gWindow.mPositionAndSize.mSize.mH = 4;
+
+ {
+ Window* pWindow = &gWindow;
+
+ BG_FillRect(
+ pWindow->mPositionAndSize.mPosition.mX,
+ pWindow->mPositionAndSize.mPosition.mY,
+ pWindow->mPositionAndSize.mSize.mW,
+ pWindow->mPositionAndSize.mSize.mH,
+ pWindow->mpStyle->mStateColor[state]
+ );
+ }
+}
+