<div dir="auto"><div class="gmail_quote" dir="auto"><div dir="ltr" class="gmail_attr">J. Gareth Moreton <<a href="mailto:gareth@moreton-family.com" target="_blank" rel="noreferrer">gareth@moreton-family.com</a>> schrieb am So., 5. Mai 2019, 05:11:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
  
    
  
  <div text="#000000" bgcolor="#FFFFFF">
    <p>One problem I do have with FPC and its optimiser is that -O4 is
      specifically said that it may cause side-effects and even
      tongue-in-cheek says "beware".  To me, this is bad design because
      it discourages the end users from using the option and if an
      optimisation causes well-behaved code to suddenly start
      malfunctioning, then that is a bug in my eyes.  To me, I'd like
      -O4 to be that aggressive, deep optimisation that may take a few
      hours on the largest of projects (although in reality it will
      probably only be a few minutes), but which isn't going to create
      something questionable that will break things.<br></p></div></blockquote></div><div dir="auto">The "beware" is only related to code that relies on implementation details. E.g. the order of fields in a class which everyone assumes is the same in memory as the one its written in the code. </div><div dir="auto"><br></div><div class="gmail_quote" dir="auto"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div text="#000000" bgcolor="#FFFFFF"><p></p>
    <p>It's partly why I was wondering about marking certain procedures
      or variables as non-volatile so they can be moved to local storage
      without having to do it programmatically and making the code
      unmaintainable.  By specifically telling the compiler "this value
      is thread-safe", it can make those assumptions because you've
      assured it that you're not doing something tricky with it, rather
      than attempting to let the compiler work it out for itself (which
      is probably impossible) and hence assume it's not thread-safe and
      hence volatile.</p></div></blockquote></div><div dir="auto">And you can get malfunctioning with such modifiers as well, namely if the user does not adhere to what to what they told the compiler. This might even happen by accident if one uses third party code and does not know that the code uses that (the known problems with "const" are an existing example of that). </div><div dir="auto"><br></div><div dir="auto">Regards, </div><div dir="auto">Sven </div><div class="gmail_quote" dir="auto"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
</blockquote></div></div>