mirror of
				https://github.com/c64scene-ar/llvm-6502.git
				synced 2025-11-03 14:21:30 +00:00 
			
		
		
		
	don't care about leaks from tblgen, and I assume we don't care about valgrind errors in llvm-gcc/g++. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99115 91177308-0d34-0410-b5e6-96231b3b80d8
		
			
				
	
	
		
			68 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			TableGen
		
	
	
	
	
	
			
		
		
	
	
			68 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			TableGen
		
	
	
	
	
	
// Test for the OptionPreprocessor and related functionality.
 | 
						|
// RUN: tblgen -I %p/../../include --gen-llvmc %s -o %t
 | 
						|
// RUN: FileCheck -input-file %t %s
 | 
						|
// RUN: %compile_cxx -fexceptions -x c++ %t
 | 
						|
// XFAIL: vg_leak
 | 
						|
 | 
						|
include "llvm/CompilerDriver/Common.td"
 | 
						|
 | 
						|
def OptList : OptionList<[
 | 
						|
(switch_option "foo", (help "dummy")),
 | 
						|
(switch_option "bar", (help "dummy")),
 | 
						|
(switch_option "baz", (help "dummy")),
 | 
						|
(parameter_option "foo_p", (help "dummy")),
 | 
						|
(parameter_option "bar_p", (help "dummy")),
 | 
						|
(parameter_option "baz_p", (help "dummy")),
 | 
						|
(parameter_list_option "foo_l", (help "dummy"))
 | 
						|
]>;
 | 
						|
 | 
						|
def Preprocess : OptionPreprocessor<
 | 
						|
(case
 | 
						|
      // CHECK: W1
 | 
						|
      // CHECK: foo = false;
 | 
						|
      // CHECK: foo_p = "";
 | 
						|
      // CHECK: foo_l.clear();
 | 
						|
      (and (switch_on "foo"), (any_switch_on ["bar", "baz"])),
 | 
						|
           [(warning "W1"), (unset_option "foo"),
 | 
						|
                            (unset_option "foo_p"), (unset_option "foo_l")],
 | 
						|
      // CHECK: W2
 | 
						|
      // CHECK: foo = true;
 | 
						|
      // CHECK: bar = true;
 | 
						|
      // CHECK: baz = false;
 | 
						|
      // CHECK: foo_p = "asdf";
 | 
						|
      // CHECK: foo_l.clear();
 | 
						|
      // CHECK: foo_l.push_back("qwert");
 | 
						|
      // CHECK: foo_l.push_back("yuiop");
 | 
						|
      // CHECK: foo_l.push_back("asdf");
 | 
						|
      (and (switch_on ["foo", "bar"]), (any_empty ["foo_p", "bar_p"])),
 | 
						|
           [(warning "W2"), (set_option "foo"),
 | 
						|
                            (set_option "bar", true),
 | 
						|
                            (set_option "baz", false),
 | 
						|
                            (set_option "foo_p", "asdf"),
 | 
						|
                            (set_option "foo_l", ["qwert", "yuiop", "asdf"])],
 | 
						|
      // CHECK: W3
 | 
						|
      // CHECK: foo = true;
 | 
						|
      // CHECK: bar = true;
 | 
						|
      // CHECK: baz = true;
 | 
						|
      (and (empty ["foo_p", "bar_p"]), (any_not_empty ["baz_p"])),
 | 
						|
           [(warning "W3"), (set_option ["foo", "bar", "baz"])])
 | 
						|
>;
 | 
						|
 | 
						|
// Shut up warnings...
 | 
						|
def dummy : Tool<
 | 
						|
[(in_language "dummy"),
 | 
						|
 (out_language "dummy"),
 | 
						|
 (output_suffix "d"),
 | 
						|
 (command "dummy"),
 | 
						|
 (actions (case (switch_on "foo"), (error),
 | 
						|
                (switch_on "bar"), (error),
 | 
						|
                (switch_on "baz"), (error),
 | 
						|
                (not_empty "foo_p"), (error),
 | 
						|
                (not_empty "bar_p"), (error),
 | 
						|
                (not_empty "baz_p"), (error),
 | 
						|
                (not_empty "foo_l"), (error)))
 | 
						|
]>;
 | 
						|
 | 
						|
def Graph : CompilationGraph<[Edge<"root", "dummy">]>;
 | 
						|
 |