const char *name = list.entry[i].name;
                int pos;
                const struct cache_entry *ce;
-               struct stat st;
 
                pos = cache_name_pos(name, strlen(name));
                if (pos < 0) {
                ce = active_cache[pos];
 
                if (!S_ISGITLINK(ce->ce_mode) ||
-                   (lstat(ce->name, &st) < 0) ||
+                   !file_exists(ce->name) ||
                    is_empty_dir(name))
                        continue;
 
                 * "intent to add" entry.
                 */
                if (local_changes && staged_changes) {
-                       if (!index_only || !(ce->ce_flags & CE_INTENT_TO_ADD))
+                       if (!index_only || !ce_intent_to_add(ce))
                                string_list_append(&files_staged, name);
                }
                else if (!index_only) {