Dear LLVM and SVA community:
This is to brief you the progress of this week. Following is what I
finished this week:
1. The InlineBBRuntimeFunctions pass I implemented last week does not
support for inline a function call with one or more users. I directly
copied the InlineFunction()functionfrom InlineFastChecks pass. This will
not inline functions like boundscheckui(), which the return values will
be used in the follow-up instructions. I solved it .
2. Previously I made the RewriteOOB pass insert a pchk_getActualValue()
call before each GEP , this does not support getelementptr call whose
operand is a vector. I solved this issue .
3. Tested the current implementation on git.
* Found a bug: the fastlscheck_debug() and exactcheck2_debug()
function do not handle the situation that the input argument length
equals 0, and generates some false positives reports. We have met this
on poolcheckui_debug() and boundscheck_debug().
* After some further investigation, I found that our implementation
could correctly external allocated memories(by checking if the
corresponding baggy bounds table element is 0). The bug I mentioned last
week is because of a special function: getdelim(). According to  , If
the buffer is not large enough to hold the line, getdelim() resizes it
with realloc(). This realloc() is called externally and is not
unregistered and registered. I guess the best way to solve this problem
is just write a wrapper function for getline() and getdelim(). After
this, our implementation could pass all the git test suite.
* The new pass InlineGetActualValue pass brings some new false
positive reports, I am finding why that happened, it is complicated and
I have not found the bug yet.
4. Learned profiling tool gprof and profiled the generated executables.