brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.6 KiB · 5584254 Raw
130 lines · c
1// RUN: %clang_profgen -O3 -o %t %s2// RUN: %run %t %t.out.1 %t.out.2 %t.out.3 %t.out.43// RUN: cat %t.out.1 | FileCheck %s4// RUN: diff %t.out.1 %t.out.25// RUN: diff %t.out.2 %t.out.36// RUN: diff %t.out.3 %t.out.47 8#include <stdint.h>9#include <stdio.h>10#include <stdlib.h>11#include <string.h>12 13typedef struct ProfBufferIO ProfBufferIO;14ProfBufferIO *lprofCreateBufferIOInternal(void *File, uint32_t BufferSz);15void lprofDeleteBufferIO(ProfBufferIO *BufferIO);16 17int lprofBufferIOWrite(ProfBufferIO *BufferIO, const char *Data, uint32_t Size);18int lprofBufferIOFlush(ProfBufferIO *BufferIO);19 20int __llvm_profile_runtime = 0;21 22const char *SmallData = "ABC\n";23const char *MediumData =24    "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\n";25char LargeData[10 * 1024];26int main(int argc, const char *argv[]) {27  ProfBufferIO *BufferIO;28  FILE *File[4];29  uint32_t IOBufferSize[4] = {8, 128, 8 * 1024, 11 * 1024};30  int I, J;31  if (argc < 5)32    return 1;33 34  for (I = 0; I < 10 * 1024 - 2; I++)35    LargeData[I] = 'A';36 37  LargeData[I++] = '\n';38  LargeData[I++] = '\0';39 40  for (J = 0; J < 4; J++) {41    File[J] = fopen(argv[1 + J], "w");42    if (!File[J])43      return 1;44 45    BufferIO = lprofCreateBufferIOInternal(File[J], IOBufferSize[J]);46 47    lprofBufferIOWrite(BufferIO, "Short Strings:\n",48                       strlen("Short Strings:\n"));49    for (I = 0; I < 1024; I++) {50      lprofBufferIOWrite(BufferIO, SmallData, strlen(SmallData));51    }52    lprofBufferIOWrite(BufferIO, "Long Strings:\n", strlen("Long Strings:\n"));53    for (I = 0; I < 1024; I++) {54      lprofBufferIOWrite(BufferIO, MediumData, strlen(MediumData));55    }56    lprofBufferIOWrite(BufferIO, "Extra Long Strings:\n",57                      strlen("Extra Long Strings:\n"));58    for (I = 0; I < 10; I++) {59      lprofBufferIOWrite(BufferIO, LargeData, strlen(LargeData));60    }61    lprofBufferIOWrite(BufferIO, "Mixed Strings:\n", strlen("Mixed Strings:\n"));62    for (I = 0; I < 1024; I++) {63      lprofBufferIOWrite(BufferIO, MediumData, strlen(MediumData));64      lprofBufferIOWrite(BufferIO, SmallData, strlen(SmallData));65    }66    lprofBufferIOWrite(BufferIO, "Endings:\n", strlen("Endings:\n"));67    lprofBufferIOWrite(BufferIO, "END\n", strlen("END\n"));68    lprofBufferIOWrite(BufferIO, "ENDEND\n", strlen("ENDEND\n"));69    lprofBufferIOWrite(BufferIO, "ENDENDEND\n", strlen("ENDENDEND\n"));70    lprofBufferIOWrite(BufferIO, "ENDENDENDEND\n", strlen("ENDENDENDEND\n"));71    lprofBufferIOFlush(BufferIO);72 73    lprofDeleteBufferIO(BufferIO);74 75    fclose(File[J]);76  }77  return 0;78}79 80// CHECK-LABEL: Short Strings:81// CHECK: ABC82// CHECK-NEXT: ABC83// CHECK-NEXT: ABC84// CHECK-NEXT: ABC85// CHECK-NEXT: ABC86// CHECK-NEXT: ABC87// CHECK-NEXT: ABC88// CHECK-NEXT: ABC89// CHECK-NEXT: ABC90// CHECK-NEXT: ABC91// CHECK-NEXT: ABC92// CHECK-NEXT: ABC93// CHECK-NEXT: ABC94// CHECK-NEXT: ABC95// CHECK-LABEL: Long Strings:96// CHECK-NEXT: ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz012345678997// CHECK-NEXT: ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz012345678998// CHECK-NEXT: ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz012345678999// CHECK-NEXT: ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789100// CHECK-NEXT: ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789101// CHECK-NEXT: ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789102// CHECK-NEXT: ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789103// CHECK-NEXT: ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789104// CHECK-NEXT: ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789105// CHECK-NEXT: ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789106// CHECK-NEXT: ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789107// CHECK-NEXT: ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789108// CHECK-LABEL: Mixed Strings:109// CHECK: ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789110// CHECK-NEXT: ABC111// CHECK-NEXT: ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789112// CHECK-NEXT: ABC113// CHECK-NEXT: ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789114// CHECK-NEXT: ABC115// CHECK-NEXT: ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789116// CHECK-NEXT: ABC117// CHECK-NEXT: ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789118// CHECK-NEXT: ABC119// CHECK-NEXT: ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789120// CHECK-NEXT: ABC121// CHECK-NEXT: ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789122// CHECK-NEXT: ABC123// CHECK-NEXT: ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789124// CHECK-NEXT: ABC125// CHECK-LABEL: Endings:126// CHECK: END127// CHECK-NEXT: ENDEND128// CHECK-NEXT: ENDENDEND129// CHECK-NEXT: ENDENDENDEND130