rv64_extern_pcrel_got.c (655B)
1 /* Extern global referenced from another TU forces rv64 to materialize 2 * the address via PCREL_HI20 / PCREL_LO12 (or GOT_HI20 for PIC). This 3 * exercises the auipc+addi (or auipc+ld) lowering path. */ 4 int extern_global_value = 42; 5 int* extern_global_ptr = &extern_global_value; 6 7 static int read_via_extern_ptr(void) { return *extern_global_ptr; } 8 static int read_via_addrof(void) { return *(&extern_global_value); } 9 10 int test_main(void) { 11 if (read_via_extern_ptr() != 42) return 1; 12 if (read_via_addrof() != 42) return 2; 13 extern_global_value = 7; 14 if (read_via_extern_ptr() != 7) return 3; 15 extern_global_value = 42; 16 return read_via_addrof(); 17 }