[llvm-dev] Clang Preprocessor Speed Up

41 views
Skip to first unread message

Andy via llvm-dev

unread,
Mar 24, 2016, 6:17:58 PM3/24/16
to llvm...@lists.llvm.org
Hello, folks!

Currently me with one other guy are trying to play with clang. The proposal may seem stupid, excuse me, if it was already discussed, we just want to try to implement something useful which seems absent for now.

Ok, the idea. It seems interesting to try to make lexer a little bit more efficient in terms of macro expanding by applying partial expansion of macros. the idea is that some libraries have rather deeply nested macro definitions, and each time lexer sees it in code, it reexpands definition fully. This seems to be overkill sometimes, for rather often macros are not redefined in code, so expansion can be reused.

Of course, the typical nesting is rather low, but for example BOOST_PP_REPEAT can cause such situations.

So, the question is, what do you think about possible utility of such research and the reasons for you think so?

mats petersson via llvm-dev

unread,
Mar 24, 2016, 6:59:11 PM3/24/16
to Andy, llvm-dev, Clang Dev
First, surely the right place for this discussion is the cfe-dev mailing list?

Second, have you determined that this is a noticeable amount of time when compiling? I have no idea - in my Pascal compiler, parsing the code is ~0.1%, codegen to IR ~1.9% and LLVM 98%. But I'm sure Clang is more complex in many ways, so the proportion is probably a bit different - a measurement of the time spent expanding macros would probably help determine if it's worth doing or not.

--
Mats

_______________________________________________
LLVM Developers mailing list
llvm...@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev


Андрей Серебро

unread,
Mar 24, 2016, 7:29:11 PM3/24/16
to mats petersson, llvm-dev, Clang Dev
Hi Mats,
 
Thanks for the reply. Yep, you are right, the time should be measured and I guess I can imagine the typical workflow
  • implement prototype
  • take bunch of big real projects
  • compare preprocessing time for initial and changed clang
  • make conclusion whether the idea is sane or not
About usage - probably, some IDEs can act better for they need iteratively relex source for correct autocomplete.
 
What I'm also curious about is if somebody already did something on this or had thought about it.
If the idea was already thought (which I guess is rather possible), it's interesting, did somebody already prove it's useless? 
 
25.03.2016, 01:59, "mats petersson" <ma...@planetcatfish.com>:
-- 
Regards,
Andrei Serebro
 
Reply all
Reply to author
Forward
0 new messages