kit

kit
git clone https://git.ryansepassi.com/git/kit.git
Log | Files | Refs | README

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 }