Sungkeun Cho
4b2c65f2e2
Revert "[inferbo] Instantiate symbolic locations in function parameters"
...
Reviewed By: ngorogiannis
Differential Revision: D13301231
fbshipit-source-id: c763a158b
6 years ago
Sungkeun Cho
62d45f9c01
[inferbo] Copy callee's values that are reachable from parameters
...
Summary:
At function calls, it copies callee's values that are reachable from parameters.
Depends on D13231291
Reviewed By: mbouaziz
Differential Revision: D13231711
fbshipit-source-id: 1e8aed1c4
6 years ago
Mehdi Bouaziz
e505fd2dba
[inferbo] Pointer comparison
...
Reviewed By: skcho
Differential Revision: D13066771
fbshipit-source-id: 134b27db8
6 years ago
Mehdi Bouaziz
5f60ffaa8f
[inferbo] Trace refactoring
...
Reviewed By: skcho
Differential Revision: D13116116
fbshipit-source-id: 0b885dcfb
6 years ago
Sungkeun Cho
edc090544a
[inferbo] Improve pp of Inferbo in traceview
...
Reviewed By: mbouaziz
Differential Revision: D13113991
fbshipit-source-id: 149652eff
6 years ago
Mehdi Bouaziz
8fcbfcb741
[inferbo] Pretty-print more abstract locations
...
Reviewed By: ezgicicek
Differential Revision: D13114228
fbshipit-source-id: 9f4b16817
6 years ago
Sungkeun Cho
e912bf2aa5
[inferbo] Prune more for "(x + e1) < e2" cases
...
Reviewed By: mbouaziz
Differential Revision: D13095472
fbshipit-source-id: 21aef560a
6 years ago
Sungkeun Cho
e190325b82
[inferbo] Distinguish collection add against array access in pp
...
Reviewed By: mbouaziz
Differential Revision: D13096380
fbshipit-source-id: d8878749f
6 years ago
Mehdi Bouaziz
fac9932168
[inferbo] Add traces to Conditions always true/false and Unreachable code
...
Reviewed By: ezgicicek
Differential Revision: D13082665
fbshipit-source-id: bb0e4cbf3
6 years ago
Ezgi Çiçek
6683c71f8b
[purity, hoisting] Add more purity models for fblite and instagram
...
Reviewed By: mbouaziz
Differential Revision: D13082201
fbshipit-source-id: e2b3f3e18
6 years ago
Mehdi Bouaziz
0ba4c2c892
[cost] Pretty-printing exponents
...
Reviewed By: ezgicicek
Differential Revision: D13050241
fbshipit-source-id: dbac027b7
6 years ago
Mehdi Bouaziz
5ed59b1655
[Inferbo/cost] Improve pretty-printing
...
Reviewed By: skcho
Differential Revision: D13045247
fbshipit-source-id: 5485b58c8
6 years ago
Sungkeun Cho
2401f6f6eb
[inferbo] Give a widening threshold of zero
...
Reviewed By: mbouaziz
Differential Revision: D12898540
fbshipit-source-id: 95bdaf4f0
6 years ago
Sungkeun Cho
b2189c1c17
[inferbo] Loosen similar bounds condition
...
Summary:
For more deduplications of issues, this diff loosens the condition of
similar bounds. The previous condition of similar bounds was too
strict, so [0,0] and [0,+oo] were not similar.
Depends on D10851762
Reviewed By: mbouaziz
Differential Revision: D10866127
fbshipit-source-id: 4ba912a88
6 years ago
Sungkeun Cho
bf29bd9772
[inferbo] Fix xcompare of Itv
...
Reviewed By: mbouaziz
Differential Revision: D10851762
fbshipit-source-id: 20e26cc30
6 years ago
Sungkeun Cho
120c8785eb
[inferbo] Update pp of buffer overflow condition
...
Reviewed By: mbouaziz
Differential Revision: D10851743
fbshipit-source-id: 1f06e3b64
6 years ago
Sungkeun Cho
3f71cf327b
[inferbo] Separate offset and index in condition
...
Summary:
This diff preserves values of offset and index separately, rather than
one value of their addition, because premature addition results in
imprecise FPs by the limited expressiveness of the domain.
Reviewed By: mbouaziz
Differential Revision: D10851393
fbshipit-source-id: 1685ead36
6 years ago
Mehdi Bouaziz
3ee96263a7
[inferbo] Simplify and improve Itv.prune_comp
...
Reviewed By: skcho
Differential Revision: D10386789
fbshipit-source-id: f9c7e33ef
6 years ago
Sungkeun Cho
fd3f298156
[inferbo] Add narrowing
...
Reviewed By: jvillard
Differential Revision: D10334140
fbshipit-source-id: afb247866
6 years ago
Mehdi Bouaziz
3dd97cc40f
[inferbo] Use WTO abstract interpreter
...
Reviewed By: jvillard
Differential Revision: D10072723
fbshipit-source-id: aabf3605e
6 years ago
Sungkeun Cho
3f969414fe
[inferbo] Check integer overflow when really need
...
Summary:
It avoids checking integer overflow when it definitely cannot happen.
For example, it does not check integer overflow of addition when one
of parameters is a negative number, or underflow of subtraction when
its first parameter is a positive number.
Reviewed By: mbouaziz
Differential Revision: D10446161
fbshipit-source-id: b8c86e1b2
6 years ago
Sungkeun Cho
cd1981a567
[inferbo] Change pp of BinaryOperationCondition
...
Summary: This diff changes pp of binary operation condition in order to avoid a `make test` failure. For the same `uint64_t` type, it is translated to `unsigned long long` in 64bit mac, but `unsigned long` in 64bit linux, which made a `make test` failure.
Reviewed By: mbouaziz
Differential Revision: D10459466
fbshipit-source-id: 449ab548e
6 years ago
Sungkeun Cho
fb4086c6f6
[inferbo] Add integer overflow issue type
...
Reviewed By: mbouaziz
Differential Revision: D10253878
fbshipit-source-id: 9905d7db4
6 years ago
Dino Distefano
3d07754275
Giving cost 1 to procedure with empty body
...
Reviewed By: mbouaziz
Differential Revision: D10378093
fbshipit-source-id: e6bff04da
6 years ago
Mehdi Bouaziz
c3f2fbc8c6
[inferbo] Do not alias values representing multiple values (Java, C partially)
...
Reviewed By: skcho
Differential Revision: D10317894
fbshipit-source-id: d9bf25699
6 years ago
Mehdi Bouaziz
7c89d92851
[RFC] Format all java files
...
Reviewed By: jeremydubreil
Differential Revision: D10067033
fbshipit-source-id: 73975664e
6 years ago
Ezgi Çiçek
527fb90bbe
[Cost] Add a Java model for functions to be considered invariant
...
fbshipit-source-id: e2fa74b19
6 years ago
Ezgi Çiçek
cc18f9883d
[Cost] Fix invariant variable analysis to be based on all reaching defns
...
Reviewed By: mbouaziz
Differential Revision: D9337572
fbshipit-source-id: f7f5f7572
6 years ago
Jeremy Dubreil
d000a27bd4
[infer] use a fully qualified name for the procedure field in the final report
...
Summary: The `procedure` field in the final report should use the non-ambiguous fully qualified name containing the Java package declaration and the list of parameter types.
Reviewed By: mbouaziz
Differential Revision: D9237522
fbshipit-source-id: e9b0ff664
6 years ago
Ezgi Çiçek
bedf32bed5
[Cost, InferBo] generalize ArrayLists to Collections and Iterators
...
Reviewed By: mbouaziz
Differential Revision: D9150202
fbshipit-source-id: 0b7f60058
6 years ago
Ezgi Çiçek
9022228804
add support for hasNext() and iterator() for Java
...
Reviewed By: mbouaziz
Differential Revision: D8975613
fbshipit-source-id: 4666d9b56
6 years ago
Ezgi Çiçek
832e0130cd
[Inferbo] Fix the way pointers to arrays are handled in Java
...
Reviewed By: mbouaziz
Differential Revision: D9195302
fbshipit-source-id: 83333c0c8
6 years ago
Mehdi Bouaziz
12c0e245c6
[Inferbo] Simplify interval pretty-print
...
Summary:
- `[b, b]` is simplified in `b`
- `[x.lb, x.ub]` is simplified in `x`
Reviewed By: skcho
Differential Revision: D9103775
fbshipit-source-id: e3c7b3d01
6 years ago
Martino Luca
632cb0e513
[Perf] Emit ZERO_EXECUTION_TIME_CALL issue-type, when zero-costing functions are met
...
Reviewed By: ezgicicek
Differential Revision: D9195167
fbshipit-source-id: 35985c83c
6 years ago
Ezgi Çiçek
396caca5d6
Fix array size for Java in `get_malloc_info`
...
Reviewed By: mbouaziz
Differential Revision: D9028059
fbshipit-source-id: a82664103
6 years ago
Jeremy Dubreil
3539388ea6
[infer][tests] fix the expected test output
...
Reviewed By: da319
Differential Revision: D9020225
fbshipit-source-id: 21c916857
6 years ago
Martino Luca
c50b250576
[Perf] Compute the degree of polynomials
...
Reviewed By: mbouaziz
Differential Revision: D8913700
fbshipit-source-id: bbdb08001
6 years ago
Ezgi Çiçek
2d889791e2
Fix Java's handling of pointer parameters in Inferbo
...
Reviewed By: mbouaziz, skcho
Differential Revision: D8950535
fbshipit-source-id: 5691eb898
6 years ago
Ezgi Çiçek
9ed18e958a
Add support for ArrayList.remove
...
Reviewed By: mbouaziz
Differential Revision: D8875451
fbshipit-source-id: 627061809
6 years ago
Ezgi Çiçek
f540aa47a3
Add support for Java's ArrayList.set and ArrayList.get
...
Reviewed By: mbouaziz
Differential Revision: D8874675
fbshipit-source-id: aa96f5344
6 years ago
Ezgi Çiçek
0c6eacc902
Add support for Java's ArrayLists.add*
...
Reviewed By: mbouaziz
Differential Revision: D8806285
fbshipit-source-id: 34c2838ac
6 years ago
Martino Luca
cccef6261d
Revert "[Perf] Add cost information to the hashing function"
...
Reviewed By: jvillard
Differential Revision: D8977060
fbshipit-source-id: 62ea735e9
6 years ago
Martino Luca
ac64be761f
[Perf] Add cost information to the hashing function
...
Reviewed By: jvillard
Differential Revision: D8917300
fbshipit-source-id: a70d67568
6 years ago
Ezgi Çiçek
34c2899a69
Fix printing of fields in Java
...
Reviewed By: mbouaziz
Differential Revision: D8874270
fbshipit-source-id: 1e90754aa
6 years ago
Ezgi Çiçek
5cff9c91f9
Add Java support to ProcnameDispatcher
...
Reviewed By: mbouaziz
Differential Revision: D8768497
fbshipit-source-id: 0f642f9
6 years ago
Mehdi Bouaziz
e5de1b6663
Cost: simplify range of parameters
...
Reviewed By: ddino
Differential Revision: D8379528
fbshipit-source-id: cf7da17
7 years ago
Mehdi Bouaziz
bea71d9168
Inferbo/perf: path rather than symbols
...
Reviewed By: ddino
Differential Revision: D8371727
fbshipit-source-id: 88e3bb3
7 years ago
Ezgi Çiçek
4624ff48d1
Fix control variable imprecision in do while loops
...
Reviewed By: ddino
Differential Revision: D8608040
fbshipit-source-id: 13a9048
7 years ago
Ezgi Çiçek
cf1c2acb54
[Cost] Add invariant analysis
...
Reviewed By: mbouaziz
Differential Revision: D8381787
fbshipit-source-id: dcd93e6
7 years ago
Ezgi Çiçek
f80af7be93
Fix control var analysis for loops with multiple back-edges per loop head
...
Summary:
I realized that control variable analysis was broken when we had multiple back-edges for the same loop. This is often the case when we have a switch statement combined with continue in a loop (see `test_switch` in `switch_continue.c`) or when we have disjunctive guards in do-while loops.
This diff fixes that by
- defining a loop by its loophead (the target of its backedges) rather than its back-edges. Then it converts back-edge list to a map from loop_head to sources of the loop's back-edges.
- collecting multiple guard nodes that come from potentially multiple exit nodes per loop head
In addition, it also removes the wrong assumption that an exit node belongs to a single loop head.
Reviewed By: mbouaziz
Differential Revision: D8398061
fbshipit-source-id: abaf288
7 years ago