OSDN Git Service

[WIP] Initial code for module flags.
authorBill Wendling <isanbard@gmail.com>
Sat, 11 Feb 2012 11:38:06 +0000 (11:38 +0000)
committerBill Wendling <isanbard@gmail.com>
Sat, 11 Feb 2012 11:38:06 +0000 (11:38 +0000)
commitd34cb1e09f5e4b3feb7305346655b83ad2f67773
tree3c9b16358ee97a16da10b8eb0ed4e75420ed6b72
parenta819c397e71adf0fede275ad4abde1947bb21086
[WIP] Initial code for module flags.

Module flags are key-value pairs associated with the module. They include a
'behavior' value, indicating how module flags react when mergine two
files. Normally, it's just the union of the two module flags. But if two module
flags have the same key, then the resulting flags are dictated by the behaviors.

Allowable behaviors are:

     Error
       Emits an error if two values disagree.

     Warning
       Emits a warning if two values disagree.

     Require
       Emits an error when the specified value is not present
       or doesn't have the specified value. It is an error for
       two (or more) llvm.module.flags with the same ID to have
       the Require behavior but different values. There may be
       multiple Require flags per ID.

     Override
       Uses the specified value if the two values disagree. It
       is an error for two (or more) llvm.module.flags with the
       same ID to have the Override behavior but different
       values.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150300 91177308-0d34-0410-b5e6-96231b3b80d8
15 files changed:
include/llvm/Module.h
lib/Linker/LinkModules.cpp
lib/VMCore/Module.cpp
test/Linker/module-flags-1-a.ll [new file with mode: 0644]
test/Linker/module-flags-1-b.ll [new file with mode: 0644]
test/Linker/module-flags-2-a.ll [new file with mode: 0644]
test/Linker/module-flags-2-b.ll [new file with mode: 0644]
test/Linker/module-flags-3-a.ll [new file with mode: 0644]
test/Linker/module-flags-3-b.ll [new file with mode: 0644]
test/Linker/module-flags-4-a.ll [new file with mode: 0644]
test/Linker/module-flags-4-b.ll [new file with mode: 0644]
test/Linker/module-flags-5-a.ll [new file with mode: 0644]
test/Linker/module-flags-5-b.ll [new file with mode: 0644]
test/Linker/module-flags-6-a.ll [new file with mode: 0644]
test/Linker/module-flags-6-b.ll [new file with mode: 0644]