1f79470583759d20c20268711e6111461aefa8461Jim Grosbach// REQUIRES: arm-registered-target 21ed1a594e9befc91ebf00d81b41a2fdfab862657Rafael Espindola// RUN: %clang_cc1 -triple arm-unknown-linux-gnueabi -emit-llvm -o - %s | FileCheck %s 334771b594ca8cdf8cd2e40b27170efa4ed2833c5Daniel Dunbar 475d0f82e50565cc4cf71140ecf2141a40a3a5af9Rafael Espindola// CHECK: declare i32 @printf(i8*, ...) 534771b594ca8cdf8cd2e40b27170efa4ed2833c5Daniel Dunbarvoid f0() { 634771b594ca8cdf8cd2e40b27170efa4ed2833c5Daniel Dunbar printf("a\n"); 734771b594ca8cdf8cd2e40b27170efa4ed2833c5Daniel Dunbar} 834771b594ca8cdf8cd2e40b27170efa4ed2833c5Daniel Dunbar 975d0f82e50565cc4cf71140ecf2141a40a3a5af9Rafael Espindola// CHECK: call void @exit 1034771b594ca8cdf8cd2e40b27170efa4ed2833c5Daniel Dunbar// CHECK: unreachable 1134771b594ca8cdf8cd2e40b27170efa4ed2833c5Daniel Dunbarvoid f1() { 1234771b594ca8cdf8cd2e40b27170efa4ed2833c5Daniel Dunbar exit(1); 1334771b594ca8cdf8cd2e40b27170efa4ed2833c5Daniel Dunbar} 14c285372e69f42d95ca638d74abd1f46bd7b77a96Eli Friedman 15c285372e69f42d95ca638d74abd1f46bd7b77a96Eli Friedman// CHECK: call i8* @strstr{{.*}} nounwind 16c285372e69f42d95ca638d74abd1f46bd7b77a96Eli Friedmanchar* f2(char* a, char* b) { 17c285372e69f42d95ca638d74abd1f46bd7b77a96Eli Friedman return __builtin_strstr(a, b); 18c285372e69f42d95ca638d74abd1f46bd7b77a96Eli Friedman} 1987198c304cc1fae48b7a06ce9faf8b4017981059Jakob Stoklund Olesen 2087198c304cc1fae48b7a06ce9faf8b4017981059Jakob Stoklund Olesen// frexp is NOT readnone. It writes to its pointer argument. 2187198c304cc1fae48b7a06ce9faf8b4017981059Jakob Stoklund Olesen// <rdar://problem/10070234> 2287198c304cc1fae48b7a06ce9faf8b4017981059Jakob Stoklund Olesen// 2387198c304cc1fae48b7a06ce9faf8b4017981059Jakob Stoklund Olesen// CHECK: f3 2487198c304cc1fae48b7a06ce9faf8b4017981059Jakob Stoklund Olesen// CHECK: call double @frexp(double % 2587198c304cc1fae48b7a06ce9faf8b4017981059Jakob Stoklund Olesen// CHECK-NOT: readnone 2687198c304cc1fae48b7a06ce9faf8b4017981059Jakob Stoklund Olesen// CHECK: call float @frexpf(float % 2787198c304cc1fae48b7a06ce9faf8b4017981059Jakob Stoklund Olesen// CHECK-NOT: readnone 2887198c304cc1fae48b7a06ce9faf8b4017981059Jakob Stoklund Olesen// CHECK: call double @frexpl(double % 2987198c304cc1fae48b7a06ce9faf8b4017981059Jakob Stoklund Olesen// CHECK-NOT: readnone 3087198c304cc1fae48b7a06ce9faf8b4017981059Jakob Stoklund Olesen// 3187198c304cc1fae48b7a06ce9faf8b4017981059Jakob Stoklund Olesen// Same thing for modf and friends. 3287198c304cc1fae48b7a06ce9faf8b4017981059Jakob Stoklund Olesen// 3387198c304cc1fae48b7a06ce9faf8b4017981059Jakob Stoklund Olesen// CHECK: call double @modf(double % 3487198c304cc1fae48b7a06ce9faf8b4017981059Jakob Stoklund Olesen// CHECK-NOT: readnone 3587198c304cc1fae48b7a06ce9faf8b4017981059Jakob Stoklund Olesen// CHECK: call float @modff(float % 3687198c304cc1fae48b7a06ce9faf8b4017981059Jakob Stoklund Olesen// CHECK-NOT: readnone 3787198c304cc1fae48b7a06ce9faf8b4017981059Jakob Stoklund Olesen// CHECK: call double @modfl(double % 3887198c304cc1fae48b7a06ce9faf8b4017981059Jakob Stoklund Olesen// CHECK-NOT: readnone 3987198c304cc1fae48b7a06ce9faf8b4017981059Jakob Stoklund Olesen// 4087198c304cc1fae48b7a06ce9faf8b4017981059Jakob Stoklund Olesen// CHECK: call double @remquo(double % 4187198c304cc1fae48b7a06ce9faf8b4017981059Jakob Stoklund Olesen// CHECK-NOT: readnone 4287198c304cc1fae48b7a06ce9faf8b4017981059Jakob Stoklund Olesen// CHECK: call float @remquof(float % 4387198c304cc1fae48b7a06ce9faf8b4017981059Jakob Stoklund Olesen// CHECK-NOT: readnone 4487198c304cc1fae48b7a06ce9faf8b4017981059Jakob Stoklund Olesen// CHECK: call double @remquol(double % 4587198c304cc1fae48b7a06ce9faf8b4017981059Jakob Stoklund Olesen// CHECK-NOT: readnone 4687198c304cc1fae48b7a06ce9faf8b4017981059Jakob Stoklund Olesen// CHECK: ret 4787198c304cc1fae48b7a06ce9faf8b4017981059Jakob Stoklund Olesenint f3(double x) { 4887198c304cc1fae48b7a06ce9faf8b4017981059Jakob Stoklund Olesen int e; 4987198c304cc1fae48b7a06ce9faf8b4017981059Jakob Stoklund Olesen __builtin_frexp(x, &e); 5087198c304cc1fae48b7a06ce9faf8b4017981059Jakob Stoklund Olesen __builtin_frexpf(x, &e); 5187198c304cc1fae48b7a06ce9faf8b4017981059Jakob Stoklund Olesen __builtin_frexpl(x, &e); 5287198c304cc1fae48b7a06ce9faf8b4017981059Jakob Stoklund Olesen __builtin_modf(x, &e); 5387198c304cc1fae48b7a06ce9faf8b4017981059Jakob Stoklund Olesen __builtin_modff(x, &e); 5487198c304cc1fae48b7a06ce9faf8b4017981059Jakob Stoklund Olesen __builtin_modfl(x, &e); 5587198c304cc1fae48b7a06ce9faf8b4017981059Jakob Stoklund Olesen __builtin_remquo(x, x, &e); 5687198c304cc1fae48b7a06ce9faf8b4017981059Jakob Stoklund Olesen __builtin_remquof(x, x, &e); 5787198c304cc1fae48b7a06ce9faf8b4017981059Jakob Stoklund Olesen __builtin_remquol(x, x, &e); 5887198c304cc1fae48b7a06ce9faf8b4017981059Jakob Stoklund Olesen return e; 5987198c304cc1fae48b7a06ce9faf8b4017981059Jakob Stoklund Olesen} 60