summaryrefslogtreecommitdiffstats
path: root/clang/lib/CodeGen/CGStmt.cpp
Commit message (Collapse)AuthorAgeFilesLines
...
* Attempt to un-break the gdb buildbot.Adrian Prantl2013-05-031-3/+4
| | | | | | | | | | | | | - Use the debug location of the return expression for the cleanup code if the return expression is trivially evaluatable, regardless of the number of stop points in the function. - Ensure that any EH code in the cleanup still gets the line number of the closing } of the lexical scope. - Added a testcase with EH in the cleanup. rdar://problem/13442648 llvm-svn: 180982
* Move parsing of identifiers in MS-style inline assembly intoJohn McCall2013-05-031-4/+8
| | | | | | | | | | | | | | | | | | | | | the actual parser and support arbitrary id-expressions. We're actually basically set up to do arbitrary expressions here if we wanted to. Assembly operands permit things like A::x to be written regardless of language mode, which forces us to embellish the evaluation context logic somewhat. The logic here under template instantiation is incorrect; we need to preserve the fact that an expression was unevaluated. Of course, template instantiation in general is fishy here because we have no way of delaying semantic analysis in the MC parser. It's all just fishy. I've also fixed the serialization of MS asm statements. This commit depends on an LLVM commit. llvm-svn: 180976
* Ensure that the line table for functions with cleanups is sequential.Adrian Prantl2013-05-021-0/+6
| | | | | | | | | | | | | | | | If there is cleanup code, the cleanup code gets the debug location of the closing '}'. The subsequent ret IR-instruction does not get a debug location. The return _expression_ will get the debug location of the return statement. If the function contains only a single, simple return statement, the cleanup code may become the first breakpoint in the function. In this case we set the debug location for the cleanup code to the location of the return statement. rdar://problem/13442648 llvm-svn: 180932
* Standardize accesses to the TargetInfo in IR-gen.John McCall2013-04-161-10/+12
| | | | | | Patch by Stephen Lin! llvm-svn: 179638
* Implement CapturedStmt ASTTareq A. Siraj2013-04-161-1/+7
| | | | | | | | | | | | | | | CapturedStmt can be used to implement generic function outlining as described in http://lists.cs.uiuc.edu/pipermail/cfe-dev/2013-January/027540.html. CapturedStmt is not exposed to the C api. Serialization and template support are pending. Author: Wei Pan <wei.pan@intel.com> Differential Revision: http://llvm-reviews.chandlerc.com/D370 llvm-svn: 179615
* Remove useGlobalsForAutomaticVariables.Rafael Espindola2013-03-261-2/+1
| | | | | | It is unused since pic support went away. llvm-svn: 178055
* Make clang to mark static stack allocations with lifetime markers to enable ↵Nadav Rotem2013-03-231-4/+30
| | | | | | | | | a more aggressive stack coloring. Patch by John McCall with help by Shuxin Yang. rdar://13115369 llvm-svn: 177819
* Change hasAggregateLLVMType, which conflates complex andJohn McCall2013-03-071-13/+25
| | | | | | | | | | | | | | | aggregate types in a profoundly wrong way that has to be worked around in every call site, to getEvaluationKind, which classifies and distinguishes between all of these cases. Also, normalize the API for loading and storing complexes. I'm working on a larger patch and wanted to pull these changes out, but it would have be annoying to detangle them from each other. llvm-svn: 176656
* LLVM API changes.Peter Collingbourne2013-03-021-2/+1
| | | | llvm-svn: 176398
* PR14566: Debug Info: avoid top level lexical blocks in functionsDavid Blaikie2013-01-261-0/+6
| | | | | | | | | | | | | | | One of the gotchas (see changes to CodeGenFunction) was due to the fix in r139416 (for PR10829). This only worked previously because the top level lexical block would set the location to the end of the function, the debug location would be updated (as per r139416), the location would be set to the end of the function again (but that would no-op, since it was the same as the previous location), then the return instruction would be emitted using the debug location. Once the top level lexical block was no longer emitted, the end-of-function location change was causing the debug loc to be updated, regressing that bug. llvm-svn: 173593
* Rewrite #includes for llvm/Foo.h to llvm/IR/Foo.h as appropriate toChandler Carruth2013-01-021-3/+3
| | | | | | | | reflect the migration in r171366. Re-sort the #include lines to reflect the new paths. llvm-svn: 171369
* Rename llvm::Attributes to llvm::Attribute.Bill Wendling2012-12-201-2/+2
| | | | llvm-svn: 170722
* Revert r170500. It over-zealously converted *ALL* things named Attributes, ↵Bill Wendling2012-12-201-2/+2
| | | | | | which is wrong here. llvm-svn: 170721
* Rename the 'Attributes' class to 'Attribute'. It's going to represent a ↵Bill Wendling2012-12-191-2/+2
| | | | | | single attribute in the future. llvm-svn: 170500
* s/AttrListPtr/AttributeSet/g to better label what this class is going to be ↵Bill Wendling2012-12-071-1/+1
| | | | | | in the near future. llvm-svn: 169652
* Sort all of Clang's files under 'lib', and fix up the broken headersChandler Carruth2012-12-041-2/+2
| | | | | | | | | | | | | uncovered. This required manually correcting all of the incorrect main-module headers I could find, and running the new llvm/utils/sort_includes.py script over the files. I also manually added quite a few missing headers that were uncovered by shuffling the order or moving headers up to be main-module-headers. llvm-svn: 169237
* Handle '*' and '#' asm constraint modifiers.Ulrich Weigand2012-10-291-0/+4
| | | | llvm-svn: 166924
* Add missing safety check to an optimization for do-while loops. PR14191.Eli Friedman2012-10-261-0/+4
| | | | llvm-svn: 166832
* Use the Attributes::get method which takes an AttrVal value directly to ↵Bill Wendling2012-10-161-3/+2
| | | | | | simplify the code a bit. No functionality change. llvm-svn: 166010
* Move the Attributes::Builder outside of the Attributes class and into its ↵Bill Wendling2012-10-151-1/+1
| | | | | | own class named AttrBuilder. No functionality change. llvm-svn: 165961
* Use enum values instead of magic numbers for indexing into the attribute list.Bill Wendling2012-10-151-1/+2
| | | | llvm-svn: 165925
* Attributes RewriteBill Wendling2012-10-151-1/+1
| | | | | | | | Convert the uses of the Attributes class over to the new format. The Attributes::get method call now takes an LLVM context so that the attributes object can be uniquified and stored. llvm-svn: 165918
* Remove the final bits of Attributes being declared in the AttributeBill Wendling2012-10-101-1/+3
| | | | | | | namespace. Use the attribute's enum value instead. No functionality change intended. llvm-svn: 165611
* Move TargetData to DataLayout.Micah Villmow2012-10-081-4/+4
| | | | llvm-svn: 165395
* During jump-scope checking, build an ExprWithCleanups immediatelyJohn McCall2012-09-251-0/+12
| | | | | | | | | | | | into the enclosing scope; this is a more accurate model but is (I believe) unnecessary in my test case due to other flaws. However, one of those flaws is now intentional: blocks which appear in return statements can be trivially observed to not extend in lifetime past the return, and so we can allow a jump past them. Do the necessary magic in IR-generation to make this work. llvm-svn: 164589
* Update for r163231.Chad Rosier2012-09-051-2/+3
| | | | llvm-svn: 163232
* [ms-inline asm] Set the inline assembly dialect in CodeGen.Chad Rosier2012-09-041-1/+3
| | | | llvm-svn: 163178
* [ms-inline asm] Remove the Inline Asm Non-Standard Dialect attribute. ThisChad Rosier2012-09-041-4/+0
| | | | | | | implementation does not co-exist well with how the sideeffect and alignstack attributes are handled. llvm-svn: 163173
* Minor cleanup to improve code readability. No functional change intended.Chad Rosier2012-09-041-2/+2
| | | | llvm-svn: 163161
* Revert r163083 per chandlerc's request.Joao Matos2012-09-041-1/+0
| | | | llvm-svn: 163149
* Implemented parsing and AST support for the MS __leave exception statement. ↵Joao Matos2012-09-021-0/+1
| | | | | | Also a minor fix to __except printing in StmtPrinter.cpp. Thanks to Aaron Ballman for review. llvm-svn: 163083
* [ms-inline asm] Have MSAsmStmts use the generic EmitAsmStmt codegen function.Chad Rosier2012-08-281-40/+6
| | | | llvm-svn: 162796
* [ms-inline asm] Rename EmitGCCAsmStmt to EmitAsmStmt and have it accept Chad Rosier2012-08-281-5/+7
| | | | | | | | AsmStmts. This function is only used by GCCAsmStmts, however. Constraints need to be properly computed before MSAsmStmts can use EmitAsmStmt. No functional change intended. llvm-svn: 162776
* [ms-inline asm] Add virtual function, getClobber, that returns a StringRef.Chad Rosier2012-08-271-1/+1
| | | | | | More work towards unifying asm stmt codegen. llvm-svn: 162712
* [ms-inline asm] Rename getClobber to getClobberStringLiteral. No functionalChad Rosier2012-08-271-1/+1
| | | | | | change intended. llvm-svn: 162710
* [ms-inline asm] Rename GenerateAsmString to generateAsmString to conform withChad Rosier2012-08-271-1/+1
| | | | | | | coding standards. Also, add stub for MSAsmStmt class as part of unifying codegen logic for AsmStmts. llvm-svn: 162696
* [ms-inline asm] As part of a larger refactoring, rename AsmStmt to GCCAsmStmt.Chad Rosier2012-08-251-3/+3
| | | | | | No functional change intended. llvm-svn: 162632
* [ms-inline asm] Change the -fenable-experimental-ms-inline-asm option from a Chad Rosier2012-08-241-4/+0
| | | | | | | | | CodeGen option to a LangOpt option. In turn, hoist the guard into the parser so that we avoid the new (and fairly unstable) Sema/AST/CodeGen logic. This should restore the behavior of clang to that prior to r158325. <rdar://problem/12163681> llvm-svn: 162602
* Fix 80-column violation.Chad Rosier2012-08-241-1/+2
| | | | llvm-svn: 162575
* [ms-inline asm] Refactor code. No functional change intended.Chad Rosier2012-08-241-17/+2
| | | | llvm-svn: 162568
* [ms-inline asm] Remove an unused argument. This logic can now be reused by theChad Rosier2012-08-231-6/+5
| | | | | | ms-style inline asms. llvm-svn: 162463
* [ms-inline asm] Start sending non-simple inline asms to the AsmParser.Chad Rosier2012-08-221-2/+0
| | | | | | | The parser still can't handle all cases, so fall back to emitting a simple MSAsmStmt if we get into trouble. llvm-svn: 162382
* [ms-inline asm] Add support for clobbers in CodeGen.Chad Rosier2012-08-151-1/+23
| | | | | | | This is a reapplication of r161914 now that the scoping issue has been resolved in r161966. llvm-svn: 161967
* Revert this to try to bring the i386 bots back.Eric Christopher2012-08-151-23/+1
| | | | llvm-svn: 161931
* [ms-inline asm] Add support for clobbers in CodeGen.Chad Rosier2012-08-151-1/+23
| | | | llvm-svn: 161914
* [ms-inline asm] Use the new Inline Asm Non-Standard Dialect attribute.Chad Rosier2012-08-101-0/+1
| | | | llvm-svn: 161642
* [ms-inline asm] Add basic codegen support for simple asm stmts. Currently,Chad Rosier2012-08-081-0/+15
| | | | | | only machine specific clobbers are modeled. llvm-svn: 161524
* Change APInt to APSInt in one instance. Also change a call to operator==() toRichard Trieu2012-07-231-2/+2
| | | | | | APSInt::isSameValue() when comparing different sized APSInt's. llvm-svn: 160641
* Add the mechanics for -fms-inline-asm. No easy way to test at this time.Chad Rosier2012-07-201-0/+2
| | | | llvm-svn: 160580
* [ms-style asm] Change the fatal error to an extension warning. Apparently, thisChad Rosier2012-06-201-2/+1
| | | | | | | error was asserting on anything that included Windows.h. MS-style inline asm is still dropped, but at least now we're not completely silent about it. llvm-svn: 158833
OpenPOWER on IntegriCloud