vfabi-demangler-fuzzer.cpp revision 1.1.1.1
1//===-- vfabi-demangler-fuzzer.cpp - Fuzzer VFABI using lib/Fuzzer   ------===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8//
9// Build tool to fuzz the demangler for the vector function ABI names.
10//
11//===----------------------------------------------------------------------===//
12
13#include "llvm/Analysis/VectorUtils.h"
14
15using namespace llvm;
16
17extern "C" int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size) {
18  const StringRef MangledName((const char *)Data, Size);
19  const auto Info = VFABI::tryDemangleForVFABI(MangledName);
20
21  // Do not optimize away the return value. Inspired by
22  // https://github.com/google/benchmark/blob/master/include/benchmark/benchmark.h#L307-L345
23  asm volatile("" : : "r,m"(Info) : "memory");
24
25  return 0;
26}
27