Does anyone know how LLVM decides what goes in the constant pool? For example: const int i = 10; // does not go in the constant pool, even if &i is present whereas: const char * hello = "hello"; // the string "hello" does go into the constant pool For fast-isel, I am seeing the high level clang IR and I need to emit a different load sequence to get the address of a normal variable as opposed to something in the constant pool (.rdata). it makes a difference for Mips because some objects, constant string for example, are accessed in a special way, apparanently to avoid using an extra GOT entry to access them. The GOT entry for the constant data (.rdata) section for that module is used and the address of the string relative to the .rdata reference is added to it. TIA. Reed