Fix PR3682 by just disabling a broken assertion. This check should be
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). llvm-svn: 66533
This commit is contained in:
		
							parent
							
								
									6dd0f9263d
								
							
						
					
					
						commit
						f85a938985
					
				| 
						 | 
					@ -707,8 +707,6 @@ static std::string ConvertAsmString(const AsmStmt& S, bool &Failed) {
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
  std::string Result;
 | 
					  std::string Result;
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
  unsigned NumOperands = S.getNumOutputs() + S.getNumInputs();
 | 
					 | 
				
			||||||
  
 | 
					 | 
				
			||||||
  while (1) {
 | 
					  while (1) {
 | 
				
			||||||
    // Done with the string?
 | 
					    // Done with the string?
 | 
				
			||||||
    if (StrStart == StrEnd)
 | 
					    if (StrStart == StrEnd)
 | 
				
			||||||
| 
						 | 
					@ -754,7 +752,8 @@ static std::string ConvertAsmString(const AsmStmt& S, bool &Failed) {
 | 
				
			||||||
      StrStart = End;
 | 
					      StrStart = End;
 | 
				
			||||||
      
 | 
					      
 | 
				
			||||||
      // FIXME: This should be caught during Sema.
 | 
					      // FIXME: This should be caught during Sema.
 | 
				
			||||||
      assert(N < NumOperands && "Operand number out of range!");
 | 
					      //unsigned NumOperands = S.getNumOutputs() + S.getNumInputs();
 | 
				
			||||||
 | 
					      //assert(N < NumOperands && "Operand number out of range!");
 | 
				
			||||||
      
 | 
					      
 | 
				
			||||||
      if (Modifier == '\0')
 | 
					      if (Modifier == '\0')
 | 
				
			||||||
        Result += '$' + llvm::utostr(N);
 | 
					        Result += '$' + llvm::utostr(N);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -28,7 +28,7 @@ void t6(void) {
 | 
				
			||||||
  __asm__ volatile("" : : "i" (t6));
 | 
					  __asm__ volatile("" : : "i" (t6));
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// RUN: grep "T7 NAMED: \$2" %t
 | 
					// RUN: grep "T7 NAMED: \$2" %t &&
 | 
				
			||||||
void t7(int a) {
 | 
					void t7(int a) {
 | 
				
			||||||
  __asm__ volatile("T7 NAMED: %[input]" : "+r"(a): [input] "i" (4));
 | 
					  __asm__ volatile("T7 NAMED: %[input]" : "+r"(a): [input] "i" (4));
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -37,3 +37,9 @@ void t7(int a) {
 | 
				
			||||||
void t8() {
 | 
					void t8() {
 | 
				
			||||||
  __asm__ volatile("T8 NAMED MODIFIER: %c[input]" :: [input] "i" (4));
 | 
					  __asm__ volatile("T8 NAMED MODIFIER: %c[input]" :: [input] "i" (4));
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// PR3682
 | 
				
			||||||
 | 
					unsigned t9(unsigned int a) {
 | 
				
			||||||
 | 
					  asm("bswap %0 %1" : "+r" (a));
 | 
				
			||||||
 | 
					  return a;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue