brintos

brintos / llvm-project-archived public Read only

0
0
Text · 900 B · 4095d67 Raw
38 lines · cpp
1// STL allocators should not have unrelated-cast tests applied2// RUN: %clang_cc1 -flto -triple x86_64-unknown-linux -fvisibility=hidden -fsanitize=cfi-unrelated-cast -emit-llvm -o - %s | FileCheck %s3 4#include <stddef.h>5 6template<class T>7class myalloc {8 public:9  // CHECK: define{{.*}}allocateE{{.}}10  // CHECK-NOT: llvm.type.test11  T *allocate(size_t sz) {12    return (T*)::operator new(sz);13  }14 15  // CHECK: define{{.*}}allocateE{{.}}PKv16  // CHECK-NOT: llvm.type.test17  T *allocate(size_t sz, const void *ptr) {18    return (T*)::operator new(sz);19  }20 21  // CHECK: define{{.*}}differentName22  // CHECK: llvm.type.test23  T *differentName(size_t sz, const void *ptr) {24    return (T*)::operator new(sz);25  }26};27 28class C1 {29  virtual void f() {}30};31 32void f1() {33  myalloc<C1> allocator;34  (void)allocator.allocate(16);35  (void)allocator.allocate(16, 0);36  (void)allocator.differentName(16, 0);37}38