The potential of additive manufacturing (AM) in fabricating structurally efficient yet geometrically complicated designs generated from topology optimization is widely recognised. However, various constraints presented in the additive manufacturing process are not directly considered in conventional topology optimization frameworks, potentially impairing the manufacturability of the generated topology. A most noteworthy example is the presence of overhangs, which are downward-facing regions that are not self-supporting. In such areas, traditional AM processes utilise sacrificial supports to act as scaffoldings, which result in additional time, effort and the corresponding cost. Here we present a novel method that can effectively address overhanging features in the bi-directional evolutionary structural optimization framework, creating self-supporting yet structurally efficient designs. By using a simple expression, the overhang problem is formulated as a layer-wise relationship, and elements whose modification does not create overhang are selected as candidates for the element updating scheme. To validate the effectiveness of the algorithm, numerical examples under different design conditions are presented. A comparison of the self-supporting designs against their non-self-supporting counterparts obtained by conventional topology optimization demonstrates their competitiveness in structural performance. Subsequently, physical 3D prints of the examples further prove the effectiveness of the proposed method in creating self-supporting designs.