steplong added a comment.

In D126984#3574077 <https://reviews.llvm.org/D126984#3574077>, @aeubanks wrote:

> In D126984#3574046 <https://reviews.llvm.org/D126984#3574046>, @aaron.ballman 
> wrote:
>
>> In D126984#3571573 <https://reviews.llvm.org/D126984#3571573>, @aeubanks 
>> wrote:
>>
>>> IIRC in the past there was a strong preference to not have the pass manager 
>>> support this sort of thing
>>> if you want to support this, there should be an RFC for how the 
>>> optimization part of this will work as it may require invasive changes to 
>>> the LLVM pass manager
>>>
>>> (if this is purely a clang frontend thing then ignore me)
>>
>> Hmm, does the pass manager have to support anything here? The only Clang 
>> codegen changes are for emitting IR attributes that we already emitted based 
>> on command line flags/other attributes, so I had the impression this would 
>> not be invasive for the backend at all.
>
> if we're allowing individual functions to specify that they want the `-O1` 
> pipeline when everything else in the module should be compiled with `-O2`, 
> that's a huge change in the pass manager. but perhaps I'm misunderstanding 
> the point of this patch

That makes sense. The MSVC pragma allows 4 options, "stgy":

| Parameter | On                                                                
                                          | Off                                 
                                                   |
| --------- | 
-----------------------------------------------------------------------------------------------------------
 |                                                                              
          |
| g         | Deprecated                                                        
                                          | Deprecated                          
                                                   |
| s         | Add MinSize                                                       
                                          | Remove MinSize (I think this would 
be difficult to do if -Os is passed on the cmdline) |
| t         | Add -O2 (We can't support -O2 with this attribute so ignore)      
                                          | Add Optnone                         
                                                   |
| y         | Add frame-pointers (We can't support -f arguments with the 
attribute in this patch so we are ignoring this) | No frame-pointers (Same 
thing as on)                                                   |
|

For our use case, I think we only really see `#pragma optimize("", off)` and 
`#pragma optimize("", on)`, so I'm not opposed to abandoning this patch and 
just supporting the common use case for now. I think `#pragma optimize("", on)` 
would just mean do nothing and apply whatever is on the command line and 
`#pragma optimize("", off)` would mean add optnone to the functions below it


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D126984/new/

https://reviews.llvm.org/D126984

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to