Example #1
0
int main(int argc, char **argv) {
  vary("*cheez: %d+%d*", 0,
       24);          // Also tests that '0' is not special as an array ender
  vary("*albeit*");  // Should not fail with no var args in vararg function
  vary2('Q', "%d*", 85);

  int maxxi = getMaxi(6, 2, 5, 21, 4, -10, 19);
  printf("maxxi:%d*\n", maxxi);
  double maxxD = getMaxD(6, (double)2.1, (double)5.1, (double)22.1, (double)4.1,
                         (double)-10.1, (double)19.1, (double)2);
  printf("maxxD:%.2f*\n", (float)maxxD);

  // And, as a function pointer
  void (*vfp)(const char * s, ...) = argc == 1211 ? NULL : vary;
  vfp("*vfp:%d,%d*", 22, 199);

  // ensure lists work properly when copied, reinited etc.
  varargs_listoffsets_main();

  return 0;
}
Example #2
0
bool SpirValidation::runOnModule(Module& M) {
  // Holder for initialized data in the module
  DataHolder Data;

  // Initialize instruction verifiers.
  InstructionExecutorList iel;
  // Bitcast instruction verifier.
  VerifyBitcast vb(&ErrHolder);
  iel.push_back(&vb);
  // Call instruction verifier.
  VerifyCall vc(&ErrHolder);
  iel.push_back(&vc);
  // Instruction type verifier.
  VerifyInstructionType vit(&ErrHolder, &Data);
  iel.push_back(&vit);

  // Initialize function verifiers.
  FunctionExecutorList fel;
  // Function prototype verifier.
  VerifyFunctionPrototype vfp(&ErrHolder, &Data);
  fel.push_back(&vfp);

  // Initialize module verifiers.
  ModuleExecutorList mel;
  // Module triple and target data layout verifier.
  VerifyTripleAndDataLayout vtdl(&ErrHolder, &Data);
  mel.push_back(&vtdl);
  // Module metadata kernels verifier.
  VerifyMetadataKernels vkmd(&ErrHolder, &Data);
  mel.push_back(&vkmd);
  // Module OCL version verifier.
  VerifyMetadataVersions voclv(
    &ErrHolder, VerifyMetadataVersions::VERSION_OCL);
  mel.push_back(&voclv);
  // Module SPIR version verifier.
  VerifyMetadataVersions vspirv(
    &ErrHolder, VerifyMetadataVersions::VERSION_SPIR);
  mel.push_back(&vspirv);
  // Module metadata optional core features verifier.
  VerifyMetadataCoreFeatures vmdcf(&ErrHolder, &Data);
  mel.push_back(&vmdcf);
  // Module metadata KHR extensions verifier.
  VerifyMetadataKHRExtensions vmdext(&ErrHolder, &Data);
  mel.push_back(&vmdext);
  // Module metadata compiler options verifier.
  VerifyMetadataCompilerOptions vmdco(&ErrHolder, &Data);
  mel.push_back(&vmdco);

  // Initialize basic block iterator.
  BasicBlockIterator BBI(iel);

  // Initialize function iterator.
  FunctionIterator FI(fel, &BBI);

  // Initialize module iterator.
  ModuleIterator MI(mel, &FI);

  // Run validation.
  MI.execute(M);

  return false;
}