// RUN: %clang_cc1 -triple amdgcn-amd-amdhsa \ // RUN: -fclangir -emit-cir %s -o %t.cir // RUN: FileCheck --input-file=%t.cir %s --check-prefix=CIR // RUN: %clang_cc1 -triple amdgcn-amd-amdhsa \ // RUN: -fclangir -emit-llvm %s -o %t.ll // RUN: FileCheck --input-file=%t.ll %s --check-prefix=LLVM // RUN: %clang_cc1 -triple amdgcn-amd-amdhsa \ // RUN: -emit-llvm %s -o %t.ll // RUN: FileCheck --input-file=%t.ll %s --check-prefix=OGCG void foo() { const char fmt[] = "hello"; const char *tmp = fmt; while (*tmp++) ; } // CIR-LABEL: cir.func{{.*}} @_Z3foov() // CIR: %[[FMT_RAW:.*]] = cir.alloca !cir.array, !cir.ptr, target_address_space(5)>, ["fmt" // CIR-NEXT: %[[TMP_RAW:.*]] = cir.alloca !cir.ptr, !cir.ptr, target_address_space(5)>, ["tmp" // CIR-DAG: %[[FMT:.*]] = cir.cast address_space %[[FMT_RAW]] : !cir.ptr, target_address_space(5)> -> !cir.ptr> // CIR-DAG: %[[TMP:.*]] = cir.cast address_space %[[TMP_RAW]] : !cir.ptr, target_address_space(5)> -> !cir.ptr> // CIR: %[[DECAY:.*]] = cir.cast array_to_ptrdecay %[[FMT]] : !cir.ptr> -> !cir.ptr // CIR: cir.store{{.*}} %[[DECAY]], %[[TMP]] : !cir.ptr, !cir.ptr> // LLVM-LABEL: define{{.*}} void @_Z3foov() // LLVM: %[[FMT:.*]] = alloca [6 x i8], i64 1, align 1, addrspace(5) // LLVM-NEXT: %[[TMP:.*]] = alloca ptr, i64 1, align 8, addrspace(5) // LLVM-DAG: %[[FMT_CAST:.*]] = addrspacecast ptr addrspace(5) %[[FMT]] to ptr // LLVM-DAG: %[[TMP_CAST:.*]] = addrspacecast ptr addrspace(5) %[[TMP]] to ptr // LLVM: %[[DECAY:.*]] = getelementptr {{.*}} ptr %[[FMT_CAST]], // LLVM: store ptr %[[DECAY]], ptr %[[TMP_CAST]], align 8 // OGCG-LABEL: define{{.*}} void @_Z3foov() // OGCG: %[[FMT:.*]] = alloca [6 x i8], align 1, addrspace(5) // OGCG-NEXT: %[[TMP:.*]] = alloca ptr, align 8, addrspace(5) // OGCG-NEXT: %[[FMT_CAST:.*]] = addrspacecast ptr addrspace(5) %[[FMT]] to ptr // OGCG-NEXT: %[[TMP_CAST:.*]] = addrspacecast ptr addrspace(5) %[[TMP]] to ptr // OGCG: %[[DECAY:.*]] = getelementptr inbounds [6 x i8], ptr %[[FMT_CAST]], i64 0, i64 0 // OGCG: store ptr %[[DECAY]], ptr %[[TMP_CAST]], align 8