The title is generated here <title><?php wp_title(''); ?></title>
More information on how to use this function wp_title
Since you are not using the dash as a separator in the call to wp_title and since the site title shows up after the dash on other pages, just not your blog, check your theme or plugins to see if anything is filtering the title and adding the dash but not adding (or maybe removing) the blogname on your posts, resulting in <post title> - <nothing>.
Might look for an if/else that checks for is_single()