# [LLVM IR 4.0.1](https://en.wikipedia.org/wiki/LLVM#LLVM_Intermediate_Representation), <s>149</s> <s>145</s> 152 bytes

    declare i8@puts(i8*)@t=global[14 x i8]c"Hello, World!\00"define void@main(){call i8(i8*)@puts(i8*getelementptr([14 x i8],[14 x i8]*@t,i1 0,i1 0))ret void}

I'm not very good in LLVM IR, so chances are good, that it's possible with fewer bytes.

Ungolfed Version:

    declare i8 @puts(i8*) ; Declare puts from C standard. i8, was the shortest return type possible.

    @t=global [14 x i8] c"Hello, World!\00" ; Hello world string as global, to have a pointer to it.

    define void @main(){
        call i8(i8*) @puts(i8* getelementptr([14 x i8], [14 x i8] *@t, i1 0, i1 0)) ; Get pointer to constant "Hello, World!" and pass it to puts
        ret void
    }