Graphs are a widely used data model in modern data-intensive applications. Graph pattern matching is a fundamental operation for the exploration and analysis of large data graphs. In this paper, we present a novel approach for efficiently finding homomorphic matches of graph pattern queries, where pattern edges denote reachability relationships between nodes in the data graph. We first propose the concept of query reachability graph to compactly encode all the possible homomorphisms from a query pattern to the data graph. Then, we design a graph traversal-based filtering method to prune nodes from the data graph which violate reachability conditions induced by the pattern edges. We use the pruned data graph to generate a refined query reachability graph which serves as a compact search space for the pattern query answer. Finally, we design a multiway join algorithm to enumerate answer tuples from the query reachability graph without generating an excessive number of redundant intermediate results (a drawback of previous approaches). We experimentally verify the efficiency of our approach and demonstrate that it outperforms by far existing approaches and a recent graph DBMS on evaluating reachability graph pattern queries.