diff --git a/modules/block/block.module b/modules/block/block.module
index 1ab1c43..adf103c 100644
--- a/modules/block/block.module
+++ b/modules/block/block.module
@@ -340,6 +340,10 @@ function _block_get_renderable_array($list = array()) {
     // draw attention on it.
     if ($key != 'system_main' && $key != 'system_help') {
       $build[$key]['#contextual_links']['block'] = array('admin/structure/block/manage', array($block->module, $block->delta));
+      // Make sure cacheable blocks are cached per role.
+      if (isset($block->cache) && !($block->cache & DRUPAL_CACHE_PER_ROLE)) {
+        $block->cache |= DRUPAL_CACHE_PER_ROLE;
+      }
     }
 
     $build[$key] += array(
