1f2cc2669SFangrui Song // RUN: %clang_cc1 -triple=x86_64-linux-gnu -emit-llvm -o - %s | FileCheck %s 2c45eaeabSJon Chesterfield 3*fd739804SFangrui Song // CHECK: @defn ={{.*}} global i32 undef 4c45eaeabSJon Chesterfield int defn [[clang::loader_uninitialized]]; 5c45eaeabSJon Chesterfield 6c45eaeabSJon Chesterfield // CHECK: @_ZL11defn_static = internal global i32 undef 7c45eaeabSJon Chesterfield static int defn_static [[clang::loader_uninitialized]] __attribute__((used)); 8c45eaeabSJon Chesterfield 9c45eaeabSJon Chesterfield // CHECK: @_ZZ4funcvE4data = internal global i32 undef func(void)10c45eaeabSJon Chesterfieldint* func(void) 11c45eaeabSJon Chesterfield { 12c45eaeabSJon Chesterfield static int data [[clang::loader_uninitialized]]; 13c45eaeabSJon Chesterfield return &data; 14c45eaeabSJon Chesterfield } 15c45eaeabSJon Chesterfield 16c45eaeabSJon Chesterfield class trivial 17c45eaeabSJon Chesterfield { 18c45eaeabSJon Chesterfield float x; 19c45eaeabSJon Chesterfield }; 20c45eaeabSJon Chesterfield 21*fd739804SFangrui Song // CHECK: @ut ={{.*}} global %class.trivial undef 22c45eaeabSJon Chesterfield trivial ut [[clang::loader_uninitialized]]; 23c45eaeabSJon Chesterfield 24*fd739804SFangrui Song // CHECK: @arr ={{.*}} global [32 x double] undef 25c45eaeabSJon Chesterfield double arr[32] __attribute__((loader_uninitialized)); 26c45eaeabSJon Chesterfield 27c45eaeabSJon Chesterfield // Defining as arr2[] [[clang..]] raises the error: attribute cannot be applied to types 28*fd739804SFangrui Song // CHECK: @arr2 ={{.*}} global [4 x double] undef 29c45eaeabSJon Chesterfield double arr2 [[clang::loader_uninitialized]] [4]; 30bcaa806aSJon Chesterfield 31bcaa806aSJon Chesterfield template<typename T> struct templ{T * t;}; 32bcaa806aSJon Chesterfield 33*fd739804SFangrui Song // CHECK: @templ_int ={{.*}} global %struct.templ undef 34bcaa806aSJon Chesterfield templ<int> templ_int [[clang::loader_uninitialized]]; 35bcaa806aSJon Chesterfield 36*fd739804SFangrui Song // CHECK: @templ_trivial ={{.*}} global %struct.templ.0 undef 37bcaa806aSJon Chesterfield templ<trivial> templ_trivial [[clang::loader_uninitialized]]; 38bcaa806aSJon Chesterfield 39*fd739804SFangrui Song // CHECK: @templ_incomplete ={{.*}} global %struct.templ.1 undef 40bcaa806aSJon Chesterfield struct incomplete; 41bcaa806aSJon Chesterfield templ<incomplete> templ_incomplete [[clang::loader_uninitialized]]; 42