aboutsummaryrefslogtreecommitdiff
path: root/lib/CodeGen/CGStmt.cpp
AgeCommit message (Collapse)Author
2009-05-01Don't use indirect memory destinations for inline asm. Fixes 6841383.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70523 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-26pull operands names "[foo]" into ConstraintInfo.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70136 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-26pull the constraint string into the ConstraintInfo structChris Lattner
instead of passing it around in addition to it. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70135 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-26change TargetInfo::ConstraintInfo to be a struct that containsChris Lattner
the enum along with some other data. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70114 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-13Minor simplification.Eli Friedman
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68992 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-01Fix a subtle bug where the cleanup scope entries had a dangling block referenceDaniel Dunbar
- <rdar://problem/6732143> Crash when generating @synchronize for zero-cost exception - Thanks to Anders for helping track down the problem. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68186 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-13introduce a new -fheinous-gnu-extensions flag that enables reallyChris Lattner
really horrible extensions that are disabled by default but that can be accepted by -fheinous-gnu-extensions (but which always emit a warning when enabled). As our first instance of this, implement PR3788/PR3794, which allows non-lvalues in inline asms in contexts where lvalues are required. bleh. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66910 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-10add plumbing to report diagnostics back through sema for malformed asmstrings.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66598 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-10move the asm string analysis code out of codegen into common Chris Lattner
code where Sema can get to it. No functionality change. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66596 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-10Fix PR3682 by just disabling a broken assertion. This check should beChris Lattner
done in sema, and is reflected by the existing PR3258. In the meantime, fix PR3682 by disabling a bogus assertion (which doesn't account for + operands). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66533 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-10reduce duplication of parsing code between %0 and %x0 andChris Lattner
add support for modifiers on named references, like %c[foo]. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66532 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-10move matching of named operands into AsmStmt class. At the sameChris Lattner
time handle + operands in operand counting, fixing asm.c:t7 to expand into $2 instead of $1. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66531 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-10reduce nesting, use memchr instead of explicit loop, eliminate aChris Lattner
temporary std::string to fix a fixme. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66530 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-10Expand %= into ${:uid} so that the code generator emits a unique ID for theChris Lattner
asm. This allows us to properly handle the case when an optimizer duplicates the asm, such as here: void bar() { int i; for (i = 0; i < 3; ++i) asm("foo %=" : : "r"(0)); } we now produce: _bar: xorl %eax, %eax ## InlineAsm Start foo 0 ## InlineAsm End ## InlineAsm Start foo 1 ## InlineAsm End ## InlineAsm Start foo 2 ## InlineAsm End ret instead of: _bar: xorl %eax, %eax ## InlineAsm Start foo 1 ## InlineAsm End ## InlineAsm Start foo 1 ## InlineAsm End ## InlineAsm Start foo 1 ## InlineAsm End ret This also fixes a fixme by eliminating a static. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66528 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-10add some helper methods to AsmStmt and add some comments.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66521 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-10slightly simplify some code, pull the 'is simple asm' case up inChris Lattner
ConvertAsmString and shrink it a bit. No functionality change. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66520 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-05if we die in IR generation of a compound statement, include Chris Lattner
it in the stack trace, giving us stuff like: Stack dump: 0. Program arguments: clang t.c -emit-llvm 1. <eof> parser at end of file 2. t.c:1:5: LLVM IR generation of declaration 'a' 3. t.c:1:9: LLVM IR generation of compound statement ('{}') 4. t.c:2:3: LLVM IR generation of compound statement ('{}') Abort git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66154 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-04add a special case for codegen that improves the case where we haveChris Lattner
multiple sequential cases to a) not create tons of fall-through basic blocks and b) not recurse deeply. This fixes codegen on 100K deep cases, and improves codegen on moderate cases from this: switch i32 %tmp, label %sw.epilog [ i32 1000, label %sw.bb i32 1001, label %sw.bb1 i32 1002, label %sw.bb2 i32 1003, label %sw.bb3 i32 1004, label %sw.bb4 ... sw.bb: ; preds = %entry br label %sw.bb1 sw.bb1: ; preds = %entry, %sw.bb br label %sw.bb2 sw.bb2: ; preds = %entry, %sw.bb1 br label %sw.bb3 sw.bb3: ; preds = %entry, %sw.bb2 br label %sw.bb4 to: switch i32 %tmp, label %sw.epilog [ i32 1000, label %sw.bb i32 1001, label %sw.bb i32 1002, label %sw.bb i32 1003, label %sw.bb i32 1004, label %sw.bb sw.bb: ;; many preds git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66015 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-02inline asm calls should be nounwind. Chris, please review.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65866 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-22Make sure to reset the DidCallStackSave variable before emitting a compound ↵Anders Carlsson
statement. Fixes PR3649. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65291 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-13Add CodeGen support for the nodebug attribute.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64445 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-10Handle the case where EmitBlock might be called multiple times for the same ↵Anders Carlsson
block. Fixes PR3536. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64252 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-10Remove the last remnants of the Obj-C EH stack code.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64205 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-10Start removing the old Obj-C EH stack now that the cleanup stack is used ↵Anders Carlsson
instead. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64203 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-09Replace a bunch of EmitBranch calls with EmitBranchThroughCleanup. No ↵Anders Carlsson
functionality change (yet). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64159 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-09Save and restore the DidCallStackSave variableAnders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64157 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-08When we're at the stack depth we want, there isn't anything to do.Mike Stump
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64095 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-08Wire up break and continue processing to the new stack depth adjuster.Mike Stump
If people could beat on it and let me know if there are any new semantics required by newer language standards or DRs or any little details I goofed on, I'd be happy to fix any issues found. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64079 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-08When emitting blocks, keep track of which cleanup scope they have. Minor ↵Anders Carlsson
fixes and cleanup. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64053 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-07Add support for emitting cleanup blocks. Make EmitCompoundStatement emit ↵Anders Carlsson
cleanup blocks if necessary git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64051 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-07Ensure we track all the stack depths for all break and continue pointsMike Stump
correctly. This should lay the ground work to throw the big switch and start code gening break and continue in the presense of vlas. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64046 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-07Format for 80-cols.Mike Stump
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64030 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-07Arrange to have the correct StackDepth for while statements.Mike Stump
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64021 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-07Fit into 80-col.Mike Stump
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64020 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-07Fixup goto codegen in and around VLAs.Mike Stump
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64014 91177308-0d34-0410-b5e6-96231b3b80d8
2009-01-27If an input constraint refers to an output constraint, it should have the ↵Anders Carlsson
same constraint info as the output constraint. Fixes PR3417 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63127 91177308-0d34-0410-b5e6-96231b3b80d8
2009-01-21silence a couple unused variable 'result' warnings.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62674 91177308-0d34-0410-b5e6-96231b3b80d8
2009-01-18CG support for inline asm constraints with symbolic names. Fixes PR3345Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62444 91177308-0d34-0410-b5e6-96231b3b80d8
2009-01-18Add sema support for symbolic names in inline asm statements.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62441 91177308-0d34-0410-b5e6-96231b3b80d8
2009-01-17Change TargetInfo::validateInputConstraint to take begin/end name iterators ↵Anders Carlsson
instead of the number of outputs. No functionality change. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62433 91177308-0d34-0410-b5e6-96231b3b80d8
2009-01-12Handle multi-value inputsAnders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62069 91177308-0d34-0410-b5e6-96231b3b80d8
2009-01-11More inline asm fixesAnders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62049 91177308-0d34-0410-b5e6-96231b3b80d8
2009-01-11Handle readwrite constraints correctlyAnders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62043 91177308-0d34-0410-b5e6-96231b3b80d8
2009-01-11Use a common function for emitting asm inputs and remove a FIXMEAnders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62041 91177308-0d34-0410-b5e6-96231b3b80d8
2008-12-21Fix for PR3246: an empty clobber list is the empty string, not a null Eli Friedman
string. That said, we should probably try and track down the correct clobber lists for the targets that don't have them (PPC, ARM, and Sparc), so that we can generate correct code. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61298 91177308-0d34-0410-b5e6-96231b3b80d8
2008-12-20Extend the unsupported error to include break and continue, and fix a Eli Friedman
warning by using an unsigned index. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61292 91177308-0d34-0410-b5e6-96231b3b80d8
2008-12-20Check the entire StackSaveValues stack for VLAs when dealing with goto and ↵Anders Carlsson
return statements. Noticed by Eli Friedman. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61289 91177308-0d34-0410-b5e6-96231b3b80d8
2008-12-20Add some ErrorUnsupported calls and turn on VLA codegen again.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61283 91177308-0d34-0410-b5e6-96231b3b80d8
2008-12-13Store the size of the EH stack inside each BreakContinue struct so we know ↵Anders Carlsson
when a break/continue won't cross a try block. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60998 91177308-0d34-0410-b5e6-96231b3b80d8
2008-12-12Work in preparation for VLAs. Make sure to restore the stack if necessary ↵Anders Carlsson
(Saving the stack isn't implemented right now :) git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60925 91177308-0d34-0410-b5e6-96231b3b80d8