File: memset.c

package info (click to toggle)
chibicc 1.0.23.2-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 5,832 kB
  • sloc: ansic: 62,911; sh: 275; makefile: 92
file content (31 lines) | stat: -rw-r--r-- 774 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include "test.h"
#include <string.h>

int main(void) {
    char buf1[16];
    char buf2[16];

    // --- Direct call: should trigger ND_BUILTIN_MEMSET inline ---
    __builtin_memset(buf1, 'A', sizeof(buf1));

    // Print to verify
    for (int i = 0; i < sizeof(buf1); i++)
        putchar(buf1[i]);
    putchar('\n');

    // --- Indirect call via function pointer: should use alias to libc memset ---
    void *(*ptr)(void *, int, size_t) = memset;
    ptr(buf2, 'B', sizeof(buf2));

    for (int i = 0; i < sizeof(buf2); i++)
        putchar(buf2[i]);
    putchar('\n');

    // Verify return value
    if (ptr(buf2, 'C', 5) == buf2)
        printf("Return value correct!\n");

    ASSERT(1, ptr(buf2, 'C', 5) == buf2);

    return 0;
}