16bcf2ba2SAlexander Richardson; RUN: llvm-as %s -o - | llvm-dis - | FileCheck %s -check-prefixes CHECK,PROG-AS0 26bcf2ba2SAlexander Richardson; RUN: llvm-as -data-layout "P200" %s -o - | llvm-dis | FileCheck %s -check-prefixes CHECK,PROG-AS200 3*4ad76852SYuanfang Chen; RUN: not --crash llvm-as -data-layout "P123456789" %s -o /dev/null 2>&1 | FileCheck %s -check-prefix BAD-DATALAYOUT 46bcf2ba2SAlexander Richardson; BAD-DATALAYOUT: LLVM ERROR: Invalid address space, must be a 24-bit integer 56bcf2ba2SAlexander Richardson 66bcf2ba2SAlexander Richardson; PROG-AS0-NOT: target datalayout 76bcf2ba2SAlexander Richardson; PROG-AS200: target datalayout = "P200" 86bcf2ba2SAlexander Richardson 96bcf2ba2SAlexander Richardson; Check that a function declaration without an address space (i.e. AS0) does not 106bcf2ba2SAlexander Richardson; have the addrspace() attribute printed if it is address space zero and it is 116bcf2ba2SAlexander Richardson; equal to the program address space. 126bcf2ba2SAlexander Richardson 136bcf2ba2SAlexander Richardson; PROG-AS0: define void @no_as() { 146bcf2ba2SAlexander Richardson; PROG-AS200: define void @no_as() addrspace(200) { 156bcf2ba2SAlexander Richardsondefine void @no_as() { 166bcf2ba2SAlexander Richardson ret void 176bcf2ba2SAlexander Richardson} 186bcf2ba2SAlexander Richardson 196bcf2ba2SAlexander Richardson; A function with an explicit addrspace should only have the addrspace printed 206bcf2ba2SAlexander Richardson; if it is non-zero or if the module has a nonzero datalayout 216bcf2ba2SAlexander Richardson; PROG-AS0: define void @explit_as0() { 226bcf2ba2SAlexander Richardson; PROG-AS200: define void @explit_as0() addrspace(0) { 236bcf2ba2SAlexander Richardsondefine void @explit_as0() addrspace(0) { 246bcf2ba2SAlexander Richardson ret void 256bcf2ba2SAlexander Richardson} 266bcf2ba2SAlexander Richardson 276bcf2ba2SAlexander Richardson; CHECK: define void @explit_as200() addrspace(200) { 286bcf2ba2SAlexander Richardsondefine void @explit_as200() addrspace(200) { 296bcf2ba2SAlexander Richardson ret void 306bcf2ba2SAlexander Richardson} 316bcf2ba2SAlexander Richardson 326bcf2ba2SAlexander Richardson; CHECK: define void @explicit_as3() addrspace(3) { 336bcf2ba2SAlexander Richardsondefine void @explicit_as3() addrspace(3) { 346bcf2ba2SAlexander Richardson ret void 356bcf2ba2SAlexander Richardson} 36