2008-09-22 22:46:19 +02:00
|
|
|
//===- Common.td - Common definitions for LLVMC2 ----------*- tablegen -*-===//
|
2008-03-23 09:57:20 +01:00
|
|
|
//
|
|
|
|
// The LLVM Compiler Infrastructure
|
|
|
|
//
|
|
|
|
// This file is distributed under the University of Illinois Open Source
|
|
|
|
// License. See LICENSE.TXT for details.
|
|
|
|
//
|
|
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
//
|
2009-07-07 18:09:05 +02:00
|
|
|
// This file contains common definitions used in llvmc tool description files.
|
2008-03-23 09:57:20 +01:00
|
|
|
//
|
|
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
|
|
|
|
class Tool<list<dag> l> {
|
|
|
|
list<dag> properties = l;
|
|
|
|
}
|
|
|
|
|
2008-12-07 17:41:11 +01:00
|
|
|
// Possible Tool properties.
|
2008-03-23 09:57:20 +01:00
|
|
|
|
|
|
|
def in_language;
|
|
|
|
def out_language;
|
|
|
|
def output_suffix;
|
2010-02-23 10:04:44 +01:00
|
|
|
def command;
|
|
|
|
def out_file_option;
|
|
|
|
def in_file_option;
|
2008-03-23 09:57:20 +01:00
|
|
|
def join;
|
|
|
|
def sink;
|
2010-02-23 10:04:28 +01:00
|
|
|
def works_on_empty;
|
2008-12-07 17:41:11 +01:00
|
|
|
def actions;
|
2008-03-23 09:57:20 +01:00
|
|
|
|
2008-12-07 17:41:11 +01:00
|
|
|
// Possible option types.
|
2008-03-23 09:57:20 +01:00
|
|
|
|
2008-05-30 08:22:52 +02:00
|
|
|
def alias_option;
|
2008-03-23 09:57:20 +01:00
|
|
|
def switch_option;
|
2010-07-19 05:16:25 +02:00
|
|
|
def switch_list_option;
|
2008-03-23 09:57:20 +01:00
|
|
|
def parameter_option;
|
|
|
|
def parameter_list_option;
|
|
|
|
def prefix_option;
|
|
|
|
def prefix_list_option;
|
|
|
|
|
2008-12-07 17:41:11 +01:00
|
|
|
// Possible option properties.
|
2008-03-23 09:57:20 +01:00
|
|
|
|
|
|
|
def help;
|
2008-11-28 01:13:25 +01:00
|
|
|
def hidden;
|
2009-07-07 18:08:41 +02:00
|
|
|
def init;
|
2009-01-28 04:47:20 +01:00
|
|
|
def multi_val;
|
|
|
|
def one_or_more;
|
2010-03-05 05:46:39 +01:00
|
|
|
def zero_or_more;
|
2009-12-15 04:04:52 +01:00
|
|
|
def optional;
|
2008-11-28 01:13:25 +01:00
|
|
|
def really_hidden;
|
2008-03-23 09:57:20 +01:00
|
|
|
def required;
|
2009-12-07 19:25:54 +01:00
|
|
|
def comma_separated;
|
2010-02-23 10:04:13 +01:00
|
|
|
def forward_not_split;
|
2008-03-23 09:57:20 +01:00
|
|
|
|
2008-05-30 08:08:50 +02:00
|
|
|
// The 'case' construct.
|
|
|
|
def case;
|
|
|
|
|
2009-07-07 18:08:41 +02:00
|
|
|
// Boolean constants.
|
|
|
|
def true;
|
|
|
|
def false;
|
|
|
|
|
2008-12-07 17:41:11 +01:00
|
|
|
// Boolean operators.
|
|
|
|
def and;
|
|
|
|
def or;
|
2009-09-10 18:21:38 +02:00
|
|
|
def not;
|
2008-12-07 17:41:11 +01:00
|
|
|
|
2008-05-30 08:08:50 +02:00
|
|
|
// Primitive tests.
|
2008-05-06 18:36:06 +02:00
|
|
|
def switch_on;
|
|
|
|
def parameter_equals;
|
|
|
|
def element_in_list;
|
2008-05-30 08:08:50 +02:00
|
|
|
def input_languages_contain;
|
2009-09-10 18:22:02 +02:00
|
|
|
def empty;
|
2008-05-30 08:19:52 +02:00
|
|
|
def not_empty;
|
2008-05-30 08:10:19 +02:00
|
|
|
def default;
|
2009-09-28 03:16:42 +02:00
|
|
|
def single_input_file;
|
|
|
|
def multiple_input_files;
|
2009-10-17 22:09:29 +02:00
|
|
|
def any_switch_on;
|
|
|
|
def any_not_empty;
|
2009-10-22 06:15:24 +02:00
|
|
|
def any_empty;
|
2008-05-06 20:15:12 +02:00
|
|
|
|
2008-12-07 17:41:11 +01:00
|
|
|
// Possible actions.
|
|
|
|
|
|
|
|
def append_cmd;
|
|
|
|
def forward;
|
|
|
|
def forward_as;
|
2009-12-07 18:03:05 +01:00
|
|
|
def forward_value;
|
|
|
|
def forward_transformed_value;
|
2008-12-07 17:41:11 +01:00
|
|
|
def stop_compilation;
|
2010-02-23 10:04:44 +01:00
|
|
|
def no_out_file;
|
2008-12-07 17:41:11 +01:00
|
|
|
def unpack_values;
|
2009-10-17 22:09:29 +02:00
|
|
|
def warning;
|
2008-12-17 03:47:01 +01:00
|
|
|
def error;
|
2009-12-17 08:49:16 +01:00
|
|
|
def set_option;
|
2009-10-17 22:09:29 +02:00
|
|
|
def unset_option;
|
2008-05-06 18:36:06 +02:00
|
|
|
|
2010-08-23 21:24:08 +02:00
|
|
|
// Increase the edge weight.
|
2008-05-30 08:08:50 +02:00
|
|
|
def inc_weight;
|
|
|
|
|
2009-10-17 22:09:29 +02:00
|
|
|
// Option list - a single place to specify options.
|
2008-05-30 08:26:08 +02:00
|
|
|
class OptionList<list<dag> l> {
|
|
|
|
list<dag> options = l;
|
|
|
|
}
|
|
|
|
|
2009-10-17 22:09:29 +02:00
|
|
|
// Option preprocessor - actions taken during plugin loading.
|
|
|
|
class OptionPreprocessor<dag d> {
|
|
|
|
dag preprocessor = d;
|
|
|
|
}
|
|
|
|
|
2008-03-23 09:57:20 +01:00
|
|
|
// Map from suffixes to language names
|
|
|
|
|
2010-08-24 01:21:23 +02:00
|
|
|
def lang_to_suffixes;
|
2008-03-23 09:57:20 +01:00
|
|
|
|
2010-08-24 01:21:23 +02:00
|
|
|
class LanguageMap<list<dag> l> {
|
|
|
|
list<dag> map = l;
|
2008-03-23 09:57:20 +01:00
|
|
|
}
|
|
|
|
|
2008-05-06 18:35:25 +02:00
|
|
|
// Compilation graph
|
2008-03-23 09:57:20 +01:00
|
|
|
|
2010-08-24 01:21:23 +02:00
|
|
|
def edge;
|
|
|
|
def optional_edge;
|
2008-05-06 18:36:06 +02:00
|
|
|
|
2010-08-24 01:21:23 +02:00
|
|
|
class CompilationGraph<list<dag> l> {
|
|
|
|
list<dag> edges = l;
|
2008-03-23 09:57:20 +01:00
|
|
|
}
|