diff options
author | David Majnemer <david.majnemer@gmail.com> | 2015-01-11 09:13:56 +0000 |
---|---|---|
committer | David Majnemer <david.majnemer@gmail.com> | 2015-01-11 09:13:56 +0000 |
commit | f1fdf4a80cbca86eadeadc7212701d4231344d01 (patch) | |
tree | d7637ed056584050af5d652e9e65846670ba31f4 | |
parent | 14d4e7bdbf057f6cdcb1dfc8fa704606abf5cf5b (diff) | |
download | bcm5719-llvm-f1fdf4a80cbca86eadeadc7212701d4231344d01.tar.gz bcm5719-llvm-f1fdf4a80cbca86eadeadc7212701d4231344d01.zip |
CodeGen: Simplify consecutive '%' modifiers
LLVM the consecutive '%' modifiers are redundant, skip them.
llvm-svn: 225602
-rw-r--r-- | clang/lib/CodeGen/CGStmt.cpp | 5 | ||||
-rw-r--r-- | clang/test/CodeGen/asm.c | 7 |
2 files changed, 10 insertions, 2 deletions
diff --git a/clang/lib/CodeGen/CGStmt.cpp b/clang/lib/CodeGen/CGStmt.cpp index d910f2fb969..bd48227b15c 100644 --- a/clang/lib/CodeGen/CGStmt.cpp +++ b/clang/lib/CodeGen/CGStmt.cpp @@ -1660,8 +1660,9 @@ SimplifyConstraint(const char *Constraint, const TargetInfo &Target, Constraint++; break; case '&': - Result += '&'; - while (Constraint[1] && Constraint[1] == '&') + case '%': + Result += *Constraint; + while (Constraint[1] && Constraint[1] == *Constraint) Constraint++; break; case ',': diff --git a/clang/test/CodeGen/asm.c b/clang/test/CodeGen/asm.c index c64f83f7877..038d346e999 100644 --- a/clang/test/CodeGen/asm.c +++ b/clang/test/CodeGen/asm.c @@ -255,3 +255,10 @@ void t30(int len) { // CHECK: @t30 // CHECK: call void asm sideeffect "", "=*&rm,0,~{dirflag},~{fpsr},~{flags}" } + +void t31(int len) { + __asm__ volatile("" + : "+%%rm"(len), "+rm"(len)); + // CHECK: @t31 + // CHECK: call void asm sideeffect "", "=*%rm,=*rm,0,1,~{dirflag},~{fpsr},~{flags}" +} |