u/pyler2

15.4k post karma · 2,738 comment karma · joined Aug 2014

pyler2

matrix_vector_product.cpp:408:30: warning: iteration 7158278 invokes undefined behavior [-Waggressive-loop-optimizations]

408 | yy[i] += zz[i*cols+j] * temp;

pyler2

Win tm

pyler2
pyler2

Waiting for IDE support for this. Amazing!

pyler2

P1144?

pyler2

Try clang trunk :) it fully unrolled your C++ code :D

pyler2

This is quite interesting. So we can generate gimple (like gcc IR?) and load it to gcc, to optimize it and generate binary? like LLVM IR we can optimize using opt, compile to asm with llc, etc..

​

Any examples/tutorials?

pyler2

And try Clang even with -stdlib=libc++. Quite amazing numbers.

pyler2

This will probably miss GCC 9.. no activity on the gcc / libstdc++ mailing list..

pyler2

maybe you can also do same comparision for Chromium?

pyler2

but the question is who should write a Rust GCC frontend? :D Mozilla? Too much effort..

pyler2

Have Mozilla investigated a Facebook's BOLT tool to optimalize PGO binary builds even more?

pyler2

post this request to his github repo

pyler2

wow, libc++'s regex is very bad.

pyler2

Clang vectorized his code, GCC did not.

pyler2

Experimental internet =D

#include <experimental/internet>

pyler2

Any libc++ folks here? Is there any ongoing work on Network TS for libc++?

pyler2

If a passed in variable in a function call is unmodified, a warning to use a

const &

would be nice.

​

-> Also, almost done in LLVM. :)

pyler2

Using magic numbers.

Development is in progress, it was almost done when I saw it on LLVM Phabricator.

pyler2

Step Back is really cool feature... what about bring it to LLDB? /u/Teemperor

pyler2

5x? wow.. this guy is a magician

pyler2

Mailing list vs. Phabricator

pyler2

LLVM has stricker rules to get patches in, I think.. Many devs will give you valuable feedback and with every feature/bugfix you need to provide set of new tests..

Sometimes you send a new feature (maybe just 20 lines of code) and a test file for it has 600 lines :D

pyler2

struct A {
struct A *next;
int field;
};
int f(struct A *item) {
while (!item) {
// Not NULL check since invalid addr OK
__builtin_prefetch(item->next, 1, 1) ;
item->field++;
// more processing...
item++;
}
return 0;
}

GCC:

01 - prefetcht2

02 and higher - ud2 trap.

pyler2

(gdb) py == (lldb) script