<div dir="ltr">Hi all,<div><br></div><div>I expanded the report quite a bit over the weekend, adding the suggested example, writing a bit more about the current state of the analyzer and implementing the suggestions (thank you George and Artem).</div><div><br></div><div><span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:12.8px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline">Any feedback is welcome! I plan to submit the report tomorrow, mid-afternoon.</span><br></div><div><span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:12.8px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline"><br></span></div><div><span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:12.8px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline">Thank you,</span></div></div><div class="gmail_extra"><br><div class="gmail_quote">2018-03-23 21:54 GMT+00:00 George Karpenkov <span dir="ltr"><<a href="mailto:ekarpenkov@apple.com" target="_blank">ekarpenkov@apple.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word;line-break:after-white-space">Hi Mikhail,<div><br></div><div>Indeed, it seems that the constraint manager is more eager to throw out complex constraints than I’ve anticipated initially.</div><div>It might be partly a good thing: now we need to know that evaluating disabling this heuristic and measuring a change in footprint</div><div>on a large number of project needs to be a part of the schedule.</div><div>An example where a change in this optimization is required would be also beneficial for proposal.</div><div><br></div><div>Now onto the example.</div><div><br></div><div>1. Unlike SV-COMP, the analyzer treats “assert” as “assume”. So you would need to e.g. perform null pointer dereference to see whether there’s an error.</div><div>(or use a debug checker and a special function, consult tests for those)</div><div>2. The following function seems to give the desired behavior:</div><div><br></div><div><div><div>int foo(int x) {</div><div> int *z = 0;</div><div> if ((x & 1) && ((x & 1) ^ 1))</div><div> return *z;</div><div> return 0;</div><div>}</div></div><div><br></div><div>In a sense that the analyzer reports a false positive (if x & 1 is true, last bit is one, but then (x & 1) is the last bit and (x & 1) ^ 1 should be zero),</div><div>it is non-obvious, and just using Z3 with constraints present in the graph should be sufficient.</div><div><br></div><div>Regards,</div><div>George</div><div><div class="h5"><div><br><blockquote type="cite"><div>On Mar 23, 2018, at 12:48 PM, Mikhail Ramalho <<a href="mailto:mikhail.ramalho@gmail.com" target="_blank">mikhail.ramalho@gmail.com</a>> wrote:</div><br class="m_-6481325030509720384Apple-interchange-newline"><div><div dir="ltr">Hi,<div><br></div><div>Just a quick update: I still haven't found a suitable case to add to the report but I tried to address every other comment there. </div><div><br></div><div>Any feedback is welcome!</div><div><br></div><div>Thank you,</div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">2018-03-23 18:39 GMT+00:00 Mikhail Ramalho <span dir="ltr"><<a href="mailto:mikhail.ramalho@gmail.com" target="_blank">mikhail.ramalho@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Indeed the constraints start to appear when there are multiplications/divisions/rema<wbr>inders, but I noticed that it only prints the constraints when it's able to solve them.<div><br></div><div>Maybe in a higher level it's dropping constraints without querying if the solver can handle it?<br></div><div><br></div><div>I'll keep looking into it.</div><div class="gmail_extra"><div><div class="m_-6481325030509720384h5"><br><div class="gmail_quote">2018-03-23 18:25 GMT+00:00 Artem Dergachev <span dir="ltr"><<a href="mailto:noqnoqneo@gmail.com" target="_blank">noqnoqneo@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div text="#000000" bgcolor="#FFFFFF">
Try making assumptions over 2 * x, these should work if i recall
correctly.<div><div class="m_-6481325030509720384m_-2406771488922912429m_7462020983193081322h5"><br>
<br>
<div class="m_-6481325030509720384m_-2406771488922912429m_7462020983193081322m_-4451861523552279669moz-cite-prefix">On 3/23/18 10:51 AM, Mikhail Ramalho
via cfe-dev wrote:<br>
</div>
<blockquote type="cite">
<div dir="ltr">Hi,
<div class="gmail_extra"><br>
<div class="gmail_quote">
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<div style="word-wrap:break-word">
<div>
<div><br>
</div>
<div>We would have to find an easier example first,
where the core modification are not necessary.</div>
<div>For the easier example: I think it would have to
be simple arithmetics over integers, even negation
would work.</div>
<div>The current solver can not handle any relational
constraints.</div>
<div><br>
</div>
</div>
</div>
</blockquote>
<div><br>
</div>
<div>I'm having some problems finding a simple benchmark
where the constraints are not dropped.</div>
<div><br>
</div>
<div>For instance, consider the following (safe) program:</div>
<div><br>
</div>
<div>
<div>void foo(unsigned x, unsigned y)</div>
<div>{</div>
<div> if (x > y)</div>
<div> return;</div>
<div><br>
</div>
<div> int base;</div>
<div><br>
</div>
<div> if (x <= y)</div>
<div> base = 1;</div>
<div><br>
</div>
<div> assert(base == 1);</div>
<div>}</div>
</div>
<div><br>
</div>
<div>But the constraints are empty (both when I print the
graph and the SMT formula). I'm calling the analyzer:</div>
<div><br>
</div>
<div>$ ~/myclang/bin/clang --analyze -Xclang
-analyzer-viz-egraph-graphviz -Xanalyzer
-analyzer-checker=debug.DumpCF<wbr>G main2.c<br>
</div>
<div><br>
</div>
<div>I'm assuming that the constraints are being dropped
somehow but is there any other way to check it?</div>
<div><br>
</div>
<div>Btw, I'm using the head of the release_60 branch.</div>
<div><br>
</div>
<div>Thank you,</div>
<div> </div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<div style="word-wrap:break-word">
<div>
<div>BTW instead of looking into the
Z3ConstraintManager I think it would be easier to
look at the exploded graph (using the option I have
previously described)</div>
<div>and see what formulas are mentioned there.</div>
<div>
<div class="m_-6481325030509720384m_-2406771488922912429m_7462020983193081322m_-4451861523552279669gmail-m_-8638169037548414962gmail-h5"><br>
<blockquote type="cite">
<div>
<div dir="ltr">
<div><br>
</div>
<div>Thank you,</div>
<div><br>
</div>
<div class="gmail_extra"><br>
<div class="gmail_quote">2018-03-22 20:34
GMT+00:00 George Karpenkov <span dir="ltr"><<a href="mailto:ekarpenkov@apple.com" target="_blank">ekarpenkov@apple.com</a>></span>:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<div style="word-wrap:break-word">Hi
Mikhail,
<div><br>
</div>
<div>That’s a good improvement!</div>
<div><br>
</div>
<div>I think an awesome next step
would be to see whether the
analyzer already has the formula
required to solve your
motivational example.</div>
<div>This would be a preliminary
feasibility study: if the formula
is there, it’s just a matter of
converting it and giving it to Z3,
and otherwise,</div>
<div>the exercise is much harder and
might require substantial changes.</div>
<div><br>
</div>
<div>Perhaps an easiest way to see
what formulas the analyzer has is
to launch it with an extra flag</div>
<div>`-Xclang
-analyzer-viz-egraph-graphviz`
which would dump a graph in a
GraphViz format containing all the
information analyzer has along all
the states.</div>
<div><br>
</div>
<div>This is important for judging
feasibility, as it might be the
case that analyzer at some point
decides to get rid of the
“complex” constraint.</div>
<div>While it would be possible to
change that, that would be a
second step of the project,</div>
<div>and for preliminary evaluation
a simpler example would be needed.</div>
<div><br>
</div>
<div>Also, the information above
could be helpful for structuring
the project: a first stage would
be checking most trivial examples,
a second stage would be seeing how
far</div>
<div>can we get with only minimal
modifications to the core.</div>
<div><br>
</div>
<div>Regards,</div>
<div>George</div>
<div>
<div class="m_-6481325030509720384m_-2406771488922912429m_7462020983193081322m_-4451861523552279669gmail-m_-8638169037548414962gmail-m_-52597389203126130m_3480453752466103086h5">
<div>
<div><br>
<blockquote type="cite">
<div>On Mar 22, 2018, at
1:19 PM, Mikhail Ramalho
<<a href="mailto:mikhail.ramalho@gmail.com" target="_blank">mikhail.ramalho@gmail.com</a>>
wrote:</div>
<br class="m_-6481325030509720384m_-2406771488922912429m_7462020983193081322m_-4451861523552279669gmail-m_-8638169037548414962gmail-m_-52597389203126130m_3480453752466103086m_4673560789215137001Apple-interchange-newline">
<div>
<div dir="ltr">Hi all,
<div><br>
</div>
<div>Thank you for the
feedback, George and
Dominic.</div>
<div><br>
</div>
<div>I updated my
proposal with an
example, showing the
encoded SMT formula
for the program and
a brief explanation
of the verification
process. I used a
simplified program
from a bug report in
Bugzilla.</div>
<div><br>
</div>
<div>May I ask for
some feedback in
this section?</div>
<div><br>
</div>
<div>~</div>
<div><br>
</div>
<div>I addressed most
of the comments,
except for: </div>
<div><span style="color:rgb(51,51,51);font-family:Arial,sans-serif,sans;font-size:13px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:left;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline"><br>
</span></div>
<div><span style="color:rgb(51,51,51);font-family:Arial,sans-serif,sans;font-size:13px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:left;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline"><span style="color:rgb(51,51,51);font-family:Arial,sans-serif,sans;font-size:13px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:left;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline">George:
stretch goals
are great, but
for now I think
it would be
better to focus
on writing a
considerably
more detailed
proposal on how
and why the main
goal would be
implemented.<span> </span></span></span></div>
<div><span style="color:rgb(51,51,51);font-family:Arial,sans-serif,sans;font-size:13px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:left;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline"><span style="color:rgb(51,51,51);font-family:Arial,sans-serif,sans;font-size:13px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:left;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline"><span><br>
</span></span></span></div>
<div><font face="Arial,
sans-serif, sans" color="#333333">I
tried to explain
the motivation in
the Overview
section, do you
think a motivation
section would be
better? </font></div>
<div><font face="Arial,
sans-serif, sans" color="#333333"><br>
</font></div>
<div><font face="Arial,
sans-serif, sans" color="#333333">Regarding
the how, I'll have
another look in
the
BugReportVisitor
and update the
proposal with a
more concrete
solution.</font></div>
<div><font face="Arial,
sans-serif, sans" color="#333333"><br>
</font></div>
<div><font face="Arial,
sans-serif, sans" color="#333333">Thank
you,</font></div>
<div><br>
</div>
<div class="gmail_extra"><br>
<div class="gmail_quote">2018-03-21
17:54 GMT+00:00
George Karpenkov <span dir="ltr"><<a href="mailto:ekarpenkov@apple.com" target="_blank">ekarpenkov@apple.com</a>></span>:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<div style="word-wrap:break-word">Hi
Mikhail,
<div><br>
</div>
<div>I’ve
added some
feedback.</div>
<div>Overall,
I think we
should be
aiming for
something more
low-level and
concrete:</div>
<div>adding
examples with
explanations
would be a
great
improvement.</div>
<div><br>
</div>
<div>Regards,</div>
<div>George
<div>
<div class="m_-6481325030509720384m_-2406771488922912429m_7462020983193081322m_-4451861523552279669gmail-m_-8638169037548414962gmail-m_-52597389203126130m_3480453752466103086m_4673560789215137001m_3797644012230859096h5"><br>
<div><br>
<blockquote type="cite">
<div>On Mar
21, 2018, at
10:12 AM,
Mikhail
Ramalho <<a href="mailto:mikhail.ramalho@gmail.com" target="_blank">mikhail.ramalho@gmail.com</a>>
wrote:</div>
<br class="m_-6481325030509720384m_-2406771488922912429m_7462020983193081322m_-4451861523552279669gmail-m_-8638169037548414962gmail-m_-52597389203126130m_3480453752466103086m_4673560789215137001m_3797644012230859096m_8959840794667446807Apple-interchange-newline">
<div>
<div dir="ltr">Hi
all,
<div><br>
</div>
<div>I've
written a
first draft of
my proposal:</div>
<div><br>
</div>
<div><a href="https://docs.google.com/document/d/1-zNSv0l4WyoxYpJUAw8LFnQq_TY4AGjIpPu1VPkmO-g/edit?usp=sharing" target="_blank">https://docs.google.com/docume<wbr>nt/d/1-zNSv0l4WyoxYpJUAw8LFnQq<wbr>_TY4AGjIpPu1VPkmO-g/edit?usp=s<wbr>haring</a><br>
</div>
<div><br>
</div>
<div>I've
added a few
comments in
places I think
need
improvement. </div>
<div><br>
</div>
<div>May I ask
the community
to have a look
and give some
feedback? </div>
<div><br>
</div>
<div>Thank
you,</div>
<div><br>
</div>
</div>
<div class="gmail_extra"><br>
<div class="gmail_quote">2018-03-12
18:24
GMT+00:00
George
Karpenkov <span dir="ltr"><<a href="mailto:ekarpenkov@apple.com" target="_blank">ekarpenkov@apple.com</a>></span>:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<div style="word-wrap:break-word">Hi
Mikhail,
<div><br>
</div>
<div>I’m
assuming
Dominic have
answered your
questions
regarding the
point (3).</div>
<div><br>
</div>
<div>On point
(1) I have
recently sent
an email on
the list
answering, I
believe, to
essentially
the same
question:</div>
<div><a href="http://lists.llvm.org/pipermail/cfe-dev/2018-March/057064.html" target="_blank">http://lists.llvm.org/pipermai<wbr>l/cfe-dev/2018-March/057064.ht<wbr>ml</a></div>
<div><br>
</div>
<div>(yes,
unfortunately
we do not have
better
archives, so
messages might
be often hard
to track)<br>
<div><span><br>
<blockquote type="cite">
<div>
<div dir="ltr" style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">
<div>2. I
still don't
quite
understand how
dynamic memory
track works in
the analyzer,
is the double
checker
expected to
work for
pointers and
dynamic memory
as well? I'm
assuming yes
here and that
Z3ConstraintManager <span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);float:none;display:inline">might
need to be
extended
somehow (a
plan will be
added to the
proposal).</span></div>
</div>
</div>
</blockquote>
<div><br>
</div>
</span>
<div>I think
here we should
get the extra
precision for
free by adding
a bug reporter
visitor, as
described in
the email
thread I have
linked to.</div>
<div><br>
</div>
<div>Please
feel free to
ask any
further
questions, bug
reporter
visitors are
quite messy in
the analyzer.</div>
<div><br>
</div>
<div>Regards,</div>
<div>George</div>
<br>
<blockquote type="cite">
<div><span>
<div dir="ltr" style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">
<div><span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);float:none;display:inline"><br>
</span></div>
<div><span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);float:none;display:inline">~</span></div>
<div><span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);float:none;display:inline"><br>
</span></div>
<div><span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);float:none;display:inline">3.
This is a list
of the TODOs
in <span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);float:none;display:inline">Z3ConstraintManager,
from more
important to
less
important, in
my opinion. I
just want to
know if the
analyzer's
developers
(and the
project
mentor) agree
with this
list, as it
might go into
my proposal:</span></span></div>
<div><span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);float:none;display:inline"><span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);float:none;display:inline"><br>
</span></span></div>
<div><span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);float:none;display:inline"><span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);float:none;display:inline">3.1. Don't
assume nearest
ties to even
rounding mode:
currently,
only rounding
to even is
supported,
even if the
code changes
the rounding
mode
using fesetround.</span></span></div>
<div><span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);float:none;display:inline"><span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);float:none;display:inline"><br>
</span></span></div>
<div><span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);float:none;display:inline"><span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);float:none;display:inline">3.2. Don't
add all the
constraints,
only the
relevant ones:
adding
unnecessary
constraints
will slowdown
the solver.</span></span></div>
<div><span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);float:none;display:inline"><span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);float:none;display:inline"><br>
</span></span></div>
<div><span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);float:none;display:inline"><span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);float:none;display:inline">3.3. Refactor
doTypeConversion to use built-in conversion functions (</span></span>Refactor
to
Sema::FindCompositePointerType<wbr>(),
and
Sema::CheckCompareOperands(); <wbr>Refine
behavior for
invalid type
casts)</div>
<div><span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);float:none;display:inline"><span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);float:none;display:inline">3.4.
Refactor
doIntTypeConversion
to use
Sema::handleIntegerConversion(<wbr>)</span></span></div>
<div><span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);float:none;display:inline"><span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);float:none;display:inline">3.5. Refactor
doFloatTypeConversion to use Sema::handleFloatConversion()</span></span></div>
<div><br>
</div>
<div>I bundled
this together
because,
although the
conversion
seems
incomplete
(based on the
comments),
it's about
removing
duplicated
code.</div>
<div><br>
</div>
<div>3.6.
Refactor
getAPSIntType(const
llvm::APSInt
&Int)
const to put
elsewhere.</div>
<div><br>
</div>
<div>~</div>
<div><br>
</div>
<div>Thank
you,</div>
<div><br>
</div>
</div>
<div class="gmail_extra" style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px"><br>
<div class="gmail_quote">2018-02-24
1:03 GMT+00:00
Devin Coughlin<span class="m_-6481325030509720384m_-2406771488922912429m_7462020983193081322m_-4451861523552279669gmail-m_-8638169037548414962gmail-m_-52597389203126130m_3480453752466103086m_4673560789215137001m_3797644012230859096m_8959840794667446807m_-5653580683305685986Apple-converted-space"> </span><span dir="ltr"><<a href="mailto:dcoughlin@apple.com" target="_blank">dcoughlin@apple.com</a>></span><wbr>:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><span><br>
<br>
> On Feb
23, 2018, at
9:29 AM,
Mikhail
Ramalho via
cfe-dev <<a href="mailto:cfe-dev@lists.llvm.org" target="_blank">cfe-dev@lists.llvm.org</a>>
wrote:<br>
><br>
> I also
have a
question about
the proposal.
I understand
that ideas
about the
project will
be discussed
in the mailing
list. However,
once that's
settled and I
write my first
draft
proposal,
should I send
it to the
mailing list
for discussion
again or
should I send
it only to the
mentor?<br>
<br>
</span>Please
make sure to
keep email
discussions on
the mailing
list rather
than just
personal
email. This is
a topic that
members of the
community will
be interested
in and will
have valuable
feedback on.<br>
<span class="m_-6481325030509720384m_-2406771488922912429m_7462020983193081322m_-4451861523552279669gmail-m_-8638169037548414962gmail-m_-52597389203126130m_3480453752466103086m_4673560789215137001m_3797644012230859096m_8959840794667446807m_-5653580683305685986HOEnZb"><font color="#888888"><br>
Devin<br>
<br>
</font></span></blockquote>
</div>
<br>
<br clear="all">
<div><br>
</div>
--<span class="m_-6481325030509720384m_-2406771488922912429m_7462020983193081322m_-4451861523552279669gmail-m_-8638169037548414962gmail-m_-52597389203126130m_3480453752466103086m_4673560789215137001m_3797644012230859096m_8959840794667446807m_-5653580683305685986Apple-converted-space"> </span><br>
<div class="m_-6481325030509720384m_-2406771488922912429m_7462020983193081322m_-4451861523552279669gmail-m_-8638169037548414962gmail-m_-52597389203126130m_3480453752466103086m_4673560789215137001m_3797644012230859096m_8959840794667446807m_-5653580683305685986gmail_signature">
<div dir="ltr">
<div><br>
</div>
<div>Mikhail
Ramalho.</div>
</div>
</div>
</div>
</span><span><span style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;float:none;display:inline">______________________________<wbr>_________________</span><br style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">
<span style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;float:none;display:inline">cfe-dev
mailing list</span><br style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">
<a href="mailto:cfe-dev@lists.llvm.org" style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px" target="_blank">cfe-dev@lists.llvm.org</a><br style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev" style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px" target="_blank">http://lists.llvm.org/cgi-bin/<wbr>mailman/listinfo/cfe-dev</a></span></div>
</blockquote>
</div>
<br>
</div>
</div>
</blockquote>
</div>
<br>
<br clear="all">
<div><br>
</div>
-- <br>
<div class="m_-6481325030509720384m_-2406771488922912429m_7462020983193081322m_-4451861523552279669gmail-m_-8638169037548414962gmail-m_-52597389203126130m_3480453752466103086m_4673560789215137001m_3797644012230859096m_8959840794667446807gmail_signature">
<div dir="ltr">
<div><br>
</div>
<div>Mikhail
Ramalho.</div>
</div>
</div>
</div>
</div>
</blockquote>
</div>
<br>
</div>
</div>
</div>
</div>
</blockquote>
</div>
<br>
<br clear="all">
<div><br>
</div>
-- <br>
<div class="m_-6481325030509720384m_-2406771488922912429m_7462020983193081322m_-4451861523552279669gmail-m_-8638169037548414962gmail-m_-52597389203126130m_3480453752466103086m_4673560789215137001m_3797644012230859096gmail_signature">
<div dir="ltr">
<div><br>
</div>
<div>Mikhail
Ramalho.</div>
</div>
</div>
</div>
</div>
</div>
</blockquote>
</div>
<br>
</div>
</div>
</div>
</div>
</blockquote>
</div>
<br>
<br clear="all">
<div><br>
</div>
-- <br>
<div class="m_-6481325030509720384m_-2406771488922912429m_7462020983193081322m_-4451861523552279669gmail-m_-8638169037548414962gmail-m_-52597389203126130m_3480453752466103086gmail_signature">
<div dir="ltr">
<div><br>
</div>
<div>Mikhail Ramalho.</div>
</div>
</div>
</div>
</div>
</div>
</blockquote>
</div>
</div>
</div>
<br>
</div>
</blockquote>
</div>
<br>
<br clear="all">
<div><br>
</div>
-- <br>
<div class="m_-6481325030509720384m_-2406771488922912429m_7462020983193081322m_-4451861523552279669gmail-m_-8638169037548414962gmail_signature">
<div dir="ltr">
<div><br>
</div>
<div>Mikhail Ramalho.</div>
</div>
</div>
</div>
</div>
<br>
<fieldset class="m_-6481325030509720384m_-2406771488922912429m_7462020983193081322m_-4451861523552279669mimeAttachmentHeader"></fieldset>
<pre class="m_-6481325030509720384m_-2406771488922912429m_7462020983193081322m_-4451861523552279669moz-quote-pre">______________________________<wbr>_________________
cfe-dev mailing list
<a class="m_-6481325030509720384m_-2406771488922912429m_7462020983193081322m_-4451861523552279669moz-txt-link-abbreviated" href="mailto:cfe-dev@lists.llvm.org" target="_blank">cfe-dev@lists.llvm.org</a>
<a class="m_-6481325030509720384m_-2406771488922912429m_7462020983193081322m_-4451861523552279669moz-txt-link-freetext" href="http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev" target="_blank">http://lists.llvm.org/cgi-bin/<wbr>mailman/listinfo/cfe-dev</a>
</pre>
</blockquote>
<br>
</div></div></div>
</blockquote></div><br><br clear="all"><div><br></div></div></div><span class="m_-6481325030509720384HOEnZb"><font color="#888888">-- <br><div class="m_-6481325030509720384m_-2406771488922912429m_7462020983193081322gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div><br></div><div>Mikhail Ramalho.</div></div></div>
</font></span></div></div>
</blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="m_-6481325030509720384gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div><br></div><div>Mikhail Ramalho.</div></div></div>
</div>
</div></blockquote></div><br></div></div></div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div><br></div><div>Mikhail Ramalho.</div></div></div>
</div>