summaryrefslogtreecommitdiffstats
path: root/llvm/tools/llvm-upgrade/UpgradeParser.y
Commit message (Collapse)AuthorAgeFilesLines
...
* Drop CSRET CCAnton Korobeynikov2007-01-281-63/+11
| | | | llvm-svn: 33598
* For PR1137:Reid Spencer2007-01-281-10/+62
| | | | | | | | | | When a value is found to have the same name as another, try harder to disambiguate when its a type plane collapse issue and when it isn't. We traverse the type to see if it contains an integer. If it does not then we issue the error because it can't be resulting from integer type planes collapsing. Otherwise we just rename it, even if that's a bit of overkill. llvm-svn: 33594
* Make sure that an upgraded index is also inserted into the VIndicesReid Spencer2007-01-261-1/+3
| | | | | | | | | | otherwise it gets ignored. This fixes test/CodeGen/X86/2006-05-11-InstrSched.ll Thanks to Evan Cheng for noticing this. llvm-svn: 33546
* Ensure that gep_upgrade zext instructions we insert have unique names.Reid Spencer2007-01-261-1/+1
| | | | llvm-svn: 33544
* Remove extraneous ; to make some versions of bison happy.Reid Spencer2007-01-261-3/+3
| | | | llvm-svn: 33541
* Remove the SignedType class and other dead code. Improve comments.Reid Spencer2007-01-261-134/+4
| | | | llvm-svn: 33538
* For All These Bugs:Reid Spencer2007-01-261-1737/+2891
| | | | | | | | | | | | | | | | | | | | | | | | | | PR645 PR761 PR1082 PR1122 Completely rewrite llvm-upgrade. This should be its final design. Any future changes will use this same design. The changes involve the following: 1. Make this work very much like the 1.9 AsmParser 2. Retain old upgrades dating back to release 1.2 time frame. 3. Merge in some of the upgrades between 1.9 and 2.0 (e.g. icmp/fcmp). 4. Attach a Signedness value (Signless, Unsigned, Signed) to every type, Value, Constant, Instruction, and list of those things in the Parser. Use these to make signedness decisions for instruction upgrades. 5. Implement unique name upgrade for function values and global values. 6. Identify rename cases that might cause problems and warn about them. For example: renaming a global variable with external linkage. 7. Generate a 2.0 IR using VMCore. This is necessary for numerous reasons and has the advantage that it never goes out of date. 8. Use the AsmPrinter to make the output nice. 9. Clean up error and warning messages from 1.9 form. llvm-svn: 33531
* Fix a bunch of missing semicolon parse errors from bison.Jeff Cohen2007-01-211-3/+5
| | | | llvm-svn: 33426
* For PR1113:Reid Spencer2007-01-151-201/+204
| | | | | | | | | | | Increment the counter after the second use, not after the first use. This fixes PR1113. Also, rename some classes for simplicity and to more naturally be reminscient of LLVM 1.9. This in preparation for additional classes that will provide a scaled down model of the LLVM 1.9 IR. llvm-svn: 33226
* Reorganize things a bit in preparation for rewrite. Although this looksReid Spencer2007-01-151-333/+556
| | | | | | | | | | | | | | | like a lot, its really only two changes: 1. Move stuff that should be private to .y out of the .h file. 2. Make all semantic values pointers. This cleans up the silly destroy methods and changes them to delete. It also moves the TypeInfo and ValueInfo classes into the .y where we can modify them more readily because they have no clients any more. This shouldn't result in any functional changes in llvm-upgrade. llvm-svn: 33211
* Can't generate "bool" any more. Change to i1Reid Spencer2007-01-131-4/+4
| | | | llvm-svn: 33179
* Don't attempt to upgrade argument to va.start and va.end if there are none.Reid Spencer2007-01-131-5/+7
| | | | llvm-svn: 33171
* For PR1093:Reid Spencer2007-01-131-5/+34
| | | | | | | Implement upgrading of the varargs intrinsics. These must now have i8* arguments. This patch bitcasts arguments to i8* and fixes the prototypes. llvm-svn: 33163
* Remove support for upgrading NOT. The llvm-upgrade lexer didn't recognizeReid Spencer2007-01-121-6/+1
| | | | | | it either. NOT is just plain illegal now. llvm-svn: 33139
* Upgrade the llvm.isunordered intrinsics to "fcmp uno" instruction.Reid Spencer2007-01-071-14/+24
| | | | llvm-svn: 32986
* For PR1082:Reid Spencer2007-01-061-59/+118
| | | | | | | | Solve several related problems by making variable names more unique and dealing with recursive phi nodes. Unfortunately, this doesn't solve the main issue reported in the PR, but its a step in that direction. llvm-svn: 32953
* For PR1080:Reid Spencer2007-01-061-2/+2
| | | | | | | | Emit the correct syntax for icmp and fcmp constant expressions. The predicate goes outside the parentheses not inside. This was a change made in the assembler without the corresponding change made in llvm-upgrade. llvm-svn: 32942
* Major update of llvm-upgrade:Reid Spencer2007-01-051-118/+471
| | | | | | | | | | | | | | | | | | | 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. llvm-svn: 32906
* If we hit a parse error, emit something bad to the output stream. This ↵Chris Lattner2007-01-041-0/+2
| | | | | | | | | | ensures that llvm-upgrade < foo | llvm-as | llvm-dis will fail if llvm-upgrade fails. llvm-svn: 32879
* Finish implementation of variable renaming to handle collapsed type planesReid Spencer2007-01-031-35/+71
| | | | | | | | by correctly handling up references and enumerated types. Previously there was some confusion of these two. Thanks to Chris Lattner for demistifying llvm up references. llvm-svn: 32846
* Permit signed and unsigned integer constants to be used with either signedReid Spencer2007-01-021-1/+1
| | | | | | or unsigned integer types. llvm-svn: 32816
* For PR1070:Reid Spencer2007-01-021-283/+416
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Revise the upgrade parser to keep track of types more faithfully and use this information to resolve name conflicts resulting from collapsed type planes. The type planes have collapsed because the integer types are now signless so that uint and int became i32. Where two planes existed for uint and int, only i32 exists. Any variable names depending on the type planes to pmake the identifier unique would cause a conflict. This patch resolves that conflict for many but not all cases. Situations involving the integer types and pointers to them are handled by this patch. However, there are corner cases that are not handled well, such as: %t1 = type { uint, int } %t2 = type { int, uint } void %myfunc(%t1* one, %t2* two) { %var = load %t1* one %var = load %t2* two } In the scenario above, %t1 and %t2 are really the same type: { i32, i32 } Consequently attempting to name %var twice will yield a redefinition error when assembled. While this patch is sufficien to allow the llvm/test suite to pass, More work needs to be to complete the handling of these corner cases. llvm-svn: 32810
* For PR1070:Reid Spencer2007-01-011-2/+33
| | | | | | Remove useless bitcasts by commenting them out. llvm-svn: 32804
* For PR950:Reid Spencer2006-12-311-21/+17
| | | | | | | | | Don't attempt to parse both the old and new grammars. It is near impossible to get it right. Remove support for the new define keyword and don't attempt to insert parameter attributes because there isn't enough contextual information for it. llvm-svn: 32784
* For PR950:Reid Spencer2006-12-291-41/+63
| | | | | | | | | | | Fix several bugs and update for new assembly syntax. Changes made include: 1. Fixing rules for icmp/fcmp instructions to not require a closing paren at the end. This was a cut-and-paste error from a previous commit. 2. Changing things like Out << " " to Out << ' ' 3. Adding the "define" keyword for function definitions 4. Adding support for packed structures llvm-svn: 32771
* For PR950:Reid Spencer2006-12-231-16/+2
| | | | | | | | This patch removes the SetCC instructions and replaces them with the ICmp and FCmp instructions. The SetCondInst instruction has been removed and been replaced with ICmpInst and FCmpInst. llvm-svn: 32751
* Fix test/Regression/Assembler/2006-12-09-Cast-To-Bool.llReid Spencer2006-12-091-1/+1
| | | | | | Do not upgrade casts of bool to bool. llvm-svn: 32404
* When upgrading cast to bool to a setne, generate icmp ne instead.Reid Spencer2006-12-091-4/+10
| | | | llvm-svn: 32399
* Create an option to turn off generation of fcmp instructions while stillReid Spencer2006-12-071-0/+9
| | | | | | allowing integer setxx instructions to be converted to icmp. llvm-svn: 32302
* Fix build for older versios of bison.Jim Laskey2006-12-061-2/+2
| | | | llvm-svn: 32274
* Don't turn on SETCC upgrade yet!Reid Spencer2006-12-061-1/+1
| | | | llvm-svn: 32268
* Fix upgrade of setcc with bool operands.Reid Spencer2006-12-061-2/+2
| | | | llvm-svn: 32266
* For PR645:Reid Spencer2006-12-051-4/+13
| | | | | | | Keep track of global constant and variable definitions for eventual use in resolving conflicts between global and local symbol usage. llvm-svn: 32234
* Match the llvmAsmParser's handling of ICmp and FCmp instructions.Reid Spencer2006-12-031-7/+17
| | | | llvm-svn: 32153
* Add a needed #include.Reid Spencer2006-12-031-0/+1
| | | | llvm-svn: 32141
* Implement upgrade of setcc instruction to icmp/fcmp, but don't enable itReid Spencer2006-12-021-1/+52
| | | | | | yet. llvm-svn: 32139
* Support several new upgrades:Reid Spencer2006-12-021-30/+63
| | | | | | | | | | div -> fdiv/udiv/sdiv rem -> frem/urem/srem except -> unwind uninitialized -> external as well as tracking the element type of pointers, packed, and array. llvm-svn: 32127
* Implement the GEP upgrade for non-constant unsigned indicesReid Spencer2006-12-021-55/+84
| | | | llvm-svn: 32121
* Keep lists of values so they can be examined.Reid Spencer2006-12-021-19/+53
| | | | llvm-svn: 32120
* Add support for global types and type resolution. Fix several minorReid Spencer2006-12-021-58/+123
| | | | | | | formatting and spacing bugs. This is sufficient for llvm-upgrade to correctly upgrade all of llvm/test. llvm-svn: 32114
* Handle upgrade of fp -> ptr cast with fp -> int -> ptrReid Spencer2006-12-011-7/+41
| | | | llvm-svn: 32109
* Don't convert {} into []!Reid Spencer2006-12-011-2/+2
| | | | llvm-svn: 32106
* Allow the new cast instructions.Reid Spencer2006-12-011-7/+15
| | | | llvm-svn: 32104
* Upgrade shr to ashr and lshrReid Spencer2006-12-011-8/+14
| | | | llvm-svn: 32103
* Don't treat numeric (untyped) constants as a ConstInfo, just pass theReid Spencer2006-12-011-52/+47
| | | | | | string and let ConstVal add the type. llvm-svn: 32096
* First version of llvm-upgrade that can correctly upgrade all ofReid Spencer2006-12-011-9/+18
| | | | | | test/Feature llvm-svn: 32092
* valgrind clean version of llvm-upgradeReid Spencer2006-12-011-11/+10
| | | | llvm-svn: 32090
* First version of llvm-upgrade that can correctly upgrade a large testReid Spencer2006-12-011-218/+419
| | | | | | case. llvm-svn: 32089
* Allow llvm-upgrade to read from stdin. Configure the lexer for readingReid Spencer2006-11-301-11/+6
| | | | | | from C++ std::istream. llvm-svn: 32041
* Initial, non-functional, version of llvm-upgrade. This version just echosReid Spencer2006-11-301-0/+903
its input. Committed for safekeeping purposes. Don't use this yet. llvm-svn: 32030
OpenPOWER on IntegriCloud