Index: src/wp-includes/option.php
===================================================================
--- src/wp-includes/option.php	(revision 31272)
+++ src/wp-includes/option.php	(working copy)
@@ -346,7 +346,8 @@
  * @param string         $option      Name of option to add. Expected to not be SQL-escaped.
  * @param mixed          $value       Optional. Option value. Must be serializable if non-scalar. Expected to not be SQL-escaped.
  * @param string         $deprecated  Optional. Description. Not used anymore.
- * @param string|bool    $autoload    Optional. Default is enabled. Whether to load the option when WordPress starts up.
+ * @param string|bool    $autoload    Optional. Whether to load the option when WordPress starts up.
+ *                                    Default is enabled. Accepts "no" or false to disable.
  * @return bool False if option was not added and true if option was added.
  */
 function add_option( $option, $value = '', $deprecated = '', $autoload = 'yes' ) {
@@ -373,7 +374,7 @@
 			return false;
 
 	$serialized_value = maybe_serialize( $value );
-	$autoload = ( 'no' === $autoload ) ? 'no' : 'yes';
+	$autoload = ( 'no' === $autoload || false === $autoload ) ? 'no' : 'yes';
 
 	/**
 	 * Fires before an option is added.
Index: tests/phpunit/tests/option/option.php
===================================================================
--- tests/phpunit/tests/option/option.php	(revision 31272)
+++ tests/phpunit/tests/option/option.php	(working copy)
@@ -99,4 +99,31 @@
 	function test_special_option_name_notoptions() {
 		delete_option( 'notoptions' );
 	}
+
+	/**
+	 * Options should be autoloaded unless they were added with "no" or `false`.
+	 */
+	function test_option_autoloading() {
+		global $wpdb;
+
+		$options = array(
+			'autoload_yes'    => 'yes',
+			'autoload_true'   => true,
+			'autoload_no'     => 'no',
+			'autoload_false'  => false,
+			'autoload_string' => rand_str(),
+			'autoload_int'    => 123456,
+			'autoload_array'  => array(),
+		);
+
+		foreach ( $options as $name => $autoload ) {
+			add_option( $name, rand_str(), '', $autoload );
+			$actual = $wpdb->get_row( $wpdb->prepare( "SELECT autoload FROM $wpdb->options WHERE option_name = %s LIMIT 1", $name ) );
+			if ( 'no' === $autoload || false === $autoload ) {
+				$this->assertEquals( 'no', $actual->autoload, $name );
+			} else {
+				$this->assertEquals( 'yes', $actual->autoload, $name );
+			}
+		}
+	}
 }
