| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 | 
							- // Copyright 2020 The Abseil Authors.
 
- //
 
- // Licensed under the Apache License, Version 2.0 (the "License");
 
- // you may not use this file except in compliance with the License.
 
- // You may obtain a copy of the License at
 
- //
 
- //      https://www.apache.org/licenses/LICENSE-2.0
 
- //
 
- // Unless required by applicable law or agreed to in writing, software
 
- // distributed under the License is distributed on an "AS IS" BASIS,
 
- // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 
- // See the License for the specific language governing permissions and
 
- // limitations under the License.
 
- #include "gtest/gtest.h"
 
- #include "absl/base/optimization.h"
 
- #include "absl/strings/string_view.h"
 
- // This test by itself does not do anything fancy, but it serves as binary I can
 
- // query in shell test.
 
- namespace {
 
- template <class T>
 
- void DoNotOptimize(const T& var) {
 
- #ifdef __GNUC__
 
-   asm volatile("" : "+m"(const_cast<T&>(var)));
 
- #else
 
-   std::cout << (void*)&var;
 
- #endif
 
- }
 
- int very_long_int_variable_name ABSL_INTERNAL_UNIQUE_SMALL_NAME() = 0;
 
- char very_long_str_variable_name[] ABSL_INTERNAL_UNIQUE_SMALL_NAME() = "abc";
 
- TEST(UniqueSmallName, NonAutomaticVar) {
 
-   EXPECT_EQ(very_long_int_variable_name, 0);
 
-   EXPECT_EQ(absl::string_view(very_long_str_variable_name), "abc");
 
- }
 
- int VeryLongFreeFunctionName() ABSL_INTERNAL_UNIQUE_SMALL_NAME();
 
- TEST(UniqueSmallName, FreeFunction) {
 
-   DoNotOptimize(&VeryLongFreeFunctionName);
 
-   EXPECT_EQ(VeryLongFreeFunctionName(), 456);
 
- }
 
- int VeryLongFreeFunctionName() { return 456; }
 
- struct VeryLongStructName {
 
-   explicit VeryLongStructName(int i);
 
-   int VeryLongMethodName() ABSL_INTERNAL_UNIQUE_SMALL_NAME();
 
-   static int VeryLongStaticMethodName() ABSL_INTERNAL_UNIQUE_SMALL_NAME();
 
-  private:
 
-   int fld;
 
- };
 
- TEST(UniqueSmallName, Struct) {
 
-   VeryLongStructName var(10);
 
-   DoNotOptimize(var);
 
-   DoNotOptimize(&VeryLongStructName::VeryLongMethodName);
 
-   DoNotOptimize(&VeryLongStructName::VeryLongStaticMethodName);
 
-   EXPECT_EQ(var.VeryLongMethodName(), 10);
 
-   EXPECT_EQ(VeryLongStructName::VeryLongStaticMethodName(), 123);
 
- }
 
- VeryLongStructName::VeryLongStructName(int i) : fld(i) {}
 
- int VeryLongStructName::VeryLongMethodName() { return fld; }
 
- int VeryLongStructName::VeryLongStaticMethodName() { return 123; }
 
- }  // namespace
 
 
  |