diff --git a/libacc/acc.cpp b/libacc/acc.cpp
index f70c7a1..676947e 100644
--- a/libacc/acc.cpp
+++ b/libacc/acc.cpp
@@ -4409,15 +4409,11 @@
     Type* acceptDecl2(Type* pType, tokenid_t& declName,
                       bool nameAllowed, bool nameRequired,
                       bool& reportFailure) {
-        int ptrCounter = 0;
         while (accept('*')) {
-            ptrCounter++;
+            pType = createType(TY_POINTER, pType, NULL);
         }
         pType = acceptDecl3(pType, declName, nameAllowed, nameRequired,
                             reportFailure);
-        while (ptrCounter-- > 0) {
-            pType = createType(TY_POINTER, pType, NULL);
-        }
         return pType;
     }
 
diff --git a/libacc/tests/data/assignmentop.c b/libacc/tests/data/assignmentop.c
index 10b4637..649edf9 100644
--- a/libacc/tests/data/assignmentop.c
+++ b/libacc/tests/data/assignmentop.c
@@ -33,7 +33,6 @@
     printf("16|= 1  %d\n", a);
 }
 
-/* Can't use because int* f() is not parsed as a function decl.
 int a;
 
 int* f() {
@@ -43,24 +42,21 @@
 
 void testEval() {
     a = 0;
-    printf("*f() = *f() + 10;");
+    printf("*f() = *f() + 10;\n");
     *f() = *f() + 10;
     printf("a = %d\n", a);
 }
 
 void testOpEval() {
     a = 0;
-    printf("*f() += 10;");
+    printf("*f() += 10;\n");
     *f() += 10;
     printf("a = %d\n", a);
 }
 
-*/
 int main() {
     testAssignment();
-    /*
     testEval();
     testOpEval();
-    */
     return 0;
 }
diff --git a/libacc/tests/test.py b/libacc/tests/test.py
index 4be1f4b..7bcbdd4 100644
--- a/libacc/tests/test.py
+++ b/libacc/tests/test.py
@@ -356,6 +356,13 @@
 17&= 1  1
 17^= 1  16
 16|= 1  17
+*f() = *f() + 10;
+f()
+f()
+a = 10
+*f() += 10;
+f()
+a = 10
 """)
 
     def testcomma(self):
