mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-26 04:32:44 +01:00
5652971ecf
attribute and function argument attribute synthesizing and propagating. As with the other uses of this attribute, the goal remains a best-effort (no guarantees) attempt to not optimize the function or assume things about the function when optimizing. This is particularly useful for compiler testing, bisecting miscompiles, triaging things, etc. I was hitting specific issues using optnone to isolate test code from a test driver for my fuzz testing, and this is one step of fixing that. llvm-svn: 215538
25 lines
498 B
LLVM
25 lines
498 B
LLVM
; RUN: opt < %s -functionattrs -S | FileCheck %s
|
|
|
|
@x = global i32 0
|
|
|
|
define void @test_opt(i8* %p) {
|
|
; CHECK-LABEL: @test_opt
|
|
; CHECK: (i8* nocapture readnone %p) #0 {
|
|
ret void
|
|
}
|
|
|
|
define void @test_optnone(i8* %p) noinline optnone {
|
|
; CHECK-LABEL: @test_optnone
|
|
; CHECK: (i8* %p) #1 {
|
|
ret void
|
|
}
|
|
|
|
declare i8 @strlen(i8*) noinline optnone
|
|
; CHECK-LABEL: @strlen
|
|
; CHECK: (i8*) #1
|
|
|
|
; CHECK-LABEL: attributes #0
|
|
; CHECK: = { readnone }
|
|
; CHECK-LABEL: attributes #1
|
|
; CHECK: = { noinline optnone }
|