]> granicus.if.org Git - clang/commitdiff
Add some more testcases.
authorMike Stump <mrs@apple.com>
Thu, 29 Oct 2009 23:22:14 +0000 (23:22 +0000)
committerMike Stump <mrs@apple.com>
Thu, 29 Oct 2009 23:22:14 +0000 (23:22 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85534 91177308-0d34-0410-b5e6-96231b3b80d8

test/CodeGen/object-size.c

index b6113fa0e5ab98ec28ac786cf6092c67344038e5..fc138e26fde94a3a2e1591b95af41f8026799fee 100644 (file)
@@ -11,6 +11,7 @@ static char *__inline_strcpy_chk (char *dest, const char *src) {
 
 char gbuf[63];
 char *gp;
+int gi, gj;
 
 void test1() {
   // CHECK:       movabsq $59, %rdx
@@ -45,17 +46,13 @@ void test4() {
 }
 
 void test5() {
+  // CHECK:       movb    $0, %al
+  // CHECK-NEXT   testb   %al, %al
   // CHECK:       call    ___inline_strcpy_chk
   strcpy(gp, "Hi there");
 }
 
 void test6() {
-  int i;
-  // CHECK:       call    ___inline_strcpy_chk
-  strcpy((++i, gbuf), "Hi there");
-}
-
-void test7() {
   char buf[57];
 
   // CHECK:       movabsq $53, %rdx
@@ -64,3 +61,30 @@ void test7() {
   // CHECK-NEXT:  call    ___strcpy_chk
   strcpy(&buf[4], "Hi there");
 }
+
+void test7() {
+  int i;
+  // CHECK-NOT:   call    ___strcpy_chk
+  // CHECK:       call    ___inline_strcpy_chk
+  strcpy((++i, gbuf), "Hi there");
+}
+
+void test8() {
+  char *buf[50];
+  // CHECK-NOT:   call    ___strcpy_chk
+  // CHECK:       call    ___inline_strcpy_chk
+  strcpy(buf[++gi], "Hi there");
+}
+
+void test9() {
+  // CHECK-NOT:   call    ___strcpy_chk
+  // CHECK:       call    ___inline_strcpy_chk
+  strcpy((char *)((++gi) + gj), "Hi there");
+}
+
+char **p;
+void test10() {
+  // CHECK-NOT:   call    ___strcpy_chk
+  // CHECK:       call    ___inline_strcpy_chk
+  strcpy(*(++p), "Hi there");
+}