diff --git a/tests/syntax/ghost_parameters_side_effect_arg.i b/tests/syntax/ghost_parameters_side_effect_arg.i
new file mode 100644
index 0000000000000000000000000000000000000000..0df969f056ca6c48fb65316056b9a184cfb7e969
--- /dev/null
+++ b/tests/syntax/ghost_parameters_side_effect_arg.i
@@ -0,0 +1,16 @@
+void function(int x) /*@ ghost(int y) */ ;
+int other(int x) /*@ ghost(int y) */ ;
+
+void caller(){
+  int x = 0 ;
+  //@ ghost int g = 0 ;
+  int t[] = { 0, 0, 0 } ;
+
+  function(x++) /*@ ghost(g++) */ ;
+  function(x = 2) /*@ ghost(g = 42) */ ;
+  function(x += 2) /*@ ghost(g += 42) */ ;  
+  function(-x) /*@ ghost(-g) */ ;
+  function( (x == 0) ? x : 42 ) /*@ ghost( (g == 0) ? g : 42 ) */ ;
+  function(t[x++]) /*@ ghost(t[g++]) */ ;
+  function( other(x) /*@ ghost(g) */ ) /*@ ghost( other(x, g) ) */ ;
+}
diff --git a/tests/syntax/oracle/ghost_parameters_side_effect_arg.res.oracle b/tests/syntax/oracle/ghost_parameters_side_effect_arg.res.oracle
new file mode 100644
index 0000000000000000000000000000000000000000..544448d8da7b6b96a7aafee8648fc29ab75799eb
--- /dev/null
+++ b/tests/syntax/oracle/ghost_parameters_side_effect_arg.res.oracle
@@ -0,0 +1,50 @@
+[kernel] Parsing tests/syntax/ghost_parameters_side_effect_arg.i (no preprocessing)
+/* Generated by Frama-C */
+void function(int x)/*@ ghost (int y) */;
+
+int other(int x)/*@ ghost (int y) */;
+
+void caller(void)
+{
+  /*@ ghost int g_tmp; */
+  int tmp;
+  /*@ ghost int g_tmp_0; */
+  int tmp_0;
+  /*@ ghost int g_tmp_1; */
+  int tmp_1;
+  /*@ ghost int g_tmp_2; */
+  int tmp_2;
+  int x = 0;
+  /*@ ghost int g = 0; */
+  int t[3] = {0, 0, 0};
+  /*@ ghost g_tmp = g; */
+  /*@ ghost g ++; */
+  /*@ ghost ; */
+  tmp = x;
+  x ++;
+  ;
+  function(tmp)/*@ ghost (g_tmp) */;
+  /*@ ghost g = 42; */
+  x = 2;
+  function(x)/*@ ghost (g) */;
+  /*@ ghost g += 42; */
+  x += 2;
+  function(x)/*@ ghost (g) */;
+  function(- x)/*@ ghost (- g) */;
+  /*@ ghost if (g == 0) g_tmp_0 = g; else g_tmp_0 = 42; */
+  if (x == 0) tmp_0 = x; else tmp_0 = 42;
+  function(tmp_0)/*@ ghost (g_tmp_0) */;
+  /*@ ghost g_tmp_1 = g; */
+  /*@ ghost g ++; */
+  /*@ ghost ; */
+  tmp_1 = x;
+  x ++;
+  ;
+  function(t[tmp_1])/*@ ghost (t[g_tmp_1]) */;
+  /*@ ghost g_tmp_2 = other(x,g); */
+  tmp_2 = other(x)/*@ ghost (g) */;
+  function(tmp_2)/*@ ghost (g_tmp_2) */;
+  return;
+}
+
+