Ну я вообще-то совсем другой аспект его архитектуры имел ввиду. (абстрагированность фронтэндов от архитектуры target-а). Впрочем адресация также в общем-то часть этого принципа.
Я бы не сказал так. Скорее LLVM оставляет вопрос реализации адресного пространства полностью на усмотрение разработчика бэкенда. В частности хотя LLVM IR имеет тип "pointer" (указатель), но не допускает арифметики с указателями (иначе говоря, он ничего не знает и не зависит от линейности или иных свойств адресного пространства), вместо нее имеются инструкции вроде getelementptr (которые позволяют обойтись без этой самой адресной/указательной арифметики). Плюс указатели могут ссылаться на разные адресные пространства.из этой самой архитектуры следует только то что она не рассматривает проблему ограниченности адресуемого пространства совсем, ну т.е. подразумевается что есть пространство адресов которого ХВАТАЕТ (т.е. подразумевается что оно бесконечное???)
Т.е. даже обычную страничную адресацию не особо сложно реализовать (вернее, правильнее сказать, заюзать страничную адресацию имеющуюся в существующем железе), причем потенциально более чем одним способом. (вопрос в выборе/поиске оптимума)
Вообще LLVM - штука крайне гибкая в плане адаптации к любым архитектурам. Грубо говоря он дает разработчикам бэкендов набор инструментов оптимизированных для типичных современных процессоров (да, желательно с большим кол-вом регистров и большим линейным адресным пространством, тогда удастся имеющиеся уже инструменты заюзать максмимально, меньше доделывать придется), но что и как из этого использовать (или нет) - практически полностью на усмотрение разработчика, если что-то не очень подходит для архитектуры назначения (target), ничто не мешает доработать или сделать какие-то собственные элементы. (к примеру, скажем, register allocator учитывающий альтернативные регистры Z80 или тот же механизм paged-адресации) Вон даже javascript очень успешно используется в качестве "процессора" (проект emscripten), хотя, очевидно, там вообще нет никакого ни "адресного пространства", ни "регистров" в терминологии используемой для микропроцессоров.
Да, конечно, у некоторых фронтэндов (вроде clang, С/С++ компилятора) есть собственные предположения насчет линейности адресного пространства, тем не менее, такие фронтэнды все равно можно будет использовать без доработок или с минимальными доработками. Скажем, если бэкенд реализует страничную адресацию и таким образом "скрывает" нелинейность адресного пространства от фронтендов, нужно будет просто иметь ввиду что структурами, размер которых сравним с или превышает размер страниц, не стоит злоупотреблять, чтоб не заставлять бэкенд генерировать супер-неэффективный код.