74 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			74 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			C++
		
	
	
	
| // RUN: %clang_cc1 -std=c++11 -fms-compatibility -fsyntax-only -verify %s
 | |
| 
 | |
| int foo() __attribute__((optnone));
 | |
| int bar() __attribute__((optnone)) __attribute__((noinline));
 | |
| 
 | |
| int baz() __attribute__((always_inline)) __attribute__((optnone)); // expected-warning{{'always_inline' attribute ignored}} expected-note{{conflicting attribute is here}}
 | |
| int quz() __attribute__((optnone)) __attribute__((always_inline)); // expected-warning{{'always_inline' attribute ignored}} expected-note{{conflicting attribute is here}}
 | |
| 
 | |
| __attribute__((always_inline)) int baz1(); // expected-warning{{'always_inline' attribute ignored}}
 | |
| __attribute__((optnone)) int baz1() { return 1; } // expected-note{{conflicting attribute is here}}
 | |
| 
 | |
| __attribute__((optnone)) int quz1(); // expected-note{{conflicting attribute is here}}
 | |
| __attribute__((always_inline)) int quz1() { return 1; } // expected-warning{{'always_inline' attribute ignored}}
 | |
| 
 | |
| int bay() __attribute__((minsize)) __attribute__((optnone)); // expected-warning{{'minsize' attribute ignored}} expected-note{{conflicting}}
 | |
| int quy() __attribute__((optnone)) __attribute__((minsize)); // expected-warning{{'minsize' attribute ignored}} expected-note{{conflicting}}
 | |
| 
 | |
| __attribute__((minsize)) int bay1(); // expected-warning{{'minsize' attribute ignored}}
 | |
| __attribute__((optnone)) int bay1() { return 1; } // expected-note{{conflicting attribute is here}}
 | |
| 
 | |
| __attribute__((optnone)) int quy1(); // expected-note{{conflicting attribute is here}}
 | |
| __attribute__((minsize)) int quy1() { return 1; } // expected-warning{{'minsize' attribute ignored}}
 | |
| 
 | |
| __attribute__((always_inline)) // expected-warning{{'always_inline' attribute ignored}}
 | |
|   __attribute__((minsize)) // expected-warning{{'minsize' attribute ignored}}
 | |
| void bay2();
 | |
| __attribute__((optnone)) // expected-note 2 {{conflicting}}
 | |
| void bay2() {}
 | |
| 
 | |
| __forceinline __attribute__((optnone)) int bax(); // expected-warning{{'__forceinline' attribute ignored}} expected-note{{conflicting}}
 | |
| __attribute__((optnone)) __forceinline int qux(); // expected-warning{{'__forceinline' attribute ignored}} expected-note{{conflicting}}
 | |
| 
 | |
| __forceinline int bax2(); // expected-warning{{'__forceinline' attribute ignored}}
 | |
| __attribute__((optnone)) int bax2() { return 1; } // expected-note{{conflicting}}
 | |
| __attribute__((optnone)) int qux2(); // expected-note{{conflicting}}
 | |
| __forceinline int qux2() { return 1; } // expected-warning{{'__forceinline' attribute ignored}}
 | |
| 
 | |
| int globalVar __attribute__((optnone)); // expected-warning{{'optnone' attribute only applies to functions}}
 | |
| 
 | |
| int fubar(int __attribute__((optnone)), int); // expected-warning{{'optnone' attribute only applies to functions}}
 | |
| 
 | |
| struct A {
 | |
|   int aField __attribute__((optnone));  // expected-warning{{'optnone' attribute only applies to functions}}
 | |
| };
 | |
| 
 | |
| struct B {
 | |
|   void foo() __attribute__((optnone));
 | |
|   static void bar() __attribute__((optnone));
 | |
| };
 | |
| 
 | |
| // Verify that we can specify the [[clang::optnone]] syntax as well.
 | |
| 
 | |
| [[clang::optnone]]
 | |
| int foo2();
 | |
| [[clang::optnone]]
 | |
| int bar2() __attribute__((noinline));
 | |
| 
 | |
| [[clang::optnone]] // expected-note {{conflicting}}
 | |
| int baz2() __attribute__((always_inline)); // expected-warning{{'always_inline' attribute ignored}}
 | |
| 
 | |
| [[clang::optnone]] int globalVar2; //expected-warning{{'optnone' attribute only applies to functions}}
 | |
| 
 | |
| struct A2 {
 | |
|   [[clang::optnone]] int aField; // expected-warning{{'optnone' attribute only applies to functions}}
 | |
| };
 | |
| 
 | |
| struct B2 {
 | |
|   [[clang::optnone]]
 | |
|   void foo();
 | |
|   [[clang::optnone]]
 | |
|   static void bar();
 | |
| };
 | |
| 
 |