public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c++/109057] New: Does GCC interpret assembly when deciding to optimize away a variable?
@ 2023-03-07 17:07 hbucher at gmail dot com
  2023-03-07 17:17 ` [Bug middle-end/109057] " hbucher at gmail dot com
                   ` (9 more replies)
  0 siblings, 10 replies; 11+ messages in thread
From: hbucher at gmail dot com @ 2023-03-07 17:07 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109057

            Bug ID: 109057
           Summary: Does GCC interpret assembly when deciding to optimize
                    away a variable?
           Product: gcc
           Version: unknown
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: hbucher at gmail dot com
  Target Milestone: ---

I'm trying to figure out why GCC optimizes away a uint8_value that is passed
into assembly, basically discarding it. This is in context of Google
benchmarks. 

#include <stdint.h>
inline void DoNotOptimize( uint8_t value) {
  asm volatile("" : : "r,m"(value) : "memory");
}
static const uint8_t LUT[8] = {1,5,3,0,2,7,1,2};
void func1(uint8_t val) {
    DoNotOptimize(LUT[val]); 
}

In this case Gcc generates

func1(unsigned char):
        movzbl  %dil, %edi
        ret

More importantly, the entire static array LUT was optimized away from the
object file. 

https://godbolt.org/z/Tab5T84dM

Is this the correct behavior in your understanding?

^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2023-03-07 17:44 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-03-07 17:07 [Bug c++/109057] New: Does GCC interpret assembly when deciding to optimize away a variable? hbucher at gmail dot com
2023-03-07 17:17 ` [Bug middle-end/109057] " hbucher at gmail dot com
2023-03-07 17:22 ` pinskia at gcc dot gnu.org
2023-03-07 17:27 ` jakub at gcc dot gnu.org
2023-03-07 17:28 ` hbucher at gmail dot com
2023-03-07 17:29 ` jakub at gcc dot gnu.org
2023-03-07 17:31 ` hbucher at gmail dot com
2023-03-07 17:32 ` jakub at gcc dot gnu.org
2023-03-07 17:32 ` pinskia at gcc dot gnu.org
2023-03-07 17:38 ` hbucher at gmail dot com
2023-03-07 17:44 ` jakub at gcc dot gnu.org

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).