Skip to content

Commit 5b0de55

Browse files
committed
remove some overly-crazy ideas.
llvm-svn: 63614
1 parent 5a0acdc commit 5b0de55

File tree

1 file changed

+0
-49
lines changed

1 file changed

+0
-49
lines changed

clang/NOTES.txt

Lines changed: 0 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -48,55 +48,6 @@ TODO: File Manager Speedup:
4848
3. Reading the dir uses the getdirentries syscall, creating an FileEntry
4949
for all files found.
5050

51-
//===---------------------------------------------------------------------===//
52-
53-
TODO: Fast #Import:
54-
55-
* Get frameworks that don't use #import to do so, e.g.
56-
DirectoryService, AudioToolbox, CoreFoundation, etc. Why not using #import?
57-
Because they work in C mode? C has #import.
58-
* Have the lexer return a token for #import instead of handling it itself.
59-
- Create a new preprocessor object with no external state (no -D/U options
60-
from the command line, etc). Alternatively, keep track of exactly which
61-
external state is used by a #import: declare it somehow.
62-
* When having reading a #import file, keep track of whether we have (and/or
63-
which) seen any "configuration" macros. Various cases:
64-
- Uses of target args (__POWERPC__, __i386): Header has to be parsed
65-
multiple times, per-target. What about #ifndef checks? How do we know?
66-
- "Configuration" preprocessor macros not defined: POWERPC, etc. What about
67-
things like __STDC__ etc? What is and what isn't allowed.
68-
* Special handling for "umbrella" headers, which just contain #import stmts:
69-
- Cocoa.h/AppKit.h - Contain pointers to digests instead of entire digests
70-
themselves? Foundation.h isn't pure umbrella!
71-
* Frameworks digests:
72-
- Can put "digest" of a framework-worth of headers into the framework
73-
itself. To open AppKit, just mmap
74-
/System/Library/Frameworks/AppKit.framework/"digest", which provides a
75-
symbol table in a well defined format. Lazily unstream stuff that is
76-
needed. Contains declarations, macros, and debug information.
77-
- System frameworks ship with digests. How do we handle configuration
78-
information? How do we handle stuff like:
79-
#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_2
80-
which guards a bunch of decls? Should there be a couple of default
81-
configs, then have the UI fall back to building/caching its own?
82-
- GUI automatically builds digests when UI is idle, both of system
83-
frameworks if they aren't not available in the right config, and of app
84-
frameworks.
85-
- GUI builds dependence graph of frameworks/digests based on #imports. If a
86-
digest is out date, dependent digests are automatically invalidated.
87-
88-
* New constraints on #import for objc-v3:
89-
- #imported file must not define non-inline function bodies.
90-
- Alternatively, they can, and these bodies get compiled/linked *once*
91-
per app into a dylib. What about building user dylibs?
92-
- Restrictions on ObjC grammar: can't #import the body of a for stmt or fn.
93-
- Compiler must detect and reject these cases.
94-
- #defines defined within a #import have two behaviors:
95-
- By default, they escape the header. These macros *cannot* be #undef'd
96-
by other code: this is enforced by the front-end.
97-
- Optionally, user can specify what macros escape (whitelist) or can use
98-
#undef.
99-
10051
//===---------------------------------------------------------------------===//
10152
// Specifying targets: -triple and -arch
10253
===---------------------------------------------------------------------===//

0 commit comments

Comments
 (0)