Timm =?utf-8?q?Bäder?= <tbae...@redhat.com>,
Timm =?utf-8?q?Bäder?= <tbae...@redhat.com>,
Timm =?utf-8?q?Bäder?= <tbae...@redhat.com>,
Timm =?utf-8?q?Bäder?= <tbae...@redhat.com>,
Timm =?utf-8?q?Bäder?= <tbae...@redhat.com>
Message-ID:
In-Reply-To: <llvm/llvm-project/pull/66514/cl...@github.com>


tbaederr wrote:

> > > I have concerns about Lexing twice every single file for which we display 
> > > a warning.
> > 
> > 
> > Sure. Because of performance, memory usage or code complexity?
> 
> Performance, mostly

In a debug build with sanitizers enabled, I get this when compiling 
`SemaExpr.cpp` from clang with a `static_assert(false)` added at the end:

```
/home/tbaeder/code/llvm-project/clang/lib/Sema/SemaExpr.cpp:21870:15: error: 
static assertion failed
Lexed 21870 lines and 174105 Tokens
That took 660402 microseconds
That took 660 milliseconds
That took 0 seconds
```
That doesn't seem too bad to me? I can try again with an optimized build if you 
want.

> > So, my general procedure for diagnostics is that they shouldn't complicate 
> > the non-diagnostic code. And when we emit a diagnostic, performance is 
> > basically out the window anyway (printing to stdout is _slow_ and the way 
> > we emit code snippets is also slow, etc.)
> 
> That is generally true, but how far do want to push that logic? Lexing is 
> going to be fairly expensive on most source files. I'd expect it to be much 
> more (cpu) expensive than a call to print.

Of course it's more expensive, I was just trying to make a point :) I expect 
this to be only visible in situations where very few errors are ever shown, 
i.e. when an actual human compiles a project. Build servers redirect the output 
to a file anyway, which disables any sort of colored output.



https://github.com/llvm/llvm-project/pull/66514
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to