mozilla/rust — pull request #7297 by huonw (2013-06-22 14:09:54+00:00)
Title: driver: perform stripping before and after macro expansion.

This allows macros to both be conditionally defined, and expand
to items with #[cfg]'s.

This seems to have a performance improvement, e.g. for `std`:

```
# Before
time: 1.660 s expansion
time: 0.125 s configuration
# After
time: 0.080 s configuration 1
time: 1.127 s expansion
time: 0.132 s configuration 2
```

And for `extra`:

```
# Before
time: 0.593 s expansion
time: 0.062 s configuration
# After
time: 0.047 s configuration 1
time: 0.147 s expansion
time: 0.058 s configuration 2
```

(This seems a little peculiar, but it is possibly because the expansion AST traversal is very slow, so removing as much as possible as early as possible has big benefits.)