Static analysis via abstract interpretation of the happens-before memory model