================
@@ -37,9 +37,11 @@ cond.end:                                         ; preds = 
%entry, %cond.true
 ; CHECK: testq
 ; CHECK: je
 ; CHECK: callq alloc
+; CHECK-NEXT: nop
----------------
sivadeilra wrote:

I went further with more precise optimization around NOP insertion.  We should 
only be inserting NOPs when a function has an EH personality function (and thus 
has IP2State tables).  No IP2State table mean no need to insert NOPs at all, 
even for SEH, right?  The `WinException::beginFunction` computes 
`shouldEmitPersonality`, so I used that value to control whether we do any NOP 
insertion.

Some tests now fail due to differences.  I noticed in 
`llvm\test\CodeGen\X86\win64_call_epi.ll` that `foo1` looks correct (and still 
passes), but `foo2` appears to be incorrect.  `foo2` does not have an EH 
personality function, but it checks that ` nop` is inserted after `callq`.  
After my changes (for using `shouldEmitPersonality`), the test for `foo2` fails.

What's the right thing to do here?  Should `foo2` be using `personality ptr 
@personality` and should its `call` be upgraded to `invoke`, or should `foo2` 
not expect to find a `nop`?

https://github.com/llvm/llvm-project/pull/144745
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to