Mercurial > hg > CbC > CbC_gcc
view gcc/testsuite/g++.dg/torture/pr34850.C @ 145:1830386684a0
gcc-9.2.0
author | anatofuz |
---|---|
date | Thu, 13 Feb 2020 11:34:05 +0900 |
parents | 84e7813d76e9 |
children |
line wrap: on
line source
/* { dg-do compile } */ /* { dg-skip-if "" { *-*-* } { "-O0" } { "" } } */ /* { dg-options "-ffat-lto-objects" } */ /* { dg-additional-options "-Wno-return-type" } */ typedef unsigned char uint8_t; typedef unsigned int uint32_t; typedef uint8_t byte; typedef uint32_t u32bit; __extension__ typedef __SIZE_TYPE__ size_t; extern "C" { extern void __warn_memset_zero_len (void) __attribute__((__warning__ (""))); extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) void * memset (void *__dest, int __ch, size_t __len) throw () { if (__builtin_constant_p (__len) && __len == 0) __warn_memset_zero_len (); return __dest; } } inline void clear_mem(void* ptr, u32bit n) { memset(ptr, 0, n); } template<typename T> class MemoryRegion { public: u32bit size() const { } const T* begin() const { } void set(const T in[], u32bit n) { create(n); } void set(const MemoryRegion<T>& in) { set(in.begin(), in.size()); } void clear() { clear_mem(buf, allocated); } void create(u32bit); MemoryRegion() { used = allocated = 0; } mutable T* buf; mutable u32bit used; mutable u32bit allocated; }; template<typename T> void MemoryRegion<T>::create(u32bit n) { if(n <= allocated) { clear(); } } template<typename T> class SecureVector : public MemoryRegion<T> { public: SecureVector<T>& operator=(const MemoryRegion<T>& in) { if(this != &in) this->set(in); } }; class OctetString { public: SecureVector<byte> bits_of() const { } OctetString& operator^=(const OctetString&); void change(const MemoryRegion<byte>& in) { bits = in; } OctetString(const MemoryRegion<byte>& in) { change(in); } SecureVector<byte> bits; }; OctetString& OctetString::operator^=(const OctetString& k) { if(&k == this) { bits.clear(); } } bool __attribute__((flatten)) operator==(const OctetString& s1, const OctetString& s2) { return (s1.bits_of() == s2.bits_of()); }