mirror of
https://github.com/Gericom/teak-llvm.git
synced 2025-06-23 21:45:46 -04:00

When neither LHS nor RHS of a binary operator expression can be simplified, return the original expression instead of re-evaluating the binary operator. Such re-evaluation was causing recusrive re-simplification which caused the algorithmic complexity to explode. Differential Revision: https://reviews.llvm.org/D47155 llvm-svn: 333670
31 lines
660 B
C
31 lines
660 B
C
// RUN: %clang_analyze_cc1 -analyzer-checker core -verify %s
|
|
|
|
// expected-no-diagnostics
|
|
|
|
// Stuff that used to hang.
|
|
|
|
int g();
|
|
|
|
int f(int y) {
|
|
return y + g();
|
|
}
|
|
|
|
int produce_a_very_large_symbol(int x) {
|
|
return f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(
|
|
f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(x))))))))))))))))))))))))))))))));
|
|
}
|
|
|
|
void produce_an_exponentially_exploding_symbol(int x, int y) {
|
|
x += y; y += x + g();
|
|
x += y; y += x + g();
|
|
x += y; y += x + g();
|
|
x += y; y += x + g();
|
|
x += y; y += x + g();
|
|
x += y; y += x + g();
|
|
x += y; y += x + g();
|
|
x += y; y += x + g();
|
|
x += y; y += x + g();
|
|
x += y; y += x + g();
|
|
x += y; y += x + g();
|
|
}
|