Index: src/wp-includes/class-wp-query.php
===================================================================
--- src/wp-includes/class-wp-query.php	(revision 39533)
+++ src/wp-includes/class-wp-query.php	(working copy)
@@ -346,6 +346,15 @@
 	public $is_comment_feed = false;
 
 	/**
+	 * Set if query is home feed display.
+	 *
+	 * @since 2.2.0
+	 * @access public
+	 * @var bool
+	 */
+	public $is_home_feed = false;
+
+	/**
 	 * Set if query is trackback.
 	 *
 	 * @since 1.5.0
@@ -511,6 +520,7 @@
 		$this->is_search = false;
 		$this->is_feed = false;
 		$this->is_comment_feed = false;
+		$this->is_home_feed = false;
 		$this->is_trackback = false;
 		$this->is_home = false;
 		$this->is_404 = false;
@@ -955,9 +965,15 @@
 		if ( $this->is_feed && ( !empty($qv['withcomments']) || ( empty($qv['withoutcomments']) && $this->is_singular ) ) )
 			$this->is_comment_feed = true;
 
-		if ( !( $this->is_singular || $this->is_archive || $this->is_search || $this->is_feed || ( defined( 'REST_REQUEST' ) && REST_REQUEST ) || $this->is_trackback || $this->is_404 || $this->is_admin || $this->is_robots ) )
-			$this->is_home = true;
+		if ( !( $this->is_singular || $this->is_archive || $this->is_search || ( defined( 'REST_REQUEST' ) && REST_REQUEST ) || $this->is_trackback || $this->is_404 || $this->is_admin || $this->is_robots ) ) {
+			if ( $this->is_feed ) {
+				$this->is_home_feed = true;
+			} else {
+				$this->is_home = true;
+			}
 
+		}
+
 		// Correct is_* for page_on_front and page_for_posts
 		if ( $this->is_home && 'page' == get_option('show_on_front') && get_option('page_on_front') ) {
 			$_query = wp_parse_args($this->query);
@@ -3666,6 +3682,17 @@
 	}
 
 	/**
+	 * Is the query for a hompage feed?
+	 *
+	 * @since 3.1.0
+	 *
+	 * @return bool
+	 */
+	public function is_home_feed() {
+		return (bool) $this->is_home_feed;
+	}
+
+	/**
 	 * Is the query for the front page of the site?
 	 *
 	 * This is for what is displayed at your site's main URL.
Index: src/wp-includes/functions.php
===================================================================
--- src/wp-includes/functions.php	(revision 39533)
+++ src/wp-includes/functions.php	(working copy)
@@ -1221,7 +1221,8 @@
 	 * search result, or main comments. By checking for the absense of posts we can prevent rendering the feed
 	 * templates at invalid endpoints. e.g.) /wp-content/plugins/feed/
 	 */
-	if ( ! $wp_query->have_posts() && ! ( $wp_query->is_archive() || $wp_query->is_search() || $is_main_comments_feed ) ) {
+	if ( ! $wp_query->have_posts() && ! ( $wp_query->is_archive() || $wp_query->is_search() || $is_main_comments_feed || $wp_query->is_home_feed() ) ) {
+		var_dump( $wp_query->is_home_feed() );
 		wp_die( __( 'ERROR: This is not a valid feed.' ), '', array( 'response' => 404 ) );
 	}
 
Index: src/wp-includes/query.php
===================================================================
--- src/wp-includes/query.php	(revision 39533)
+++ src/wp-includes/query.php	(working copy)
@@ -383,6 +383,26 @@
 }
 
 /**
+ * Is the query for the blog homepage feed?
+ *
+ * @since 4.7.1
+ *
+ * @global WP_Query $wp_query Global WP_Query instance.
+ *
+ * @return bool
+ */
+function is_home_feed() {
+	global $wp_query;
+
+	if ( ! isset( $wp_query ) ) {
+		_doing_it_wrong( __FUNCTION__, __( 'Conditional query tags do not work before the query is run. Before then, they always return false.' ), '3.1.0' );
+		return false;
+	}
+
+	return $wp_query->is_home_feed();
+}
+
+/**
  * Is the query for the front page of the site?
  *
  * This is for what is displayed at your site's main URL.
