diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexBugsTests.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexBugsTests.java
index a8f154c3648..72626c5ef86 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexBugsTests.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexBugsTests.java
@@ -26,6 +26,7 @@ import org.eclipse.cdt.core.index.IIndex;
 import org.eclipse.cdt.core.index.IIndexBinding;
 import org.eclipse.cdt.core.index.IIndexFile;
 import org.eclipse.cdt.core.index.IIndexInclude;
+import org.eclipse.cdt.core.index.IIndexMacro;
 import org.eclipse.cdt.core.index.IIndexName;
 import org.eclipse.cdt.core.index.IndexFilter;
 import org.eclipse.cdt.core.model.ICProject;
@@ -246,4 +247,34 @@ public class IndexBugsTests extends BaseTestCase {
 		}
 	}
 
+	// {test164500}
+	// #define macro164500 1
+	// #undef macro164500
+	// #define macro164500 2
+	public void _test164500() throws Exception {
+		waitForIndexer();
+		String content= readTaggedComment("test164500");
+
+		IFile file= TestSourceReader.createFile(fCProject.getProject(), "test164500.cpp", content);
+		TestSourceReader.waitUntilFileIsIndexed(fIndex, file, 4000);
+
+		fIndex.acquireReadLock();
+		try {
+			IIndexFile ifile= fIndex.getFile(file.getLocation());
+			assertNotNull(ifile);
+			IIndexMacro[] macros= ifile.getMacros();
+			assertEquals(2, macros.length);
+			IIndexMacro m= macros[0];
+			assertEquals("1", new String(m.getExpansion()));
+			assertEquals("macro164500", new String(m.getName()));
+
+			m= macros[1];
+			assertEquals("2", new String(m.getExpansion()));
+			assertEquals("macro164500", new String(m.getName()));
+		}
+		finally {
+			fIndex.releaseReadLock();
+		}
+	}
+
 }