There are the videos of the 2011 LLVM Developer Meeting: http://www.youtube.com/playlist?list=PL970A5BD02C11F80C
Slides too: http://llvm.org/devmtg/2011-11/ As usual the LLVM talks are quite interesting. I have started to see the videos/slides, it will require some time. An interesting talk, "Using clang in the Chromium project": http://www.youtube.com/watch?v=IvL3f8xY7Uw Slides: http://llvm.org/devmtg/2011-11/Weber_Wennborg_UsingClangInChromium.pdf ----------------------------------- It shows some problems found by Clang. a.cc:2:9: warning: using the result of an assignment as a condition without parentheses [-Wparentheses] if (x |= y) ~~^~~~ a.cc:2:9: note: use '!=' to turn this compound assignment into an inequality comparison if (x |= y) ^~ != 1 warning generated. This code doesn't compile with DMD: Error: assignment cannot be used as a condition, perhaps == was meant? void main() { int x, y; if (x = y) {} } But this gives no errors: void main() { int x, y; if (x |= y) {} if (x += y) {} } Do you know why DMD forbids assignments as conditions, but it accepts compound assignments there? It looks like a incongruence that's better to remove. ----------------------------------- 10.25 in the video: a.cc:2:16: warning: operator '?:' has lower precedence than '+'; '+' will be evaluated first return x + b ? y : 0; ~~~~~ ^ a.cc:2:16: note: place parentheses around the '?:' expression to evaluate it first return x + b ? y : 0; ^ ( ) 1 warning generated. They say: > It's a bug every time! Given the frequence of bugs caused by the ?: operator, I think something like this will be good to have in D too. ----------------------------------- a.cc:8:23: warning: argument to sizeof in memset call is the same expression as the destination; did you mean to dereference it? memset(s, 0, sizeof(s)); ~ ^ 1 warning generated. ----------------------------------- At 14.45-16.39 there is an interesting part, about slide 22 of the PDF. It's about crashes/bugs caused by undefined order of evaluation of function arguments. This is a class of bugs that don't have to happen in D2 code. Bye, bearophile