/* Copyright (C) 2001 Free Software Foundation. Ensure that short builtin memcmp are optimized and perform correctly. On architectures with a cmpstrsi instruction, this test doesn't determine which optimization is being performed, but it does check for correctness. Written by Roger Sayle, 12/02/2001. Additional tests by Roger Sayle after PR 3508, 12/26/2001. */ extern void abort (void); typedef __SIZE_TYPE__ size_t; extern int memcmp (const void *, const void *, size_t); extern char *strcpy (char *, const char *); extern void link_error (void); void main_test (void) { char str[8]; strcpy (str, "3141"); if ( memcmp (str, str+2, 0) != 0 ) abort (); if ( memcmp (str+1, str+3, 0) != 0 ) abort (); if ( memcmp (str+1, str+3, 1) != 0 ) abort (); if ( memcmp (str, str+2, 1) >= 0 ) abort (); if ( memcmp (str+2, str, 1) <= 0 ) abort (); if (memcmp ("abcd", "efgh", 4) >= 0) link_error (); if (memcmp ("abcd", "abcd", 4) != 0) link_error (); if (memcmp ("efgh", "abcd", 4) <= 0) link_error (); }