https://sourceware.org/bugzilla/show_bug.cgi?id=27129

            Bug ID: 27129
           Summary: [aarch64] broken logical immediate operations in
                    NDEBUG builds
           Product: binutils
           Version: 2.36 (HEAD)
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: gas
          Assignee: unassigned at sourceware dot org
          Reporter: d_garry at mail dot ru
  Target Milestone: ---

When -NDEBUG is defined during build, it transforms "assert(anything)" into
something like "(void*)(0)" - at least in Linux, as defined in <assert.h>:

ifdef  NDEBUG
...
# define assert(expr)       (__ASSERT_VOID_CAST (0))
...
endif

Thus in case when any function is about to be called from assert, it will be
silently ignored. Example (see opcodes/aarch64-asm.c:555):

   /* The constraint check should have guaranteed this wouldn't happen.  */
   assert (aarch64_logical_immediate_p (imm, esize, &value));

If -NDEBUG-ged, aarch64_logical_immediate_p() simply won't be called, making
aarch64 logical operations (e.g. AND opcode) work incorrectly.

Seems that regression occured in commit 535b785fb0.

-- 
You are receiving this mail because:
You are on the CC list for the bug.

Reply via email to