conflict after upgrade resulting from collapsed type planes. The test now
checks to make sure llvm-upgrade produces appropriate warning messages.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32913 91177308-0d34-0410-b5e6-96231b3b80d8
no longer needed and the @(...) syntax has been dropped in favor of a
simple space separated list of attribute names.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32911 91177308-0d34-0410-b5e6-96231b3b80d8
Split this test case into three cases. globalredefinition.ll just tests
that a global can be forward referenced. globalredefinition2.ll tests
that llvm-upgrade will warn about renaming duplicate global variables.
globalredefinition3.ll tests that llvm-as will generate an error on
duplicate global variables. This last test is currently XFAIL because
the restriction is not implemented yet.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32910 91177308-0d34-0410-b5e6-96231b3b80d8
Global variable definitions with the same name and same type are no longer
valid so don't attempt to test for this "feature".
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32909 91177308-0d34-0410-b5e6-96231b3b80d8
1. Completely revise the type system so that types are handled as const
objects and not created multiple times, cloned, or otherwise copied.
This gets around memory issues, saves memory, and also emulates LLVM's
no-two-types-of-the-same-shape-created semantics.
2. Adjust the handling of global names. Basically, we cannot rename them
for a variety of reasons: linking, forward references, etc.
3. Detect global names that have name conflicts as the result of collapsed
type planes or redefinitions that llvm-as no longer accepts. These will
produce warnings on stderr and one of the globals will be renamed.
4. Rename ParserInternals.h as UpgradeInternals.h so it doesn't conflict
in the debugger with ParserInternals.h from lib/AsmParser.
5. Move the guts of the TypeInfo class into the grammar so we aren't
implementing large functions in a header file. This also helps with
debugging a bit.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32906 91177308-0d34-0410-b5e6-96231b3b80d8
1. The @ sign is no longer necessary.
2. We now support "function attributes" as parameter attribute 0.
3. Instead of locating the return type attributes after the type of a
function result, they are now located after the function header's
closing paranthesis and before any alignment or section options.
4. The way has been prepared for a new "noreturn" function attribute but
there is no support for recognizing it in the lexer nor doing anything
with it if it does get set.
5. The FunctionType::getParamAttrsText method now has support for
returning multiple attributes. This required a change in its interface.
I'm unhappy that this change leads to 6 new shift/reduce conflicts, but
in each case bison's decision to choose the shift is correct so there
shouldn't be any damage from these conflicts.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32904 91177308-0d34-0410-b5e6-96231b3b80d8
only that specific instructions regard their operands as signed and
unsigned not that the operands *are* signed or unsigned.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32874 91177308-0d34-0410-b5e6-96231b3b80d8