1552d872e5cdc883d9f8e76d8c67d3a82e3ece488Stephen Hines/*
2552d872e5cdc883d9f8e76d8c67d3a82e3ece488Stephen Hines * Copyright 2013, The Android Open Source Project
3552d872e5cdc883d9f8e76d8c67d3a82e3ece488Stephen Hines *
4552d872e5cdc883d9f8e76d8c67d3a82e3ece488Stephen Hines * Licensed under the Apache License, Version 2.0 (the "License");
5552d872e5cdc883d9f8e76d8c67d3a82e3ece488Stephen Hines * you may not use this file except in compliance with the License.
6552d872e5cdc883d9f8e76d8c67d3a82e3ece488Stephen Hines * You may obtain a copy of the License at
7552d872e5cdc883d9f8e76d8c67d3a82e3ece488Stephen Hines *
8552d872e5cdc883d9f8e76d8c67d3a82e3ece488Stephen Hines *     http://www.apache.org/licenses/LICENSE-2.0
9552d872e5cdc883d9f8e76d8c67d3a82e3ece488Stephen Hines *
10552d872e5cdc883d9f8e76d8c67d3a82e3ece488Stephen Hines * Unless required by applicable law or agreed to in writing, software
11552d872e5cdc883d9f8e76d8c67d3a82e3ece488Stephen Hines * distributed under the License is distributed on an "AS IS" BASIS,
12552d872e5cdc883d9f8e76d8c67d3a82e3ece488Stephen Hines * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13552d872e5cdc883d9f8e76d8c67d3a82e3ece488Stephen Hines * See the License for the specific language governing permissions and
14552d872e5cdc883d9f8e76d8c67d3a82e3ece488Stephen Hines * limitations under the License.
15552d872e5cdc883d9f8e76d8c67d3a82e3ece488Stephen Hines */
16552d872e5cdc883d9f8e76d8c67d3a82e3ece488Stephen Hines
1788cd94d5165bf8a266d3f3095946fc25bc4809afDavid Gross#include "strip_unknown_attributes_pass.h"
18552d872e5cdc883d9f8e76d8c67d3a82e3ece488Stephen Hines#include "strip_unknown_attributes.h"
19552d872e5cdc883d9f8e76d8c67d3a82e3ece488Stephen Hines
20552d872e5cdc883d9f8e76d8c67d3a82e3ece488Stephen Hinesnamespace slang {
21552d872e5cdc883d9f8e76d8c67d3a82e3ece488Stephen Hines
22552d872e5cdc883d9f8e76d8c67d3a82e3ece488Stephen HinesStripUnknownAttributes::StripUnknownAttributes() : ModulePass(ID) {
23552d872e5cdc883d9f8e76d8c67d3a82e3ece488Stephen Hines}
24552d872e5cdc883d9f8e76d8c67d3a82e3ece488Stephen Hines
25552d872e5cdc883d9f8e76d8c67d3a82e3ece488Stephen Hines
26552d872e5cdc883d9f8e76d8c67d3a82e3ece488Stephen Hinesbool StripUnknownAttributes::runOnFunction(llvm::Function &F) {
2788cd94d5165bf8a266d3f3095946fc25bc4809afDavid Gross  return stripUnknownAttributes(F);
28552d872e5cdc883d9f8e76d8c67d3a82e3ece488Stephen Hines}
29552d872e5cdc883d9f8e76d8c67d3a82e3ece488Stephen Hines
30552d872e5cdc883d9f8e76d8c67d3a82e3ece488Stephen Hines
31552d872e5cdc883d9f8e76d8c67d3a82e3ece488Stephen Hinesbool StripUnknownAttributes::runOnModule(llvm::Module &M) {
32552d872e5cdc883d9f8e76d8c67d3a82e3ece488Stephen Hines  bool Changed = false;
33552d872e5cdc883d9f8e76d8c67d3a82e3ece488Stephen Hines  for (llvm::Module::iterator I = M.begin(), E = M.end(); I != E; ++I) {
34552d872e5cdc883d9f8e76d8c67d3a82e3ece488Stephen Hines    Changed |= runOnFunction(*I);
35552d872e5cdc883d9f8e76d8c67d3a82e3ece488Stephen Hines  }
36552d872e5cdc883d9f8e76d8c67d3a82e3ece488Stephen Hines  return Changed;
37552d872e5cdc883d9f8e76d8c67d3a82e3ece488Stephen Hines}
38552d872e5cdc883d9f8e76d8c67d3a82e3ece488Stephen Hines
39552d872e5cdc883d9f8e76d8c67d3a82e3ece488Stephen Hines
40552d872e5cdc883d9f8e76d8c67d3a82e3ece488Stephen Hinesllvm::ModulePass * createStripUnknownAttributesPass() {
41552d872e5cdc883d9f8e76d8c67d3a82e3ece488Stephen Hines  return new StripUnknownAttributes();
42552d872e5cdc883d9f8e76d8c67d3a82e3ece488Stephen Hines}
43552d872e5cdc883d9f8e76d8c67d3a82e3ece488Stephen Hines
44552d872e5cdc883d9f8e76d8c67d3a82e3ece488Stephen Hines
45552d872e5cdc883d9f8e76d8c67d3a82e3ece488Stephen Hineschar StripUnknownAttributes::ID = 0;
46552d872e5cdc883d9f8e76d8c67d3a82e3ece488Stephen Hinesstatic llvm::RegisterPass<StripUnknownAttributes> RPSUA(
47552d872e5cdc883d9f8e76d8c67d3a82e3ece488Stephen Hines    "StripUnknownAttributes", "Strip Unknown Attributes Pass");
48552d872e5cdc883d9f8e76d8c67d3a82e3ece488Stephen Hines
49552d872e5cdc883d9f8e76d8c67d3a82e3ece488Stephen Hines}  // namespace slang
50